36 lines
753 B
Go
36 lines
753 B
Go
package main
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/ThreeDotsLabs/watermill-routing-example/server/common"
|
|
)
|
|
|
|
type storage struct {
|
|
lock *sync.Mutex
|
|
receivedMessages map[string][]common.MessageReceived
|
|
}
|
|
|
|
func (s *storage) Append(message common.MessageReceived) {
|
|
s.lock.Lock()
|
|
defer s.lock.Unlock()
|
|
|
|
for k, v := range s.receivedMessages {
|
|
s.receivedMessages[k] = append(v, message)
|
|
}
|
|
}
|
|
|
|
func (s *storage) PopAll(key string) []common.MessageReceived {
|
|
s.lock.Lock()
|
|
defer s.lock.Unlock()
|
|
|
|
if _, ok := s.receivedMessages[key]; !ok {
|
|
s.receivedMessages[key] = []common.MessageReceived{}
|
|
return []common.MessageReceived{}
|
|
}
|
|
|
|
messages := s.receivedMessages[key]
|
|
s.receivedMessages[key] = []common.MessageReceived{}
|
|
return messages
|
|
}
|