caching

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Aug 24, 2021 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const (
	FederationEventCacheName       = "federation_event"
	FederationEventCacheMaxEntries = 256
	FederationEventCacheMutable    = true // to allow use of Unset only
)
View Source
const (
	RoomInfoCacheName       = "roominfo"
	RoomInfoCacheMaxEntries = 1024
	RoomInfoCacheMutable    = true
)
View Source
const (
	RoomServerStateKeyNIDsCacheName       = "roomserver_statekey_nids"
	RoomServerStateKeyNIDsCacheMaxEntries = 1024
	RoomServerStateKeyNIDsCacheMutable    = false

	RoomServerEventTypeNIDsCacheName       = "roomserver_eventtype_nids"
	RoomServerEventTypeNIDsCacheMaxEntries = 64
	RoomServerEventTypeNIDsCacheMutable    = 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
	RoomInfos               Cache // RoomInfoCache
	FederationEvents        Cache // FederationEventsCache
}

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) EvictFederationSenderQueuedEDU added in v0.3.3

func (c Caches) EvictFederationSenderQueuedEDU(eventNID int64)

func (Caches) EvictFederationSenderQueuedPDU added in v0.3.3

func (c Caches) EvictFederationSenderQueuedPDU(eventNID int64)

func (Caches) GetFederationSenderQueuedEDU added in v0.3.3

func (c Caches) GetFederationSenderQueuedEDU(eventNID int64) (*gomatrixserverlib.EDU, bool)

func (Caches) GetFederationSenderQueuedPDU added in v0.3.3

func (c Caches) GetFederationSenderQueuedPDU(eventNID int64) (*gomatrixserverlib.HeaderedEvent, bool)

func (Caches) GetRoomInfo added in v0.3.4

func (c Caches) GetRoomInfo(roomID string) (types.RoomInfo, bool)

GetRoomInfo must only be called from the roomserver only. It is not safe for use from other components.

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) GetRoomServerStateKeyNID

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

func (Caches) GetRoomVersion

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

func (Caches) StoreFederationSenderQueuedEDU added in v0.3.3

func (c Caches) StoreFederationSenderQueuedEDU(eventNID int64, event *gomatrixserverlib.EDU)

func (Caches) StoreFederationSenderQueuedPDU added in v0.3.3

func (c Caches) StoreFederationSenderQueuedPDU(eventNID int64, event *gomatrixserverlib.HeaderedEvent)

func (Caches) StoreRoomInfo added in v0.3.4

func (c Caches) StoreRoomInfo(roomID string, roomInfo types.RoomInfo)

StoreRoomInfo must only be called from the roomserver only. It is not safe for use from other components.

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) 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 FederationSenderCache added in v0.3.3

type FederationSenderCache interface {
	GetFederationSenderQueuedPDU(eventNID int64) (event *gomatrixserverlib.HeaderedEvent, ok bool)
	StoreFederationSenderQueuedPDU(eventNID int64, event *gomatrixserverlib.HeaderedEvent)
	EvictFederationSenderQueuedPDU(eventNID int64)

	GetFederationSenderQueuedEDU(eventNID int64) (event *gomatrixserverlib.EDU, ok bool)
	StoreFederationSenderQueuedEDU(eventNID int64, event *gomatrixserverlib.EDU)
	EvictFederationSenderQueuedEDU(eventNID int64)
}

FederationSenderCache contains the subset of functions needed for a federation event cache.

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 RoomInfoCache added in v0.3.4

type RoomInfoCache interface {
	GetRoomInfo(roomID string) (roomInfo types.RoomInfo, ok bool)
	StoreRoomInfo(roomID string, roomInfo types.RoomInfo)
}

RoomInfosCache contains the subset of functions needed for a room Info cache. It must only be used from the roomserver only It is not safe for use from other components.

type RoomServerCaches

type RoomServerCaches interface {
	RoomServerNIDsCache
	RoomVersionCache
	RoomInfoCache
}

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)

	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