diff options
author | Wim <wim@42.be> | 2022-03-20 01:43:26 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-20 01:43:26 +0100 |
commit | 17da95b094e4bb433e5fe240fa42067d94d908c1 (patch) | |
tree | 50abef4f2d92c1088d3a47c659bbc977a94f96b1 /vendor/github.com/matterbridge/gomatrix/store.go | |
parent | c5e49eec96a8b03786d679afa35c58952d0269a7 (diff) | |
download | matterbridge-msglm-17da95b094e4bb433e5fe240fa42067d94d908c1.tar.gz matterbridge-msglm-17da95b094e4bb433e5fe240fa42067d94d908c1.tar.bz2 matterbridge-msglm-17da95b094e4bb433e5fe240fa42067d94d908c1.zip |
Remove go replace by fork (matrix) (#1771)
Diffstat (limited to 'vendor/github.com/matterbridge/gomatrix/store.go')
-rw-r--r-- | vendor/github.com/matterbridge/gomatrix/store.go | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/vendor/github.com/matterbridge/gomatrix/store.go b/vendor/github.com/matterbridge/gomatrix/store.go new file mode 100644 index 00000000..6dc687e5 --- /dev/null +++ b/vendor/github.com/matterbridge/gomatrix/store.go @@ -0,0 +1,65 @@ +package gomatrix + +// Storer is an interface which must be satisfied to store client data. +// +// You can either write a struct which persists this data to disk, or you can use the +// provided "InMemoryStore" which just keeps data around in-memory which is lost on +// restarts. +type Storer interface { + SaveFilterID(userID, filterID string) + LoadFilterID(userID string) string + SaveNextBatch(userID, nextBatchToken string) + LoadNextBatch(userID string) string + SaveRoom(room *Room) + LoadRoom(roomID string) *Room +} + +// InMemoryStore implements the Storer interface. +// +// Everything is persisted in-memory as maps. It is not safe to load/save filter IDs +// or next batch tokens on any goroutine other than the syncing goroutine: the one +// which called Client.Sync(). +type InMemoryStore struct { + Filters map[string]string + NextBatch map[string]string + Rooms map[string]*Room +} + +// SaveFilterID to memory. +func (s *InMemoryStore) SaveFilterID(userID, filterID string) { + s.Filters[userID] = filterID +} + +// LoadFilterID from memory. +func (s *InMemoryStore) LoadFilterID(userID string) string { + return s.Filters[userID] +} + +// SaveNextBatch to memory. +func (s *InMemoryStore) SaveNextBatch(userID, nextBatchToken string) { + s.NextBatch[userID] = nextBatchToken +} + +// LoadNextBatch from memory. +func (s *InMemoryStore) LoadNextBatch(userID string) string { + return s.NextBatch[userID] +} + +// SaveRoom to memory. +func (s *InMemoryStore) SaveRoom(room *Room) { + s.Rooms[room.ID] = room +} + +// LoadRoom from memory. +func (s *InMemoryStore) LoadRoom(roomID string) *Room { + return s.Rooms[roomID] +} + +// NewInMemoryStore constructs a new InMemoryStore. +func NewInMemoryStore() *InMemoryStore { + return &InMemoryStore{ + Filters: make(map[string]string), + NextBatch: make(map[string]string), + Rooms: make(map[string]*Room), + } +} |