dendrite/internal/caching/cache_federationevents.go

68 lines
2 KiB
Go
Raw Normal View History

2020-12-04 05:06:41 -06:00
package caching
import (
"fmt"
"github.com/matrix-org/gomatrixserverlib"
)
const (
FederationEventCacheName = "federation_event"
2020-12-04 05:50:58 -06:00
FederationEventCacheMaxEntries = 256
2020-12-04 06:00:46 -06:00
FederationEventCacheMutable = true // to allow use of Unset only
2020-12-04 05:06:41 -06:00
)
// FederationSenderCache contains the subset of functions needed for
2020-12-04 05:06:41 -06:00
// 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)
2020-12-04 05:06:41 -06:00
}
func (c Caches) GetFederationSenderQueuedPDU(eventNID int64) (*gomatrixserverlib.HeaderedEvent, bool) {
2020-12-04 05:06:41 -06:00
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) {
2020-12-04 05:06:41 -06:00
key := fmt.Sprintf("%d", eventNID)
2020-12-04 05:21:22 -06:00
c.FederationEvents.Set(key, event)
2020-12-04 05:06:41 -06:00
}
func (c Caches) EvictFederationSenderQueuedEDU(eventNID int64) {
2020-12-04 05:06:41 -06:00
key := fmt.Sprintf("%d", eventNID)
2020-12-04 05:21:22 -06:00
c.FederationEvents.Unset(key)
2020-12-04 05:06:41 -06:00
}