blob: 26d48660414009f56e1ae2561658faa8d691cd96 [file] [log] [blame]
Serge Bazanski717aad42021-07-11 16:03:43 +00001package main
2
3import (
4 "context"
5 "time"
6
7 "code.hackerspace.pl/hscloud/hswaw/site/calendar"
8 "github.com/golang/glog"
9)
10
11func (s *service) eventsWorker(ctx context.Context) {
12 get := func() {
13 events, err := calendar.GetUpcomingEvents(ctx, time.Now())
14 if err != nil {
15 glog.Errorf("Geting events failed: %v", err)
16 return
17 }
18
19 s.eventsMu.Lock()
20 s.events = events
21 s.eventsMu.Unlock()
22 }
23 // Perform initial fetch.
24 get()
25
26 // .. and update very minute.
27 t := time.NewTicker(time.Minute)
28 defer t.Stop()
29
30 for {
31 select {
32 case <-ctx.Done():
33 return
34 case <-t.C:
35 get()
36 }
37 }
38}
39
40func (s *service) getEvents() []*calendar.UpcomingEvent {
41 s.eventsMu.RLock()
42 events := s.events
43 s.eventsMu.RUnlock()
44 return events
45}