mirror of
https://github.com/1f349/dendrite.git
synced 2024-12-23 16:54:08 +00:00
5d65a879a5
* Cache federation sender events * Store in the correct cache * Update federation event cache * Fix Unset * Give EDUs same caching treatment as PDUs * Make federationsender_cache_size configurable * Default caches configuration * Fix unit tests * Revert "Fix unit tests" This reverts commit 24eb5d22524f20e1024b1475debe61ae20538a5a. * Revert "Default caches configuration" This reverts commit 464ecd1e64b9d2983f6fd5430e9607519d543cb3. * Revert "Make federationsender_cache_size configurable" This reverts commit 4631f5324151e006a15d6f19008f06361b994607.
68 lines
2.0 KiB
Go
68 lines
2.0 KiB
Go
package caching
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/matrix-org/gomatrixserverlib"
|
|
)
|
|
|
|
const (
|
|
FederationEventCacheName = "federation_event"
|
|
FederationEventCacheMaxEntries = 256
|
|
FederationEventCacheMutable = true // to allow use of Unset only
|
|
)
|
|
|
|
// FederationSenderCache contains the subset of functions needed for
|
|
// a federation event cache.
|
|
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)
|
|
}
|
|
|
|
func (c Caches) GetFederationSenderQueuedPDU(eventNID int64) (*gomatrixserverlib.HeaderedEvent, bool) {
|
|
key := fmt.Sprintf("%d", eventNID)
|
|
val, found := c.FederationEvents.Get(key)
|
|
if found && val != nil {
|
|
if event, ok := val.(*gomatrixserverlib.HeaderedEvent); ok {
|
|
return event, true
|
|
}
|
|
}
|
|
return nil, false
|
|
}
|
|
|
|
func (c Caches) StoreFederationSenderQueuedPDU(eventNID int64, event *gomatrixserverlib.HeaderedEvent) {
|
|
key := fmt.Sprintf("%d", eventNID)
|
|
c.FederationEvents.Set(key, event)
|
|
}
|
|
|
|
func (c Caches) EvictFederationSenderQueuedPDU(eventNID int64) {
|
|
key := fmt.Sprintf("%d", eventNID)
|
|
c.FederationEvents.Unset(key)
|
|
}
|
|
|
|
func (c Caches) GetFederationSenderQueuedEDU(eventNID int64) (*gomatrixserverlib.EDU, bool) {
|
|
key := fmt.Sprintf("%d", eventNID)
|
|
val, found := c.FederationEvents.Get(key)
|
|
if found && val != nil {
|
|
if event, ok := val.(*gomatrixserverlib.EDU); ok {
|
|
return event, true
|
|
}
|
|
}
|
|
return nil, false
|
|
}
|
|
|
|
func (c Caches) StoreFederationSenderQueuedEDU(eventNID int64, event *gomatrixserverlib.EDU) {
|
|
key := fmt.Sprintf("%d", eventNID)
|
|
c.FederationEvents.Set(key, event)
|
|
}
|
|
|
|
func (c Caches) EvictFederationSenderQueuedEDU(eventNID int64) {
|
|
key := fmt.Sprintf("%d", eventNID)
|
|
c.FederationEvents.Unset(key)
|
|
}
|