Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Implement course selection started/stopped states | Runxi Yu | 2024-10-10 | 1 | -0/+41 |
| | | | | Implements: https://todo.sr.ht/~runxiyu/cca/13 | ||||
* | wsc.go: Check newCtx.Done() when entering other event cases | Runxi Yu | 2024-10-10 | 1 | -12/+25 |
| | | | | | | | | | | We select the context done channel when entering other cases too (see below) because we need to make sure the context cancel works even if both the cancel signal and another event arrive while processing a select cycle. It's a bit verbose and looks repetitive but is technically more correct than code without it. | ||||
* | {courses,wsc}.go: Atomic 64-bit alignment | Runxi Yu | 2024-10-09 | 1 | -1/+1 |
| | |||||
* | wsc.go: Use sync.Map for cancelPool to reduce lock contention | Runxi Yu | 2024-10-09 | 1 | -21/+10 |
| | |||||
* | *.go: Update comments | Runxi Yu | 2024-10-09 | 1 | -0/+1 |
| | |||||
* | *.go: Use sync.Map instead of map[int]*courseT for courses | Runxi Yu | 2024-10-09 | 1 | -15/+28 |
| | | | | I'm not sure whether this is actually better than locking. | ||||
* | {courses,wsc,wsp}.go: Usems should be sync.Map | Runxi Yu | 2024-10-09 | 1 | -10/+2 |
| | | | | | This is a classic few-reads, many-writes situation where a sync.Map would lead to substantially less lock contention. | ||||
* | {courses,wsc,wsm}.go: map[courseGroupT](bool->struct{}) | Runxi Yu | 2024-10-08 | 1 | -1/+1 |
| | | | | | This makes it use slightly less memory. Approximately courseGroupT bits per connection! | ||||
* | *.go: Further wrap errors | Runxi Yu | 2024-10-08 | 1 | -3/+7 |
| | |||||
* | Reapply "{config,wsc}.go, cca.scfg.example: Dynamic course update delay" | Runxi Yu | 2024-10-07 | 1 | -1/+11 |
| | | | | This reverts commit 831040c3d7dbc116a25848786bc5ab83fef6149b. | ||||
* | Revert "{config,wsc}.go, cca.scfg.example: Dynamic course update delay" | Runxi Yu | 2024-10-07 | 1 | -11/+1 |
| | | | | This reverts commit de3f0b9e7003e4521f5ea866134e77ff859ab99b. | ||||
* | wsc.go: Fix race condition with usemCount atomics | Runxi Yu | 2024-10-07 | 1 | -1/+6 |
| | | | | Atomics must be read atomically via atomic.LoadT | ||||
* | *.go: Limit to approximately 80 characters per line | Runxi Yu | 2024-10-06 | 1 | -10/+57 |
| | |||||
* | {config,wsc}.go, cca.scfg.example: Dynamic course update delay | Runxi Yu | 2024-10-06 | 1 | -1/+6 |
| | |||||
* | {courses,wsc,wsm,wsp}.go: Send course number immediately on user interaction | Runxi Yu | 2024-10-06 | 1 | -9/+2 |
| | |||||
* | *: Overhaul structure again and embed everything | Runxi Yu | 2024-10-06 | 1 | -0/+266 |
| | | | | | | | | - Remove sub-Makefiles; recursive make is annoying - Just use one top-level Makefile that builds everything - Embed templates and minified static resources into the binary - Embed all compiled documentation into the binary and serve - Embed all source into the binary and serve | ||||
* | *.go: Move to backend | Runxi Yu | 2024-10-05 | 1 | -266/+0 |
| | | | | And adjust Makefiles, admin handbook, and lint.sh accordingly. | ||||
* | {,u}sem.go, ws*.go: Restructure files | Runxi Yu | 2024-10-05 | 1 | -0/+266 |