diff options
Diffstat (limited to 'src/hub/src/spreadspace.org/sfive/s5srv.go')
-rw-r--r-- | src/hub/src/spreadspace.org/sfive/s5srv.go | 27 |
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 } |