1
0
Fork 0
mirror of https://github.com/matrix-org/dendrite.git synced 2025-03-24 02:24:27 -05:00
dendrite/roomserver/api/input.go
2017-02-17 16:06:34 +01:00

43 lines
1.9 KiB
Go

// Package api provides the types that are used to communicate with the roomserver.
package api
const (
// KindOutlier event fall outside the contiguous event graph.
// We do not have the state for these events.
// These events are state events used to authenticate other events.
// They can become part of the contiguous event graph via backfill.
KindOutlier = 1
// KindJoin event start a new contiguous event graph. The event must be a
// m.room.member event joining this server to the room. This must come with
// the state at the event. If the event is contiguous with the existing
// graph for the room then it is treated as a normal new event.
KindJoin = 2
// KindNew event extend the contiguous graph going forwards.
// They usually don't need state, but may include state if the
// there was a new event that references an event that we don't
// have a copy of.
KindNew = 3
// KindBackfill event extend the contiguous graph going backwards.
// They always have state.
KindBackfill = 4
)
// InputRoomEvent is a matrix room event to add to the room server database.
// TODO: Implement UnmarshalJSON/MarshalJSON in a way that does something sensible with the event JSON.
type InputRoomEvent struct {
// Whether this event is new, backfilled or an outlier.
// This controls how the event is processed.
Kind int
// The event JSON for the event to add.
Event []byte
// List of state event IDs that authenticate this event.
// These are likely derived from the "auth_events" JSON key of the event.
// But can be different because the "auth_events" key can be incomplete or wrong.
// For example many matrix events forget to reference the m.room.create event even though it is needed for auth.
// (since synapse allows this to happen we have to allow it as well.)
AuthEventIDs []string
// Optional list of state event IDs forming the state before this event.
// These state events must have already been persisted.
StateEventIDs []string
}