diff options
author | Neil Alexander <neilalexander@users.noreply.github.com> | 2020-06-05 16:42:01 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-05 16:42:01 +0100 |
commit | e7b19d2c70be49f3c995a9bfd9dd93ce767d960f (patch) | |
tree | 0ff8734c896530843537c4c58421964cf89f020d /internal/caching/cache_roomversions.go | |
parent | 76ff47c0522e03eabd72140bf62e1d0d1d1029e0 (diff) |
More flexible caching (#1101)
Diffstat (limited to 'internal/caching/cache_roomversions.go')
-rw-r--r-- | internal/caching/cache_roomversions.go | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/internal/caching/cache_roomversions.go b/internal/caching/cache_roomversions.go new file mode 100644 index 00000000..0b46d3d4 --- /dev/null +++ b/internal/caching/cache_roomversions.go @@ -0,0 +1,30 @@ +package caching + +import "github.com/matrix-org/gomatrixserverlib" + +const ( + RoomVersionCacheName = "room_versions" + RoomVersionCacheMaxEntries = 1024 + RoomVersionCacheMutable = false +) + +// RoomVersionsCache contains the subset of functions needed for +// a room version cache. +type RoomVersionCache interface { + GetRoomVersion(roomID string) (roomVersion gomatrixserverlib.RoomVersion, ok bool) + StoreRoomVersion(roomID string, roomVersion gomatrixserverlib.RoomVersion) +} + +func (c Caches) GetRoomVersion(roomID string) (gomatrixserverlib.RoomVersion, bool) { + val, found := c.RoomVersions.Get(roomID) + if found && val != nil { + if roomVersion, ok := val.(gomatrixserverlib.RoomVersion); ok { + return roomVersion, true + } + } + return "", false +} + +func (c Caches) StoreRoomVersion(roomID string, roomVersion gomatrixserverlib.RoomVersion) { + c.RoomVersions.Set(roomID, roomVersion) +} |