MCPcopy Create free account
hub / github.com/daodst/chat / SendEventWithState

Function SendEventWithState

roomserver/api/wrapper.go:48–81  ·  view source on GitHub ↗

SendEventWithState writes an event with the specified kind to the roomserver with the state at the event as KindOutlier before it. Will not send any event that is marked as `true` in haveEventIDs.

(
	ctx context.Context, rsAPI InputRoomEventsAPI, kind Kind,
	state *gomatrixserverlib.RespState, event *gomatrixserverlib.HeaderedEvent,
	origin gomatrixserverlib.ServerName, haveEventIDs map[string]bool, async bool,
)

Source from the content-addressed store, hash-verified

46// with the state at the event as KindOutlier before it. Will not send any event that is
47// marked as `true` in haveEventIDs.
48func SendEventWithState(
49 ctx context.Context, rsAPI InputRoomEventsAPI, kind Kind,
50 state *gomatrixserverlib.RespState, event *gomatrixserverlib.HeaderedEvent,
51 origin gomatrixserverlib.ServerName, haveEventIDs map[string]bool, async bool,
52) error {
53 outliers := state.Events(event.RoomVersion)
54 ires := make([]InputRoomEvent, 0, len(outliers))
55 for _, outlier := range outliers {
56 if haveEventIDs[outlier.EventID()] {
57 continue
58 }
59 ires = append(ires, InputRoomEvent{
60 Kind: KindOutlier,
61 Event: outlier.Headered(event.RoomVersion),
62 Origin: origin,
63 })
64 }
65
66 stateEvents := state.StateEvents.UntrustedEvents(event.RoomVersion)
67 stateEventIDs := make([]string, len(stateEvents))
68 for i := range stateEvents {
69 stateEventIDs[i] = stateEvents[i].EventID()
70 }
71
72 ires = append(ires, InputRoomEvent{
73 Kind: kind,
74 Event: event,
75 Origin: origin,
76 HasState: true,
77 StateEventIDs: stateEventIDs,
78 })
79
80 return SendInputRoomEvents(ctx, rsAPI, ires, async)
81}
82
83// SendInputRoomEvents to the roomserver.
84func SendInputRoomEvents(

Callers

nothing calls this directly

Calls 2

SendInputRoomEventsFunction · 0.85
EventsMethod · 0.65

Tested by

no test coverage detected