summaryrefslogtreecommitdiff
path: root/src/hub/src/spreadspace.org/sfive/s5srv.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/hub/src/spreadspace.org/sfive/s5srv.go')
-rw-r--r--src/hub/src/spreadspace.org/sfive/s5srv.go27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/hub/src/spreadspace.org/sfive/s5srv.go b/src/hub/src/spreadspace.org/sfive/s5srv.go
index fd76f1b..dace0a5 100644
--- a/src/hub/src/spreadspace.org/sfive/s5srv.go
+++ b/src/hub/src/spreadspace.org/sfive/s5srv.go
@@ -41,6 +41,15 @@ type getHubIdToken struct {
response chan getHubIdResult
}
+type getLastUpdateIdResult struct {
+ id int
+ err error
+}
+
+type getLastUpdateIdToken struct {
+ response chan getLastUpdateIdResult
+}
+
type StatsSinkServer struct {
store sqliteStore
quit chan bool
@@ -51,6 +60,7 @@ type StatsSinkServer struct {
getUpdatesAfterChan chan getUpdatesAfterToken
getUpdatesChan chan getUpdatesToken
getHubIdChan chan getHubIdToken
+ getLastUpdateIdChan chan getLastUpdateIdToken
}
func (self StatsSinkServer) appendActor() {
@@ -92,6 +102,13 @@ func (self StatsSinkServer) appendActor() {
case token := <-self.getHubIdChan:
storeId, err := self.store.GetStoreId()
token.response <- getHubIdResult{storeId, err}
+ case token := <-self.getLastUpdateIdChan:
+ lastUpdateId, err := self.store.GetLastUpdateId()
+ if(lastUpdateId != nil) {
+ token.response <- getLastUpdateIdResult{*lastUpdateId, err}
+ } else {
+ token.response <- getLastUpdateIdResult{0, err}
+ }
}
}
}
@@ -132,6 +149,14 @@ func (self StatsSinkServer) getHubIdInvoke() (string, error) {
return res.id, res.err
}
+func (self StatsSinkServer) getLastUpdateIdInvoke() (int, error) {
+ token := getLastUpdateIdToken{response: make(chan getLastUpdateIdResult, 1)}
+ defer close(token.response)
+ self.getLastUpdateIdChan <- token
+ res := <-token.response
+ return res.id, res.err
+}
+
func (self StatsSinkServer) Close() {
self.quit <- true
<-self.done
@@ -143,6 +168,7 @@ func (self StatsSinkServer) Close() {
close(self.getUpdatesAfterChan)
close(self.getUpdatesChan)
close(self.getHubIdChan)
+ close(self.getLastUpdateIdChan)
self.store.Close()
}
@@ -162,6 +188,7 @@ func NewServer(mysql bool, dbPath string) (server *StatsSinkServer, err error) {
server.getUpdatesAfterChan = make(chan getUpdatesAfterToken, 1)
server.getUpdatesChan = make(chan getUpdatesToken, 3)
server.getHubIdChan = make(chan getHubIdToken, 1)
+ server.getLastUpdateIdChan = make(chan getLastUpdateIdToken, 1)
go server.appendActor()
return
}