Initial QSfera import
This commit is contained in:
+43
@@ -0,0 +1,43 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package sse
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
// EventLog holds all of previous events
|
||||
type EventLog []*Event
|
||||
|
||||
// Add event to eventlog
|
||||
func (e *EventLog) Add(ev *Event) {
|
||||
if !ev.hasContent() {
|
||||
return
|
||||
}
|
||||
|
||||
ev.ID = []byte(e.currentindex())
|
||||
ev.timestamp = time.Now()
|
||||
*e = append(*e, ev)
|
||||
}
|
||||
|
||||
// Clear events from eventlog
|
||||
func (e *EventLog) Clear() {
|
||||
*e = nil
|
||||
}
|
||||
|
||||
// Replay events to a subscriber
|
||||
func (e *EventLog) Replay(s *Subscriber) {
|
||||
for i := 0; i < len(*e); i++ {
|
||||
id, _ := strconv.Atoi(string((*e)[i].ID))
|
||||
if id >= s.eventid {
|
||||
s.connection <- (*e)[i]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (e *EventLog) currentindex() string {
|
||||
return strconv.Itoa(len(*e))
|
||||
}
|
||||
Reference in New Issue
Block a user