via

Simple pubsub server inspired by https://patchbay.pub/
git clone https://git.ce9e.org/via.git

commit
5e9a49518602130a829eb5ad0dc30d3081c763fa
parent
377b516fa93e782ebcf990418c6ff3a1a632744e
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2020-03-25 05:36
refactor: rm getTopic

because we actually want different things to happen

Diffstat

M via.go 21 ++++++++++++---------

1 files changed, 12 insertions, 9 deletions


diff --git a/via.go b/via.go

@@ -26,7 +26,7 @@ var mux = &sync.RWMutex{}
   26    26 var topics = make(map[string]Topic)
   27    27 var verbose = false
   28    28 
   29    -1 func getTopic(key string) Topic {
   -1    29 func pushChannel(key string, ch chan []byte) {
   30    30 	mux.RLock()
   31    31 	topic, ok := topics[key]
   32    32 	mux.RUnlock()
@@ -40,19 +40,15 @@ func getTopic(key string) Topic {
   40    40 		mux.Unlock()
   41    41 	}
   42    42 
   43    -1 	return topic
   44    -1 }
   45    -1 
   46    -1 func pushChannel(key string, ch chan []byte) {
   47    -1 	topic := getTopic(key)
   48    -1 
   49    43 	topic.Lock()
   50    44 	topic.channels[ch] = true
   51    45 	topic.Unlock()
   52    46 }
   53    47 
   54    48 func popChannel(key string, ch chan []byte) {
   55    -1 	topic := getTopic(key)
   -1    49 	mux.RLock()
   -1    50 	topic := topics[key]
   -1    51 	mux.RUnlock()
   56    52 
   57    53 	topic.Lock()
   58    54 	delete(topic.channels, ch)
@@ -76,7 +72,14 @@ func post(w http.ResponseWriter, r *http.Request) {
   76    72 		return
   77    73 	}
   78    74 
   79    -1 	topic := getTopic(r.URL.Path)
   -1    75 	mux.RLock()
   -1    76 	topic, ok := topics[key]
   -1    77 	mux.RUnlock()
   -1    78 
   -1    79 	if !ok {
   -1    80 		return
   -1    81 	}
   -1    82 
   80    83 	topic.RLock()
   81    84 	defer topic.RUnlock()
   82    85