mirror of
https://github.com/matrix-org/dendrite
synced 2024-12-13 23:02:46 +00:00
ad07b169b8
This PR changes a few things: - It pulls out the creation of several NIDs from the `StoreEvent` function to make the functions more reusable - Uses more caching when using those NIDs to avoid DB round trips
38 lines
1.4 KiB
Go
38 lines
1.4 KiB
Go
package caching
|
|
|
|
import "github.com/matrix-org/dendrite/roomserver/types"
|
|
|
|
// EventStateKeyCache contains the subset of functions needed for
|
|
// a room event state key cache.
|
|
type EventStateKeyCache interface {
|
|
GetEventStateKey(eventStateKeyNID types.EventStateKeyNID) (string, bool)
|
|
StoreEventStateKey(eventStateKeyNID types.EventStateKeyNID, eventStateKey string)
|
|
GetEventStateKeyNID(eventStateKey string) (types.EventStateKeyNID, bool)
|
|
}
|
|
|
|
func (c Caches) GetEventStateKey(eventStateKeyNID types.EventStateKeyNID) (string, bool) {
|
|
return c.RoomServerStateKeys.Get(eventStateKeyNID)
|
|
}
|
|
|
|
func (c Caches) StoreEventStateKey(eventStateKeyNID types.EventStateKeyNID, eventStateKey string) {
|
|
c.RoomServerStateKeys.Set(eventStateKeyNID, eventStateKey)
|
|
c.RoomServerStateKeyNIDs.Set(eventStateKey, eventStateKeyNID)
|
|
}
|
|
|
|
func (c Caches) GetEventStateKeyNID(eventStateKey string) (types.EventStateKeyNID, bool) {
|
|
return c.RoomServerStateKeyNIDs.Get(eventStateKey)
|
|
}
|
|
|
|
type EventTypeCache interface {
|
|
GetEventTypeKey(eventType string) (types.EventTypeNID, bool)
|
|
StoreEventTypeKey(eventTypeNID types.EventTypeNID, eventType string)
|
|
}
|
|
|
|
func (c Caches) StoreEventTypeKey(eventTypeNID types.EventTypeNID, eventType string) {
|
|
c.RoomServerEventTypeNIDs.Set(eventType, eventTypeNID)
|
|
c.RoomServerEventTypes.Set(eventTypeNID, eventType)
|
|
}
|
|
|
|
func (c Caches) GetEventTypeKey(eventType string) (types.EventTypeNID, bool) {
|
|
return c.RoomServerEventTypeNIDs.Get(eventType)
|
|
}
|