caching

package
v0.3.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 20, 2020 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
const (
	RoomServerStateKeyNIDsCacheName       = "roomserver_statekey_nids"
	RoomServerStateKeyNIDsCacheMaxEntries = 1024
	RoomServerStateKeyNIDsCacheMutable    = false

	RoomServerEventTypeNIDsCacheName       = "roomserver_eventtype_nids"
	RoomServerEventTypeNIDsCacheMaxEntries = 64
	RoomServerEventTypeNIDsCacheMutable    = false

	RoomServerRoomNIDsCacheName       = "roomserver_room_nids"
	RoomServerRoomNIDsCacheMaxEntries = 1024
	RoomServerRoomNIDsCacheMutable    = false

	RoomServerRoomIDsCacheName       = "roomserver_room_ids"
	RoomServerRoomIDsCacheMaxEntries = 1024
	RoomServerRoomIDsCacheMutable    = false
)
View Source
const (
	RoomVersionCacheName       = "room_versions"
	RoomVersionCacheMaxEntries = 1024
	RoomVersionCacheMutable    = false
)
View Source
const (
	ServerKeyCacheName       = "server_key"
	ServerKeyCacheMaxEntries = 4096
	ServerKeyCacheMutable    = true
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Cache

type Cache interface {
	Get(key string) (value interface{}, ok bool)
	Set(key string, value interface{})
	Unset(key string)
}

Cache is the interface that an implementation must satisfy.

type Caches

type Caches struct {
	RoomVersions            Cache // RoomVersionCache
	ServerKeys              Cache // ServerKeyCache
	RoomServerStateKeyNIDs  Cache // RoomServerNIDsCache
	RoomServerEventTypeNIDs Cache // RoomServerNIDsCache
	RoomServerRoomNIDs      Cache // RoomServerNIDsCache
	RoomServerRoomIDs       Cache // RoomServerNIDsCache
}

Caches contains a set of references to caches. They may be different implementations as long as they satisfy the Cache interface.

func NewInMemoryLRUCache

func NewInMemoryLRUCache(enablePrometheus bool) (*Caches, error)

func (Caches) GetRoomServerEventTypeNID

func (c Caches) GetRoomServerEventTypeNID(eventType string) (types.EventTypeNID, bool)

func (Caches) GetRoomServerRoomID

func (c Caches) GetRoomServerRoomID(roomNID types.RoomNID) (string, bool)

func (Caches) GetRoomServerRoomNID

func (c Caches) GetRoomServerRoomNID(roomID string) (types.RoomNID, bool)

func (Caches) GetRoomServerStateKeyNID

func (c Caches) GetRoomServerStateKeyNID(stateKey string) (types.EventStateKeyNID, bool)

func (Caches) GetRoomVersion

func (c Caches) GetRoomVersion(roomID string) (gomatrixserverlib.RoomVersion, bool)

func (Caches) StoreRoomServerEventTypeNID

func (c Caches) StoreRoomServerEventTypeNID(eventType string, nid types.EventTypeNID)

func (Caches) StoreRoomServerRoomID

func (c Caches) StoreRoomServerRoomID(roomNID types.RoomNID, roomID string)

func (Caches) StoreRoomServerRoomNID

func (c Caches) StoreRoomServerRoomNID(roomID string, roomNID types.RoomNID)

func (Caches) StoreRoomServerStateKeyNID

func (c Caches) StoreRoomServerStateKeyNID(stateKey string, nid types.EventStateKeyNID)

func (Caches) StoreRoomVersion

func (c Caches) StoreRoomVersion(roomID string, roomVersion gomatrixserverlib.RoomVersion)

func (Caches) StoreServerKey

type InMemoryLRUCachePartition

type InMemoryLRUCachePartition struct {
	// contains filtered or unexported fields
}

func NewInMemoryLRUCachePartition

func NewInMemoryLRUCachePartition(name string, mutable bool, maxEntries int, enablePrometheus bool) (*InMemoryLRUCachePartition, error)

func (*InMemoryLRUCachePartition) Get

func (c *InMemoryLRUCachePartition) Get(key string) (value interface{}, ok bool)

func (*InMemoryLRUCachePartition) Set

func (c *InMemoryLRUCachePartition) Set(key string, value interface{})

func (*InMemoryLRUCachePartition) Unset

func (c *InMemoryLRUCachePartition) Unset(key string)

type RoomServerCaches

type RoomServerCaches interface {
	RoomServerNIDsCache
	RoomVersionCache
}

type RoomServerNIDsCache

type RoomServerNIDsCache interface {
	GetRoomServerStateKeyNID(stateKey string) (types.EventStateKeyNID, bool)
	StoreRoomServerStateKeyNID(stateKey string, nid types.EventStateKeyNID)

	GetRoomServerEventTypeNID(eventType string) (types.EventTypeNID, bool)
	StoreRoomServerEventTypeNID(eventType string, nid types.EventTypeNID)

	GetRoomServerRoomNID(roomID string) (types.RoomNID, bool)
	StoreRoomServerRoomNID(roomID string, nid types.RoomNID)

	GetRoomServerRoomID(roomNID types.RoomNID) (string, bool)
	StoreRoomServerRoomID(roomNID types.RoomNID, roomID string)
}

RoomServerNIDsCache contains the subset of functions needed for a roomserver NID cache.

type RoomVersionCache

type RoomVersionCache interface {
	GetRoomVersion(roomID string) (roomVersion gomatrixserverlib.RoomVersion, ok bool)
	StoreRoomVersion(roomID string, roomVersion gomatrixserverlib.RoomVersion)
}

RoomVersionsCache contains the subset of functions needed for a room version cache.

type ServerKeyCache

type ServerKeyCache interface {
	// request -> timestamp is emulating gomatrixserverlib.FetchKeys:
	// https://github.com/matrix-org/gomatrixserverlib/blob/f69539c86ea55d1e2cc76fd8e944e2d82d30397c/keyring.go#L95
	// The timestamp should be the timestamp of the event that is being
	// verified. We will not return keys from the cache that are not valid
	// at this timestamp.
	GetServerKey(request gomatrixserverlib.PublicKeyLookupRequest, timestamp gomatrixserverlib.Timestamp) (response gomatrixserverlib.PublicKeyLookupResult, ok bool)

	// request -> result is emulating gomatrixserverlib.StoreKeys:
	// https://github.com/matrix-org/gomatrixserverlib/blob/f69539c86ea55d1e2cc76fd8e944e2d82d30397c/keyring.go#L112
	StoreServerKey(request gomatrixserverlib.PublicKeyLookupRequest, response gomatrixserverlib.PublicKeyLookupResult)
}

ServerKeyCache contains the subset of functions needed for a server key cache.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL