From 7aa64716964292d86b98286c135e684a8c710f70 Mon Sep 17 00:00:00 2001 From: Peter Stuifzand Date: Mon, 10 Dec 2018 19:39:34 +0100 Subject: [PATCH] Cleanup (and re-enable stats) --- cmd/hubserver/main.go | 83 ++++++++++++++++++++++++------------------- 1 file changed, 46 insertions(+), 37 deletions(-) diff --git a/cmd/hubserver/main.go b/cmd/hubserver/main.go index 982194a..4b9aed7 100644 --- a/cmd/hubserver/main.go +++ b/cmd/hubserver/main.go @@ -70,12 +70,12 @@ func (handler *subscriptionHandler) handlePublish(w http.ResponseWriter, r *http return err } - // handler.incStat(fmt.Sprintf("publish.%s", topic)) + handler.incStat("published") if subs, e := handler.Subscribers[topic]; e { for _, sub := range subs { - // handler.incStat(fmt.Sprintf("publish.post.%s.%s", topic, sub.Callback)) + handler.incStat("publish.post") log.Printf("publish: creating post to %s\n", sub.Callback) postReq, err := http.NewRequest("POST", sub.Callback, strings.NewReader(string(feedContent))) if err != nil { @@ -257,23 +257,27 @@ func (handler *subscriptionHandler) addSubscriberCallback(topic string, subscrib } func (handler *subscriptionHandler) incStat(name string) { - // if v, e := handler.Stats[name]; e { - // handler.Stats[name] = Stat{LastUpdate: time.Now(), Updates: v.Updates + 1} - // } else { - // handler.Stats[name] = Stat{LastUpdate: time.Now(), Updates: 1} - // } - // handler.saveStats() + handler.LockStats.Lock() + defer handler.LockStats.Unlock() + + if v, e := handler.Stats[name]; e { + handler.Stats[name] = Stat{LastUpdate: time.Now(), Updates: v.Updates + 1} + } else { + handler.Stats[name] = Stat{LastUpdate: time.Now(), Updates: 1} + } + + handler.saveStats() } func (handler *subscriptionHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { if r.Method == http.MethodGet { - fmt.Fprintln(w, "WebSub hub") + _, _ = fmt.Fprintln(w, "WebSub hub") if r.URL.Query().Get("debug") == "1" { - // handler.incStat("http.index.debug") + handler.incStat("http.index.debug") enc := json.NewEncoder(w) enc.SetIndent("", " ") - enc.Encode(handler.Subscribers) - //enc.Encode(handler.Stats) + _ = enc.Encode(handler.Subscribers) + _ = enc.Encode(handler.Stats) } return } @@ -292,14 +296,14 @@ func (handler *subscriptionHandler) ServeHTTP(w http.ResponseWriter, r *http.Req mode := r.Form.Get("hub.mode") if mode == "subscribe" { - handler.handleSubscription(w, r) + err = handler.handleSubscription(w, r) return } else if mode == "unsubscribe" { - handler.handleUnsubscription(w, r) + err = handler.handleUnsubscription(w, r) return } else if mode == "publish" { log.Println("hub.mode=publish received") - handler.handlePublish(w, r) + err = handler.handlePublish(w, r) return } else { http.Error(w, "Unknown hub.mode", 400) @@ -308,6 +312,9 @@ func (handler *subscriptionHandler) ServeHTTP(w http.ResponseWriter, r *http.Req } func (handler *subscriptionHandler) loadStats() error { + handler.LockStats.Lock() + defer handler.LockStats.Unlock() + file, err := os.Open("./stats.json") if err != nil { if os.IsNotExist(err) { @@ -321,10 +328,25 @@ func (handler *subscriptionHandler) loadStats() error { return err } -func (handler *subscriptionHandler) loadSubscriptions() error { +func (handler *subscriptionHandler) saveStats() error { handler.LockStats.Lock() defer handler.LockStats.Unlock() + file, err := os.Create("./stats.json") + if err != nil { + return err + } + defer file.Close() + dec := json.NewEncoder(file) + dec.SetIndent("", " ") + err = dec.Encode(&handler.Stats) + return err +} + +func (handler *subscriptionHandler) loadSubscriptions() error { + handler.LockSubs.Lock() + defer handler.LockSubs.Unlock() + file, err := os.Open("./subscription.json") if err != nil { if os.IsNotExist(err) { @@ -338,27 +360,6 @@ func (handler *subscriptionHandler) loadSubscriptions() error { return err } -func (handler *subscriptionHandler) load() error { - err := handler.loadSubscriptions() - if err != nil { - return err - } - return nil //handler.loadStats() -} - -func (handler *subscriptionHandler) saveStats() error { - handler.LockStats.Lock() - defer handler.LockStats.Unlock() - file, err := os.Create("./stats.json") - if err != nil { - return err - } - defer file.Close() - dec := json.NewEncoder(file) - dec.SetIndent("", " ") - err = dec.Encode(&handler.Stats) - return err -} func (handler *subscriptionHandler) saveSubscriptions() error { handler.LockSubs.Lock() @@ -375,6 +376,14 @@ func (handler *subscriptionHandler) saveSubscriptions() error { return err } +func (handler *subscriptionHandler) load() error { + err := handler.loadSubscriptions() + if err != nil { + return err + } + return handler.loadStats() +} + func (handler *subscriptionHandler) save() error { handler.saveSubscriptions() return handler.saveStats()