aboutsummaryrefslogtreecommitdiff
path: root/internal/caching/cache_roomversions.go
diff options
context:
space:
mode:
authorNeil Alexander <neilalexander@users.noreply.github.com>2020-06-05 16:42:01 +0100
committerGitHub <noreply@github.com>2020-06-05 16:42:01 +0100
commite7b19d2c70be49f3c995a9bfd9dd93ce767d960f (patch)
tree0ff8734c896530843537c4c58421964cf89f020d /internal/caching/cache_roomversions.go
parent76ff47c0522e03eabd72140bf62e1d0d1d1029e0 (diff)
More flexible caching (#1101)
Diffstat (limited to 'internal/caching/cache_roomversions.go')
-rw-r--r--internal/caching/cache_roomversions.go30
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)
+}