summaryrefslogtreecommitdiff
path: root/wsp.go
diff options
context:
space:
mode:
Diffstat (limited to 'wsp.go')
-rw-r--r--wsp.go15
1 files changed, 12 insertions, 3 deletions
diff --git a/wsp.go b/wsp.go
index 125608b..2fab9fb 100644
--- a/wsp.go
+++ b/wsp.go
@@ -80,8 +80,7 @@ func makeReportError(ctx context.Context, conn *websocket.Conn) reportErrorT {
}
}
-func propagateSelectedUpdate(courseID int) {
- course := courses[courseID]
+func propagateSelectedUpdate(course *courseT) {
course.Usems.Range(func(key, value interface{}) bool {
_ = key
usem, ok := value.(*usemT)
@@ -98,7 +97,17 @@ func sendSelectedUpdate(
conn *websocket.Conn,
courseID int,
) error {
- course := courses[courseID]
+ _course, ok := courses.Load(courseID)
+ if !ok {
+ return fmt.Errorf("%w: %d", errNoSuchCourse, courseID)
+ }
+ course, ok := _course.(*courseT)
+ if !ok {
+ panic("courses map has non-\"*courseT\" items")
+ }
+ if course == nil {
+ return fmt.Errorf("%w: %d", errNoSuchCourse, courseID)
+ }
selected := atomic.LoadUint32(&course.Selected)
err := writeText(ctx, conn, fmt.Sprintf("M %d %d", courseID, selected))
if err != nil {