Use PDU not *Event in HeaderedEvent (#3073)

Requires https://github.com/matrix-org/gomatrixserverlib/pull/376

This has numerous upsides:
 - Less type casting to `*Event` is required.
- Making Dendrite work with `PDU` interfaces means we can swap out Event
impls more easily.
 - Tests which represent weird event shapes are easier to write.

Part of a series of refactors on GMSL.
This commit is contained in:
kegsay 2023-05-02 15:03:16 +01:00 committed by GitHub
parent 696cbb70b8
commit f5b3144dc3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
64 changed files with 296 additions and 284 deletions

View file

@ -89,8 +89,8 @@ type EventRelationshipResponse struct {
type MSC2836EventRelationshipsResponse struct {
fclient.MSC2836EventRelationshipsResponse
ParsedEvents []*gomatrixserverlib.Event
ParsedAuthChain []*gomatrixserverlib.Event
ParsedEvents []gomatrixserverlib.PDU
ParsedAuthChain []gomatrixserverlib.PDU
}
func toClientResponse(res *MSC2836EventRelationshipsResponse) *EventRelationshipResponse {
@ -306,11 +306,11 @@ func (rc *reqCtx) process() (*MSC2836EventRelationshipsResponse, *util.JSONRespo
)
returnEvents = append(returnEvents, events...)
}
res.ParsedEvents = make([]*gomatrixserverlib.Event, len(returnEvents))
res.ParsedEvents = make([]gomatrixserverlib.PDU, len(returnEvents))
for i, ev := range returnEvents {
// for each event, extract the children_count | hash and add it as unsigned data.
rc.addChildMetadata(ev)
res.ParsedEvents[i] = ev.Event
res.ParsedEvents[i] = ev.PDU
}
res.Limited = remaining == 0 || walkLimited
return &res, nil
@ -373,7 +373,7 @@ func (rc *reqCtx) fetchUnknownEvent(eventID, roomID string) *types.HeaderedEvent
rc.injectResponseToRoomserver(res)
for _, ev := range res.ParsedEvents {
if ev.EventID() == eventID {
return &types.HeaderedEvent{Event: ev}
return &types.HeaderedEvent{PDU: ev}
}
}
}
@ -603,7 +603,7 @@ func (rc *reqCtx) lookForEvent(eventID string) *types.HeaderedEvent {
rc.injectResponseToRoomserver(queryRes)
for _, ev := range queryRes.ParsedEvents {
if ev.EventID() == eventID && rc.req.RoomID == ev.RoomID() {
return &types.HeaderedEvent{Event: ev}
return &types.HeaderedEvent{PDU: ev}
}
}
}
@ -665,7 +665,7 @@ func (rc *reqCtx) injectResponseToRoomserver(res *MSC2836EventRelationshipsRespo
for _, outlier := range append(eventsInOrder, messageEvents...) {
ires = append(ires, roomserver.InputRoomEvent{
Kind: roomserver.KindOutlier,
Event: &types.HeaderedEvent{Event: outlier.(*gomatrixserverlib.Event)},
Event: &types.HeaderedEvent{PDU: outlier},
})
}
// we've got the data by this point so use a background context

View file

@ -397,7 +397,7 @@ func newReq(t *testing.T, jsonBody map[string]interface{}) *msc2836.EventRelatio
func runServer(t *testing.T, router *mux.Router) func() {
t.Helper()
externalServ := &http.Server{
Addr: string(":8009"),
Addr: string("127.0.0.1:8009"),
WriteTimeout: 60 * time.Second,
Handler: router,
}
@ -602,6 +602,6 @@ func mustCreateEvent(t *testing.T, ev fledglingEvent) (result *types.HeaderedEve
if err != nil {
t.Fatalf("mustCreateEvent: failed to sign event: %s", err)
}
h := &types.HeaderedEvent{Event: signedEvent}
h := &types.HeaderedEvent{PDU: signedEvent}
return h
}

View file

@ -693,7 +693,7 @@ func (w *walker) childReferences(roomID string) ([]fclient.MSC2946StrippedEvent,
// else we'll incorrectly walk redacted events (as the link
// is in the state_key)
if content.Get("via").Exists() {
strip := stripped(ev.Event)
strip := stripped(ev.PDU)
if strip == nil {
continue
}
@ -723,7 +723,7 @@ func (s set) isSet(val string) bool {
return ok
}
func stripped(ev *gomatrixserverlib.Event) *fclient.MSC2946StrippedEvent {
func stripped(ev gomatrixserverlib.PDU) *fclient.MSC2946StrippedEvent {
if ev.StateKey() == nil {
return nil
}