Documentation ¶
Index ¶
- 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) GetFederationQueuedEDU(eventNID int64) (*gomatrixserverlib.EDU, bool)
- func (c Caches) GetFederationQueuedPDU(eventNID int64) (*gomatrixserverlib.HeaderedEvent, bool)
- func (c Caches) GetRoomServerEvent(eventNID types.EventNID) (*gomatrixserverlib.Event, bool)
- func (c Caches) GetRoomServerRoomID(roomNID types.RoomNID) (string, bool)
- func (c Caches) GetRoomVersion(roomID string) (gomatrixserverlib.RoomVersion, bool)
- func (c Caches) GetServerKey(request gomatrixserverlib.PublicKeyLookupRequest, ...) (gomatrixserverlib.PublicKeyLookupResult, bool)
- func (c Caches) GetSpaceSummary(roomID string) (r gomatrixserverlib.MSC2946SpacesResponse, ok bool)
- func (c Caches) InvalidateLazyLoadedUser(device *userapi.Device, roomID, userID string)
- func (c Caches) IsLazyLoadedUserCached(device *userapi.Device, roomID, userID string) (string, bool)
- func (c Caches) StoreEventStateKey(eventStateKeyNID types.EventStateKeyNID, eventStateKey string)
- func (c Caches) StoreFederationQueuedEDU(eventNID int64, event *gomatrixserverlib.EDU)
- func (c Caches) StoreFederationQueuedPDU(eventNID int64, event *gomatrixserverlib.HeaderedEvent)
- func (c Caches) StoreLazyLoadedUser(device *userapi.Device, roomID, userID, eventID string)
- func (c Caches) StoreRoomServerEvent(eventNID types.EventNID, event *gomatrixserverlib.Event)
- 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, ...)
- func (c Caches) StoreSpaceSummary(roomID string, r gomatrixserverlib.MSC2946SpacesResponse)
- 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 FederationCache
- type LazyLoadCache
- type RistrettoCachePartition
- type RistrettoCostedCachePartition
- type RoomServerCaches
- type RoomServerEventsCache
- type RoomServerNIDsCache
- type RoomVersionCache
- type ServerKeyCache
- type SpaceSummaryRoomsCache
- type TimeoutCallbackFn
Constants ¶
This section is empty.
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, *gomatrixserverlib.Event] // event NID -> event RoomServerStateKeys Cache[types.EventStateKeyNID, string] // event NID -> event state key FederationPDUs Cache[int64, *gomatrixserverlib.HeaderedEvent] // queue NID -> PDU FederationEDUs Cache[int64, *gomatrixserverlib.EDU] // queue NID -> EDU SpaceSummaryRooms Cache[string, gomatrixserverlib.MSC2946SpacesResponse] // 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 ¶
func (Caches) EvictFederationQueuedEDU ¶
func (Caches) EvictFederationQueuedPDU ¶
func (Caches) GetEventStateKey ¶
func (c Caches) GetEventStateKey(eventStateKeyNID types.EventStateKeyNID) (string, bool)
func (Caches) GetFederationQueuedEDU ¶
func (c Caches) GetFederationQueuedEDU(eventNID int64) (*gomatrixserverlib.EDU, bool)
func (Caches) GetFederationQueuedPDU ¶
func (c Caches) GetFederationQueuedPDU(eventNID int64) (*gomatrixserverlib.HeaderedEvent, bool)
func (Caches) GetRoomServerEvent ¶
func (Caches) GetRoomServerRoomID ¶
func (Caches) GetRoomVersion ¶
func (c Caches) GetRoomVersion(roomID string) (gomatrixserverlib.RoomVersion, bool)
func (Caches) GetServerKey ¶
func (c Caches) GetServerKey( request gomatrixserverlib.PublicKeyLookupRequest, timestamp gomatrixserverlib.Timestamp, ) (gomatrixserverlib.PublicKeyLookupResult, bool)
func (Caches) GetSpaceSummary ¶
func (c Caches) GetSpaceSummary(roomID string) (r gomatrixserverlib.MSC2946SpacesResponse, ok bool)
func (Caches) InvalidateLazyLoadedUser ¶
func (Caches) IsLazyLoadedUserCached ¶
func (Caches) StoreEventStateKey ¶
func (c Caches) StoreEventStateKey(eventStateKeyNID types.EventStateKeyNID, eventStateKey string)
func (Caches) StoreFederationQueuedEDU ¶
func (c Caches) StoreFederationQueuedEDU(eventNID int64, event *gomatrixserverlib.EDU)
func (Caches) StoreFederationQueuedPDU ¶
func (c Caches) StoreFederationQueuedPDU(eventNID int64, event *gomatrixserverlib.HeaderedEvent)
func (Caches) StoreLazyLoadedUser ¶
func (Caches) StoreRoomServerEvent ¶
func (c Caches) StoreRoomServerEvent(eventNID types.EventNID, event *gomatrixserverlib.Event)
func (Caches) StoreRoomServerRoomID ¶
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, )
func (Caches) StoreSpaceSummary ¶
func (c Caches) StoreSpaceSummary(roomID string, r gomatrixserverlib.MSC2946SpacesResponse)
type EDUCache ¶
EDUCache maintains a list of users typing in each room.
func NewTypingCache ¶
func NewTypingCache() *EDUCache
NewTypingCache returns a new EDUCache initialised for use.
func (*EDUCache) AddTypingUser ¶
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 ¶
func (*EDUCache) GetTypingUsers ¶
GetTypingUsers returns the list of users typing in a room.
func (*EDUCache) GetTypingUsersIfUpdatedAfter ¶
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 ¶
RemoveUser with mutex lock & stop the timer. Returns the latest sync position for typing after update.
func (*EDUCache) SetTimeoutCallback ¶
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 ¶
type EventStateKeyCache interface { GetEventStateKey(eventStateKeyNID types.EventStateKeyNID) (string, bool) StoreEventStateKey(eventStateKeyNID types.EventStateKeyNID, eventStateKey string) }
EventStateKeyCache contains the subset of functions needed for a room event state key cache.
type FederationCache ¶
type FederationCache interface { GetFederationQueuedPDU(eventNID int64) (event *gomatrixserverlib.HeaderedEvent, ok bool) StoreFederationQueuedPDU(eventNID int64, event *gomatrixserverlib.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 ¶
type RistrettoCachePartition ¶
type RistrettoCachePartition[K keyable, V any] struct { Prefix byte Mutable bool MaxAge time.Duration // contains filtered or unexported fields }
func (*RistrettoCachePartition[K, V]) Get ¶
func (c *RistrettoCachePartition[K, V]) Get(key K) (value V, ok bool)
func (*RistrettoCachePartition[K, V]) Set ¶
func (c *RistrettoCachePartition[K, V]) Set(key K, value V)
func (*RistrettoCachePartition[K, V]) Unset ¶
func (c *RistrettoCachePartition[K, V]) Unset(key K)
type RistrettoCostedCachePartition ¶
type RistrettoCostedCachePartition[k keyable, v costable] struct { *RistrettoCachePartition[k, v] }
func (*RistrettoCostedCachePartition[K, V]) Set ¶
func (c *RistrettoCostedCachePartition[K, V]) Set(key K, value V)
type RoomServerCaches ¶
type RoomServerCaches interface { RoomServerNIDsCache RoomVersionCache RoomServerEventsCache EventStateKeyCache }
type RoomServerEventsCache ¶
type RoomServerEventsCache interface { GetRoomServerEvent(eventNID types.EventNID) (*gomatrixserverlib.Event, bool) StoreRoomServerEvent(eventNID types.EventNID, event *gomatrixserverlib.Event) }
RoomServerEventsCache contains the subset of functions needed for a roomserver event cache.
type RoomServerNIDsCache ¶
type RoomServerNIDsCache interface { 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.
type SpaceSummaryRoomsCache ¶
type SpaceSummaryRoomsCache interface { GetSpaceSummary(roomID string) (r gomatrixserverlib.MSC2946SpacesResponse, ok bool) StoreSpaceSummary(roomID string, r gomatrixserverlib.MSC2946SpacesResponse) }
type TimeoutCallbackFn ¶
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.