aboutsummaryrefslogtreecommitdiff
path: root/internal/caching/cache_roomversions.go
diff options
context:
space:
mode:
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)
+}