summaryrefslogtreecommitdiff
path: root/timers.go
diff options
context:
space:
mode:
Diffstat (limited to 'timers.go')
-rw-r--r--timers.go38
1 files changed, 38 insertions, 0 deletions
diff --git a/timers.go b/timers.go
new file mode 100644
index 000000000..3a1efa103
--- /dev/null
+++ b/timers.go
@@ -0,0 +1,38 @@
+package main
+
+import (
+ "github.com/golang/protobuf/proto"
+ "time"
+)
+
+func InitTimers() {
+ Sub("timers", func(buf []byte) []byte {
+ msg := &Msg{}
+ check(proto.Unmarshal(buf, msg))
+ switch msg.Payload.(type) {
+ case *Msg_TimerStart:
+ payload := msg.GetTimerStart()
+ return HandleTimerStart(payload.Id, payload.Interval, payload.Duration)
+ default:
+ panic("[timers] Unexpected message " + string(buf))
+ }
+ })
+}
+
+func HandleTimerStart(id int32, interval bool, duration int32) []byte {
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ time.Sleep(time.Duration(duration) * time.Millisecond)
+ payload, err := proto.Marshal(&Msg{
+ Payload: &Msg_TimerReady{
+ TimerReady: &TimerReadyMsg{
+ Id: id,
+ },
+ },
+ })
+ check(err)
+ Pub("timers", payload)
+ }()
+ return nil
+}