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

Method loadStateEvents

roomserver/state/state.go:1045–1077  ·  view source on GitHub ↗

loadStateEvents loads the matrix events for a list of state entries. Returns a list of state events in no particular order and a map from string event ID back to state entry. The map can be used to recover which numeric state entry a given event is for. Returns an error if there was a problem talkin

(
	ctx context.Context, entries []types.StateEntry,
)

Source from the content-addressed store, hash-verified

1043// The map can be used to recover which numeric state entry a given event is for.
1044// Returns an error if there was a problem talking to the database.
1045func (v *StateResolution) loadStateEvents(
1046 ctx context.Context, entries []types.StateEntry,
1047) ([]*gomatrixserverlib.Event, map[string]types.StateEntry, error) {
1048 span, ctx := opentracing.StartSpanFromContext(ctx, "StateResolution.loadStateEvents")
1049 defer span.Finish()
1050
1051 result := make([]*gomatrixserverlib.Event, 0, len(entries))
1052 eventEntries := make([]types.StateEntry, 0, len(entries))
1053 eventNIDs := make(types.EventNIDs, 0, len(entries))
1054 for _, entry := range entries {
1055 if e, ok := v.events[entry.EventNID]; ok {
1056 result = append(result, e)
1057 } else {
1058 eventEntries = append(eventEntries, entry)
1059 eventNIDs = append(eventNIDs, entry.EventNID)
1060 }
1061 }
1062 events, err := v.db.Events(ctx, eventNIDs)
1063 if err != nil {
1064 return nil, nil, err
1065 }
1066 eventIDMap := map[string]types.StateEntry{}
1067 for _, entry := range eventEntries {
1068 event, ok := eventMap(events).lookup(entry.EventNID)
1069 if !ok {
1070 panic(fmt.Errorf("corrupt DB: Missing event numeric ID %d", entry.EventNID))
1071 }
1072 result = append(result, event.Event)
1073 eventIDMap[event.Event.EventID()] = entry
1074 v.events[entry.EventNID] = event.Event
1075 }
1076 return result, eventIDMap, nil
1077}
1078
1079type authEventLoader struct {
1080 sync.Mutex

Callers 2

resolveConflictsV1Method · 0.95
resolveConflictsV2Method · 0.95

Calls 3

eventMapTypeAlias · 0.85
EventsMethod · 0.65
lookupMethod · 0.45

Tested by

no test coverage detected