"encoding/base64"
"errors"
"fmt"
+ "gerrit.o-ran-sc.org/r/ric-plt/sdlgo/internal/sdlgoredis"
"hash/crc32"
"io"
"reflect"
//SdlInstance where namespace can be defined only at SdlInstance instance creation
//time.
type SyncStorage struct {
- eventSeparator string
- mutex sync.Mutex
- tmp []byte
- db *Database
+ mutex sync.Mutex
+ tmp []byte
+ db *Database
}
//NewSyncStorage creates a new sdl instance.
func newSyncStorage(db *Database) *SyncStorage {
return &SyncStorage{
- eventSeparator: "___",
- db: db,
+ db: db,
}
}
//events received from different channels, callbacks are called in series one by one.
func (s *SyncStorage) SubscribeChannel(ns string, cb func(string, ...string), channels ...string) error {
nsPrefix := getNsPrefix(ns)
- s.getDbBackend(ns).SubscribeChannelDB(cb, nsPrefix, s.eventSeparator, s.setNamespaceToChannels(nsPrefix, channels...)...)
- return nil
+ return s.getDbBackend(ns).SubscribeChannelDB(cb, s.setNamespaceToChannels(nsPrefix, channels...)...)
}
//UnsubscribeChannel removes subscription from one or several channels under given
//namespace.
func (s *SyncStorage) UnsubscribeChannel(ns string, channels ...string) error {
nsPrefix := getNsPrefix(ns)
- s.getDbBackend(ns).UnsubscribeChannelDB(s.setNamespaceToChannels(nsPrefix, channels...)...)
- return nil
+ return s.getDbBackend(ns).UnsubscribeChannelDB(s.setNamespaceToChannels(nsPrefix, channels...)...)
}
//Close connection to backend database.
}
for i, v := range channelsAndEvents {
if i%2 != 0 {
- if strings.Contains(v, s.eventSeparator) {
- return fmt.Errorf("%s: event %s contains illegal substring (\"%s\")", cmd, v, s.eventSeparator)
+ if strings.Contains(v, sdlgoredis.EventSeparator) {
+ return fmt.Errorf("%s: event %s contains illegal substring (\"%s\")", cmd, v, sdlgoredis.EventSeparator)
}
}
}
}
_, exists := channelEventMap[v]
if exists {
- channelEventMap[v] = channelEventMap[v] + s.eventSeparator + channelsAndEvents[i+1]
+ channelEventMap[v] = channelEventMap[v] + sdlgoredis.EventSeparator + channelsAndEvents[i+1]
} else {
channelEventMap[v] = channelsAndEvents[i+1]
}
}
func getNsPrefix(ns string) string {
- return "{" + ns + "},"
+ return "{" + ns + "}" + sdlgoredis.NsSeparator
}
type iDatabase interface {
- SubscribeChannelDB(cb func(string, ...string), channelPrefix, eventSeparator string, channels ...string)
- UnsubscribeChannelDB(channels ...string)
+ SubscribeChannelDB(cb func(string, ...string), channels ...string) error
+ UnsubscribeChannelDB(channels ...string) error
MSet(pairs ...interface{}) error
MSetMPub(channelsAndEvents []string, pairs ...interface{}) error
MGet(keys []string) ([]interface{}, error)