Documentation ¶
Index ¶
- Constants
- type Cache
- type Caches
- func (c Caches) EvictFederationQueuedEDU(eventNID int64)
- func (c Caches) EvictFederationQueuedPDU(eventNID int64)
- func (c Caches) GetEventStateKey(eventStateKeyNID types.EventStateKeyNID) (string, bool)
- func (c Caches) GetEventStateKeyNID(eventStateKey string) (types.EventStateKeyNID, bool)
- func (c Caches) GetEventTypeKey(eventType string) (types.EventTypeNID, bool)
- func (c Caches) GetFederationQueuedEDU(eventNID int64) (*gomatrixserverlib.EDU, bool)
- func (c Caches) GetFederationQueuedPDU(eventNID int64) (*types.HeaderedEvent, bool)
- func (c Caches) GetRoomHierarchy(roomID string) (r fclient.RoomHierarchyResponse, ok bool)
- func (c Caches) GetRoomServerEvent(eventNID types.EventNID) (*types.HeaderedEvent, bool)
- func (c Caches) GetRoomServerRoomID(roomNID types.RoomNID) (string, bool)
- func (c Caches) GetRoomServerRoomNID(roomID string) (types.RoomNID, bool)
- func (c Caches) GetRoomVersion(roomID string) (gomatrixserverlib.RoomVersion, bool)
- func (c Caches) GetServerKey(request gomatrixserverlib.PublicKeyLookupRequest, timestamp spec.Timestamp) (gomatrixserverlib.PublicKeyLookupResult, bool)
- func (c Caches) InvalidateLazyLoadedUser(device *userapi.Device, roomID, userID string)
- func (c Caches) InvalidateRoomServerEvent(eventNID types.EventNID)
- func (c Caches) IsLazyLoadedUserCached(device *userapi.Device, roomID, userID string) (string, bool)
- func (c Caches) StoreEventStateKey(eventStateKeyNID types.EventStateKeyNID, eventStateKey string)
- func (c Caches) StoreEventTypeKey(eventTypeNID types.EventTypeNID, eventType string)
- func (c Caches) StoreFederationQueuedEDU(eventNID int64, event *gomatrixserverlib.EDU)
- func (c Caches) StoreFederationQueuedPDU(eventNID int64, event *types.HeaderedEvent)
- func (c Caches) StoreLazyLoadedUser(device *userapi.Device, roomID, userID, eventID string)
- func (c Caches) StoreRoomHierarchy(roomID string, r fclient.RoomHierarchyResponse)
- func (c Caches) StoreRoomServerEvent(eventNID types.EventNID, event *types.HeaderedEvent)
- func (c Caches) StoreRoomServerRoomID(roomNID types.RoomNID, roomID string)
- func (c Caches) StoreRoomVersion(roomID string, roomVersion gomatrixserverlib.RoomVersion)
- func (c Caches) StoreServerKey(request gomatrixserverlib.PublicKeyLookupRequest, ...)
- type EDUCache
- func (t *EDUCache) AddTypingUser(userID, roomID string, expire *time.Time) int64
- func (t *EDUCache) GetLatestSyncPosition() int64
- func (t *EDUCache) GetTypingUsers(roomID string) []string
- func (t *EDUCache) GetTypingUsersIfUpdatedAfter(roomID string, position int64) (users []string, updated bool)
- func (t *EDUCache) RemoveUser(userID, roomID string) int64
- func (t *EDUCache) SetTimeoutCallback(fn TimeoutCallbackFn)
- type EventStateKeyCache
- type EventTypeCache
- type FederationCache
- type LazyLoadCache
- type RistrettoCachePartition
- type RistrettoCostedCachePartition
- type RoomHierarchyCache
- type RoomServerCaches
- type RoomServerEventsCache
- type RoomServerNIDsCache
- type RoomVersionCache
- type ServerKeyCache
- type TimeoutCallbackFn
Constants ¶
const ( DisableMetrics = false EnableMetrics = true )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Cache ¶
type Cache[K keyable, T any] interface { Get(key K) (value T, ok bool) Set(key K, value T) Unset(key K) }
Cache is the interface that an implementation must satisfy.
type Caches ¶
type Caches struct { RoomVersions Cache[string, gomatrixserverlib.RoomVersion] // room ID -> room version ServerKeys Cache[string, gomatrixserverlib.PublicKeyLookupResult] // server name -> server keys RoomServerRoomNIDs Cache[string, types.RoomNID] // room ID -> room NID RoomServerRoomIDs Cache[types.RoomNID, string] // room NID -> room ID RoomServerEvents Cache[int64, *types.HeaderedEvent] // event NID -> event RoomServerStateKeys Cache[types.EventStateKeyNID, string] // eventStateKey NID -> event state key RoomServerStateKeyNIDs Cache[string, types.EventStateKeyNID] // event state key -> eventStateKey NID RoomServerEventTypeNIDs Cache[string, types.EventTypeNID] // eventType -> eventType NID RoomServerEventTypes Cache[types.EventTypeNID, string] // eventType NID -> eventType FederationPDUs Cache[int64, *types.HeaderedEvent] // queue NID -> PDU FederationEDUs Cache[int64, *gomatrixserverlib.EDU] // queue NID -> EDU RoomHierarchies Cache[string, fclient.RoomHierarchyResponse] // room ID -> space response LazyLoading Cache[lazyLoadingCacheKey, string] // composite key -> event ID }
Caches contains a set of references to caches. They may be different implementations as long as they satisfy the Cache interface.
func NewRistrettoCache ¶ added in v0.9.0
func (Caches) EvictFederationQueuedEDU ¶ added in v0.6.0
func (Caches) EvictFederationQueuedPDU ¶ added in v0.6.0
func (Caches) GetEventStateKey ¶ added in v0.9.0
func (c Caches) GetEventStateKey(eventStateKeyNID types.EventStateKeyNID) (string, bool)
func (Caches) GetEventStateKeyNID ¶ added in v0.12.0
func (c Caches) GetEventStateKeyNID(eventStateKey string) (types.EventStateKeyNID, bool)
func (Caches) GetEventTypeKey ¶ added in v0.12.0
func (c Caches) GetEventTypeKey(eventType string) (types.EventTypeNID, bool)
func (Caches) GetFederationQueuedEDU ¶ added in v0.6.0
func (c Caches) GetFederationQueuedEDU(eventNID int64) (*gomatrixserverlib.EDU, bool)
func (Caches) GetFederationQueuedPDU ¶ added in v0.6.0
func (c Caches) GetFederationQueuedPDU(eventNID int64) (*types.HeaderedEvent, bool)
func (Caches) GetRoomHierarchy ¶ added in v0.13.2
func (c Caches) GetRoomHierarchy(roomID string) (r fclient.RoomHierarchyResponse, ok bool)
func (Caches) GetRoomServerEvent ¶ added in v0.9.0
func (Caches) GetRoomServerRoomID ¶
func (Caches) GetRoomServerRoomNID ¶
func (Caches) GetRoomVersion ¶
func (c Caches) GetRoomVersion(roomID string) (gomatrixserverlib.RoomVersion, bool)
func (Caches) GetServerKey ¶
func (c Caches) GetServerKey( request gomatrixserverlib.PublicKeyLookupRequest, timestamp spec.Timestamp, ) (gomatrixserverlib.PublicKeyLookupResult, bool)
func (Caches) InvalidateLazyLoadedUser ¶ added in v0.9.2
func (Caches) InvalidateRoomServerEvent ¶ added in v0.12.0
func (Caches) IsLazyLoadedUserCached ¶ added in v0.8.3
func (Caches) StoreEventStateKey ¶ added in v0.9.0
func (c Caches) StoreEventStateKey(eventStateKeyNID types.EventStateKeyNID, eventStateKey string)
func (Caches) StoreEventTypeKey ¶ added in v0.12.0
func (c Caches) StoreEventTypeKey(eventTypeNID types.EventTypeNID, eventType string)
func (Caches) StoreFederationQueuedEDU ¶ added in v0.6.0
func (c Caches) StoreFederationQueuedEDU(eventNID int64, event *gomatrixserverlib.EDU)
func (Caches) StoreFederationQueuedPDU ¶ added in v0.6.0
func (c Caches) StoreFederationQueuedPDU(eventNID int64, event *types.HeaderedEvent)
func (Caches) StoreLazyLoadedUser ¶ added in v0.8.3
func (Caches) StoreRoomHierarchy ¶ added in v0.13.2
func (c Caches) StoreRoomHierarchy(roomID string, r fclient.RoomHierarchyResponse)
func (Caches) StoreRoomServerEvent ¶ added in v0.9.0
func (c Caches) StoreRoomServerEvent(eventNID types.EventNID, event *types.HeaderedEvent)
func (Caches) StoreRoomServerRoomID ¶
StoreRoomServerRoomID stores roomNID -> roomID and roomID -> roomNID
func (Caches) StoreRoomVersion ¶
func (c Caches) StoreRoomVersion(roomID string, roomVersion gomatrixserverlib.RoomVersion)
func (Caches) StoreServerKey ¶
func (c Caches) StoreServerKey( request gomatrixserverlib.PublicKeyLookupRequest, response gomatrixserverlib.PublicKeyLookupResult, )
type EDUCache ¶ added in v0.8.0
EDUCache maintains a list of users typing in each room.
func NewTypingCache ¶ added in v0.8.0
func NewTypingCache() *EDUCache
NewTypingCache returns a new EDUCache initialised for use.
func (*EDUCache) AddTypingUser ¶ added in v0.8.0
AddTypingUser sets an user as typing in a room. expire is the time when the user typing should time out. if expire is nil, defaultTypingTimeout is assumed. Returns the latest sync position for typing after update.
func (*EDUCache) GetLatestSyncPosition ¶ added in v0.8.0
func (*EDUCache) GetTypingUsers ¶ added in v0.8.0
GetTypingUsers returns the list of users typing in a room.
func (*EDUCache) GetTypingUsersIfUpdatedAfter ¶ added in v0.8.0
func (t *EDUCache) GetTypingUsersIfUpdatedAfter( roomID string, position int64, ) (users []string, updated bool)
GetTypingUsersIfUpdatedAfter returns all users typing in this room with updated == true if the typing sync position of the room is after the given position. Otherwise, returns an empty slice with updated == false.
func (*EDUCache) RemoveUser ¶ added in v0.8.0
RemoveUser with mutex lock & stop the timer. Returns the latest sync position for typing after update.
func (*EDUCache) SetTimeoutCallback ¶ added in v0.8.0
func (t *EDUCache) SetTimeoutCallback(fn TimeoutCallbackFn)
SetTimeoutCallback sets a callback function that is called right after a user is removed from the typing user list due to timeout.
type EventStateKeyCache ¶ added in v0.9.0
type EventStateKeyCache interface { GetEventStateKey(eventStateKeyNID types.EventStateKeyNID) (string, bool) StoreEventStateKey(eventStateKeyNID types.EventStateKeyNID, eventStateKey string) GetEventStateKeyNID(eventStateKey string) (types.EventStateKeyNID, bool) }
EventStateKeyCache contains the subset of functions needed for a room event state key cache.
type EventTypeCache ¶ added in v0.12.0
type EventTypeCache interface { GetEventTypeKey(eventType string) (types.EventTypeNID, bool) StoreEventTypeKey(eventTypeNID types.EventTypeNID, eventType string) }
type FederationCache ¶ added in v0.6.0
type FederationCache interface { GetFederationQueuedPDU(eventNID int64) (event *types.HeaderedEvent, ok bool) StoreFederationQueuedPDU(eventNID int64, event *types.HeaderedEvent) EvictFederationQueuedPDU(eventNID int64) GetFederationQueuedEDU(eventNID int64) (event *gomatrixserverlib.EDU, ok bool) StoreFederationQueuedEDU(eventNID int64, event *gomatrixserverlib.EDU) EvictFederationQueuedEDU(eventNID int64) }
FederationCache contains the subset of functions needed for a federation event cache.
type LazyLoadCache ¶ added in v0.8.2
type RistrettoCachePartition ¶ added in v0.9.0
type RistrettoCachePartition[K keyable, V any] struct { Prefix byte Mutable bool MaxAge time.Duration // contains filtered or unexported fields }
func (*RistrettoCachePartition[K, V]) Get ¶ added in v0.9.0
func (c *RistrettoCachePartition[K, V]) Get(key K) (value V, ok bool)
func (*RistrettoCachePartition[K, V]) Set ¶ added in v0.9.0
func (c *RistrettoCachePartition[K, V]) Set(key K, value V)
func (*RistrettoCachePartition[K, V]) Unset ¶ added in v0.9.0
func (c *RistrettoCachePartition[K, V]) Unset(key K)
type RistrettoCostedCachePartition ¶ added in v0.9.0
type RistrettoCostedCachePartition[k keyable, v costable] struct { *RistrettoCachePartition[k, v] }
func (*RistrettoCostedCachePartition[K, V]) Set ¶ added in v0.9.0
func (c *RistrettoCostedCachePartition[K, V]) Set(key K, value V)
type RoomHierarchyCache ¶ added in v0.13.2
type RoomHierarchyCache interface { GetRoomHierarchy(roomID string) (r fclient.RoomHierarchyResponse, ok bool) StoreRoomHierarchy(roomID string, r fclient.RoomHierarchyResponse) }
RoomHierarchy cache caches responses to federated room hierarchy requests (A.K.A. 'space summaries')
type RoomServerCaches ¶
type RoomServerCaches interface { RoomServerNIDsCache RoomVersionCache RoomServerEventsCache RoomHierarchyCache EventStateKeyCache EventTypeCache }
type RoomServerEventsCache ¶ added in v0.9.0
type RoomServerEventsCache interface { GetRoomServerEvent(eventNID types.EventNID) (*types.HeaderedEvent, bool) StoreRoomServerEvent(eventNID types.EventNID, event *types.HeaderedEvent) InvalidateRoomServerEvent(eventNID types.EventNID) }
RoomServerEventsCache contains the subset of functions needed for a roomserver event cache.
type RoomServerNIDsCache ¶
type RoomServerNIDsCache interface { GetRoomServerRoomID(roomNID types.RoomNID) (string, bool) // StoreRoomServerRoomID stores roomNID -> roomID and roomID -> roomNID StoreRoomServerRoomID(roomNID types.RoomNID, roomID string) GetRoomServerRoomNID(roomID string) (types.RoomNID, bool) }
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 spec.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.
type TimeoutCallbackFn ¶ added in v0.8.0
TimeoutCallbackFn is a function called right after the removal of a user from the typing user list due to timeout. latestSyncPosition is the typing sync position after the removal.