Remove gmsl.HeaderedEvent (#3068)

Replaced with types.HeaderedEvent _for now_. In reality we want to move
them all to gmsl.Event and only use HeaderedEvent when we _need_ to
bundle the version/event ID with the event (seriailsation boundaries,
and even then only when we don't have the room version).

Requires https://github.com/matrix-org/gomatrixserverlib/pull/373
This commit is contained in:
kegsay 2023-04-27 12:54:20 +01:00 committed by GitHub
parent 2475cf4b61
commit b189edf4f4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
108 changed files with 660 additions and 514 deletions

View file

@ -20,6 +20,7 @@ import (
"testing"
"time"
"github.com/matrix-org/dendrite/roomserver/types"
"github.com/matrix-org/gomatrixserverlib"
"github.com/matrix-org/gomatrixserverlib/spec"
)
@ -79,15 +80,15 @@ func WithOrigin(origin spec.ServerName) eventModifier {
}
// Reverse a list of events
func Reversed(in []*gomatrixserverlib.HeaderedEvent) []*gomatrixserverlib.HeaderedEvent {
out := make([]*gomatrixserverlib.HeaderedEvent, len(in))
func Reversed(in []*types.HeaderedEvent) []*types.HeaderedEvent {
out := make([]*types.HeaderedEvent, len(in))
for i := 0; i < len(in); i++ {
out[i] = in[len(in)-i-1]
}
return out
}
func AssertEventIDsEqual(t *testing.T, gotEventIDs []string, wants []*gomatrixserverlib.HeaderedEvent) {
func AssertEventIDsEqual(t *testing.T, gotEventIDs []string, wants []*types.HeaderedEvent) {
t.Helper()
if len(gotEventIDs) != len(wants) {
t.Errorf("length mismatch: got %d events, want %d", len(gotEventIDs), len(wants))
@ -102,7 +103,7 @@ func AssertEventIDsEqual(t *testing.T, gotEventIDs []string, wants []*gomatrixse
}
}
func AssertEventsEqual(t *testing.T, gots, wants []*gomatrixserverlib.HeaderedEvent) {
func AssertEventsEqual(t *testing.T, gots, wants []*types.HeaderedEvent) {
t.Helper()
if len(gots) != len(wants) {
t.Fatalf("length mismatch: got %d events, want %d", len(gots), len(wants))

View file

@ -23,6 +23,7 @@ import (
"github.com/matrix-org/dendrite/federationapi/storage/shared/receipt"
"github.com/matrix-org/dendrite/federationapi/types"
rstypes "github.com/matrix-org/dendrite/roomserver/types"
"github.com/matrix-org/gomatrixserverlib"
"github.com/matrix-org/gomatrixserverlib/spec"
)
@ -36,7 +37,7 @@ type InMemoryFederationDatabase struct {
pendingEDUServers map[spec.ServerName]struct{}
blacklistedServers map[spec.ServerName]struct{}
assumedOffline map[spec.ServerName]struct{}
pendingPDUs map[*receipt.Receipt]*gomatrixserverlib.HeaderedEvent
pendingPDUs map[*receipt.Receipt]*rstypes.HeaderedEvent
pendingEDUs map[*receipt.Receipt]*gomatrixserverlib.EDU
associatedPDUs map[spec.ServerName]map[*receipt.Receipt]struct{}
associatedEDUs map[spec.ServerName]map[*receipt.Receipt]struct{}
@ -49,7 +50,7 @@ func NewInMemoryFederationDatabase() *InMemoryFederationDatabase {
pendingEDUServers: make(map[spec.ServerName]struct{}),
blacklistedServers: make(map[spec.ServerName]struct{}),
assumedOffline: make(map[spec.ServerName]struct{}),
pendingPDUs: make(map[*receipt.Receipt]*gomatrixserverlib.HeaderedEvent),
pendingPDUs: make(map[*receipt.Receipt]*rstypes.HeaderedEvent),
pendingEDUs: make(map[*receipt.Receipt]*gomatrixserverlib.EDU),
associatedPDUs: make(map[spec.ServerName]map[*receipt.Receipt]struct{}),
associatedEDUs: make(map[spec.ServerName]map[*receipt.Receipt]struct{}),
@ -64,7 +65,7 @@ func (d *InMemoryFederationDatabase) StoreJSON(
d.dbMutex.Lock()
defer d.dbMutex.Unlock()
var event gomatrixserverlib.HeaderedEvent
var event rstypes.HeaderedEvent
if err := json.Unmarshal([]byte(js), &event); err == nil {
nidMutex.Lock()
defer nidMutex.Unlock()
@ -91,12 +92,12 @@ func (d *InMemoryFederationDatabase) GetPendingPDUs(
ctx context.Context,
serverName spec.ServerName,
limit int,
) (pdus map[*receipt.Receipt]*gomatrixserverlib.HeaderedEvent, err error) {
) (pdus map[*receipt.Receipt]*rstypes.HeaderedEvent, err error) {
d.dbMutex.Lock()
defer d.dbMutex.Unlock()
pduCount := 0
pdus = make(map[*receipt.Receipt]*gomatrixserverlib.HeaderedEvent)
pdus = make(map[*receipt.Receipt]*rstypes.HeaderedEvent)
if receipts, ok := d.associatedPDUs[serverName]; ok {
for dbReceipt := range receipts {
if event, ok := d.pendingPDUs[dbReceipt]; ok {

View file

@ -25,6 +25,7 @@ import (
"github.com/matrix-org/gomatrixserverlib/spec"
"github.com/matrix-org/dendrite/internal/eventutil"
rstypes "github.com/matrix-org/dendrite/roomserver/types"
)
type Preset int
@ -47,8 +48,8 @@ type Room struct {
creator *User
authEvents gomatrixserverlib.AuthEvents
currentState map[string]*gomatrixserverlib.HeaderedEvent
events []*gomatrixserverlib.HeaderedEvent
currentState map[string]*rstypes.HeaderedEvent
events []*rstypes.HeaderedEvent
}
// Create a new test room. Automatically creates the initial create events.
@ -64,7 +65,7 @@ func NewRoom(t *testing.T, creator *User, modifiers ...roomModifier) *Room {
authEvents: gomatrixserverlib.NewAuthEvents(nil),
preset: PresetPublicChat,
Version: gomatrixserverlib.RoomVersionV9,
currentState: make(map[string]*gomatrixserverlib.HeaderedEvent),
currentState: make(map[string]*rstypes.HeaderedEvent),
visibility: gomatrixserverlib.HistoryVisibilityShared,
}
for _, m := range modifiers {
@ -130,7 +131,7 @@ func (r *Room) insertCreateEvents(t *testing.T) {
}
// Create an event in this room but do not insert it. Does not modify the room in any way (depth, fwd extremities, etc) so is thread-safe.
func (r *Room) CreateEvent(t *testing.T, creator *User, eventType string, content interface{}, mods ...eventModifier) *gomatrixserverlib.HeaderedEvent {
func (r *Room) CreateEvent(t *testing.T, creator *User, eventType string, content interface{}, mods ...eventModifier) *rstypes.HeaderedEvent {
t.Helper()
depth := 1 + len(r.events) // depth starts at 1
@ -203,18 +204,18 @@ func (r *Room) CreateEvent(t *testing.T, creator *User, eventType string, conten
if err = gomatrixserverlib.Allowed(ev, &r.authEvents); err != nil {
t.Fatalf("CreateEvent[%s]: failed to verify event was allowed: %s", eventType, err)
}
headeredEvent := ev.Headered(r.Version)
headeredEvent := &rstypes.HeaderedEvent{Event: ev}
headeredEvent.Visibility = r.visibility
return headeredEvent
}
// Add a new event to this room DAG. Not thread-safe.
func (r *Room) InsertEvent(t *testing.T, he *gomatrixserverlib.HeaderedEvent) {
func (r *Room) InsertEvent(t *testing.T, he *rstypes.HeaderedEvent) {
t.Helper()
// Add the event to the list of auth/state events
r.events = append(r.events, he)
if he.StateKey() != nil {
err := r.authEvents.AddEvent(he.Unwrap())
err := r.authEvents.AddEvent(he.Event)
if err != nil {
t.Fatalf("InsertEvent: failed to add event to auth events: %s", err)
}
@ -222,12 +223,12 @@ func (r *Room) InsertEvent(t *testing.T, he *gomatrixserverlib.HeaderedEvent) {
}
}
func (r *Room) Events() []*gomatrixserverlib.HeaderedEvent {
func (r *Room) Events() []*rstypes.HeaderedEvent {
return r.events
}
func (r *Room) CurrentState() []*gomatrixserverlib.HeaderedEvent {
events := make([]*gomatrixserverlib.HeaderedEvent, len(r.currentState))
func (r *Room) CurrentState() []*rstypes.HeaderedEvent {
events := make([]*rstypes.HeaderedEvent, len(r.currentState))
i := 0
for _, e := range r.currentState {
events[i] = e
@ -236,7 +237,7 @@ func (r *Room) CurrentState() []*gomatrixserverlib.HeaderedEvent {
return events
}
func (r *Room) CreateAndInsert(t *testing.T, creator *User, eventType string, content interface{}, mods ...eventModifier) *gomatrixserverlib.HeaderedEvent {
func (r *Room) CreateAndInsert(t *testing.T, creator *User, eventType string, content interface{}, mods ...eventModifier) *rstypes.HeaderedEvent {
t.Helper()
he := r.CreateEvent(t, creator, eventType, content, mods...)
r.InsertEvent(t, he)