diff options
-rw-r--r-- | src/hub/src/spreadspace.org/sfive/s5srv.go | 23 | ||||
-rw-r--r-- | src/hub/src/spreadspace.org/sfive/s5srvForward.go | 3 |
2 files changed, 25 insertions, 1 deletions
diff --git a/src/hub/src/spreadspace.org/sfive/s5srv.go b/src/hub/src/spreadspace.org/sfive/s5srv.go index 3bfccbe..fd76f1b 100644 --- a/src/hub/src/spreadspace.org/sfive/s5srv.go +++ b/src/hub/src/spreadspace.org/sfive/s5srv.go @@ -32,6 +32,15 @@ type getUpdatesToken struct { response chan getUpdatesResult } +type getHubIdResult struct { + id string + err error +} + +type getHubIdToken struct { + response chan getHubIdResult +} + type StatsSinkServer struct { store sqliteStore quit chan bool @@ -41,6 +50,7 @@ type StatsSinkServer struct { getStatsChan chan queryStatsToken getUpdatesAfterChan chan getUpdatesAfterToken getUpdatesChan chan getUpdatesToken + getHubIdChan chan getHubIdToken } func (self StatsSinkServer) appendActor() { @@ -79,6 +89,9 @@ func (self StatsSinkServer) appendActor() { case token := <-self.getUpdatesChan: values, err := self.store.GetUpdates(token.filter) token.response <- getUpdatesResult{values, err} + case token := <-self.getHubIdChan: + storeId, err := self.store.GetStoreId() + token.response <- getHubIdResult{storeId, err} } } } @@ -111,6 +124,14 @@ func (self StatsSinkServer) getStatsInvoke(filter *StatsFilter) (StatsResult, er return res.stats, res.err } +func (self StatsSinkServer) getHubIdInvoke() (string, error) { + token := getHubIdToken{response: make(chan getHubIdResult, 1)} + defer close(token.response) + self.getHubIdChan <- token + res := <-token.response + return res.id, res.err +} + func (self StatsSinkServer) Close() { self.quit <- true <-self.done @@ -121,6 +142,7 @@ func (self StatsSinkServer) Close() { close(self.getStatsChan) close(self.getUpdatesAfterChan) close(self.getUpdatesChan) + close(self.getHubIdChan) self.store.Close() } @@ -139,6 +161,7 @@ func NewServer(mysql bool, dbPath string) (server *StatsSinkServer, err error) { server.getStatsChan = make(chan queryStatsToken, 5) server.getUpdatesAfterChan = make(chan getUpdatesAfterToken, 1) server.getUpdatesChan = make(chan getUpdatesToken, 3) + server.getHubIdChan = make(chan getHubIdToken, 1) go server.appendActor() return } diff --git a/src/hub/src/spreadspace.org/sfive/s5srvForward.go b/src/hub/src/spreadspace.org/sfive/s5srvForward.go index 2dddf60..49de873 100644 --- a/src/hub/src/spreadspace.org/sfive/s5srvForward.go +++ b/src/hub/src/spreadspace.org/sfive/s5srvForward.go @@ -21,7 +21,8 @@ func findMaxId(values []StatisticsData) int { } func (self StatsSinkServer) getLastUpdate(baseurl string, client *http.Client) (latestId int, storeId string, err error) { - storeId, err = self.store.GetStoreId() + storeId, err = self.getHubIdInvoke() + if err != nil { s5l.Printf("fwd: failed to get own hubid: %v\n", err) return |