types

package
v0.14.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 18, 2024 License: AGPL-3.0 Imports: 11 Imported by: 0

Documentation

Overview

Package types provides the types that are used internally within the roomserver.

Index

Constants

View Source
const (
	// MRoomCreateNID is the numeric ID for the "m.room.create" event type.
	MRoomCreateNID = 1
	// MRoomPowerLevelsNID is the numeric ID for the "m.room.power_levels" event type.
	MRoomPowerLevelsNID = 2
	// MRoomJoinRulesNID is the numeric ID for the "m.room.join_rules" event type.
	MRoomJoinRulesNID = 3
	// MRoomThirdPartyInviteNID is the numeric ID for the "m.room.third_party_invite" event type.
	MRoomThirdPartyInviteNID = 4
	// MRoomMemberNID is the numeric ID for the "m.room.member" event type.
	MRoomMemberNID = 5
	// MRoomRedactionNID is the numeric ID for the "m.room.redaction" event type.
	MRoomRedactionNID = 6
	// MRoomHistoryVisibilityNID is the numeric ID for the "m.room.history_visibility" event type.
	MRoomHistoryVisibilityNID = 7
)
View Source
const (
	// EmptyStateKeyNID is the numeric ID for the empty state key.
	EmptyStateKeyNID = 1
)

Variables

View Source
var ErrorInvalidRoomInfo = fmt.Errorf("room info is invalid")

Functions

func NewEventJSONsFromHeaderedEvents

func NewEventJSONsFromHeaderedEvents(hes []*HeaderedEvent) gomatrixserverlib.EventJSONs

Types

type DeviceOrServerName

type DeviceOrServerName struct {
	// contains filtered or unexported fields
}

Struct to represent a device or a server name.

May be used to designate a caller for functions that can be called by a client (device) or by a server (server name).

Exactly 1 of Device() and ServerName() will return a non-nil result.

func NewDeviceNotServerName

func NewDeviceNotServerName(device userapi.Device) DeviceOrServerName

func NewServerNameNotDevice

func NewServerNameNotDevice(serverName spec.ServerName) DeviceOrServerName

func (*DeviceOrServerName) Device

func (s *DeviceOrServerName) Device() *userapi.Device

func (*DeviceOrServerName) ServerName

func (s *DeviceOrServerName) ServerName() *spec.ServerName

type Event

type Event struct {
	EventNID EventNID
	Rejected bool
	gomatrixserverlib.PDU
}

An Event is a gomatrixserverlib.Event with the numeric event ID attached. It is when performing bulk event lookup in the database.

type EventMetadata

type EventMetadata struct {
	EventNID EventNID
	RoomNID  RoomNID
}

type EventNID

type EventNID int64

EventNID is a numeric ID for an event.

type EventNIDs

type EventNIDs []EventNID

EventNIDs is used to sort and dedupe event NIDs.

func (EventNIDs) Hash

func (a EventNIDs) Hash() []byte

func (EventNIDs) Len

func (a EventNIDs) Len() int

func (EventNIDs) Less

func (a EventNIDs) Less(i, j int) bool

func (EventNIDs) Swap

func (a EventNIDs) Swap(i, j int)

type EventStateKeyNID

type EventStateKeyNID int64

EventStateKeyNID is a numeric ID for an event state_key.

type EventTypeNID

type EventTypeNID int64

EventTypeNID is a numeric ID for an event type.

type HeaderedEvent

type HeaderedEvent struct {
	gomatrixserverlib.PDU
	Visibility gomatrixserverlib.HistoryVisibility
	// TODO: Remove this. This is a temporary workaround to store the userID in the syncAPI.
	// 		It really should be the userKey instead.
	UserID           spec.UserID
	StateKeyResolved *string
}

HeaderedEvent is an Event which serialises to the headered form, which includes _room_version and _event_id fields.

func (*HeaderedEvent) CacheCost

func (h *HeaderedEvent) CacheCost() int

func (*HeaderedEvent) MarshalJSON

func (h *HeaderedEvent) MarshalJSON() ([]byte, error)

func (*HeaderedEvent) UnmarshalJSON

func (j *HeaderedEvent) UnmarshalJSON(data []byte) error

type MissingEventError

type MissingEventError string

A MissingEventError is an error that happened because the roomserver was missing requested events from its database.

func (MissingEventError) Error

func (e MissingEventError) Error() string

type MissingStateError

type MissingStateError string

A MissingStateError is an error that happened because the roomserver was missing requested state snapshots from its databases.

func (MissingStateError) Error

func (e MissingStateError) Error() string

type RejectedError

type RejectedError string

A RejectedError is returned when an event is stored as rejected. The error contains the reason why.

func (RejectedError) Error

func (e RejectedError) Error() string

type RoomInfo

type RoomInfo struct {
	RoomNID     RoomNID
	RoomVersion gomatrixserverlib.RoomVersion
	// contains filtered or unexported fields
}

RoomInfo contains metadata about a room

func (*RoomInfo) CopyFrom

func (r *RoomInfo) CopyFrom(r2 *RoomInfo)

func (*RoomInfo) IsStub

func (r *RoomInfo) IsStub() bool

func (*RoomInfo) SetIsStub

func (r *RoomInfo) SetIsStub(isStub bool)

func (*RoomInfo) SetStateSnapshotNID

func (r *RoomInfo) SetStateSnapshotNID(nid StateSnapshotNID)

func (*RoomInfo) StateSnapshotNID

func (r *RoomInfo) StateSnapshotNID() StateSnapshotNID

type RoomNID

type RoomNID int64

RoomNID is a numeric ID for a room.

type StateAtEvent

type StateAtEvent struct {
	// The state before the event.
	BeforeStateSnapshotNID StateSnapshotNID
	// True if this StateEntry is rejected. State resolution should then treat this
	// StateEntry as being a message event (not a state event).
	IsRejected bool
	// The state entry for the event itself, allows us to calculate the state after the event.
	StateEntry
}

StateAtEvent is the state before and after a matrix event.

func (StateAtEvent) IsStateEvent

func (s StateAtEvent) IsStateEvent() bool

IsStateEvent returns whether the event the state is at is a state event.

type StateAtEventAndReference

type StateAtEventAndReference struct {
	StateAtEvent
	EventID string
}

StateAtEventAndReference is StateAtEvent and gomatrixserverlib.EventReference glued together. It is used when looking up the latest events in a room in the database. The gomatrixserverlib.EventReference is used to check whether a new event references the event. The StateAtEvent is used to construct the current state of the room from the latest events.

type StateAtEventAndReferences

type StateAtEventAndReferences []StateAtEventAndReference

func (StateAtEventAndReferences) EventIDs

func (s StateAtEventAndReferences) EventIDs() string

func (StateAtEventAndReferences) Len

func (StateAtEventAndReferences) Less

func (s StateAtEventAndReferences) Less(a, b int) bool

func (StateAtEventAndReferences) Swap

func (s StateAtEventAndReferences) Swap(a, b int)

type StateBlockNID

type StateBlockNID int64

StateBlockNID is a numeric ID for a block of state data. These blocks of state data are combined to form the actual state.

type StateBlockNIDList

type StateBlockNIDList struct {
	StateSnapshotNID StateSnapshotNID
	StateBlockNIDs   []StateBlockNID
}

StateBlockNIDList is used to return the result of bulk StateBlockNID lookups from the database.

type StateBlockNIDs

type StateBlockNIDs []StateBlockNID

StateBlockNIDs is used to sort and dedupe state block NIDs.

func (StateBlockNIDs) Hash

func (a StateBlockNIDs) Hash() []byte

func (StateBlockNIDs) Len

func (a StateBlockNIDs) Len() int

func (StateBlockNIDs) Less

func (a StateBlockNIDs) Less(i, j int) bool

func (StateBlockNIDs) Swap

func (a StateBlockNIDs) Swap(i, j int)

type StateEntries

type StateEntries []StateEntry

func (StateEntries) Len

func (a StateEntries) Len() int

func (StateEntries) Less

func (a StateEntries) Less(i, j int) bool

func (StateEntries) Swap

func (a StateEntries) Swap(i, j int)

type StateEntry

type StateEntry struct {
	StateKeyTuple
	// The numeric ID for the event.
	EventNID EventNID
}

A StateEntry is an entry in the room state of a matrix room.

func DeduplicateStateEntries

func DeduplicateStateEntries(a []StateEntry) []StateEntry

Deduplicate takes a set of state entries and ensures that there are no duplicate (event type, state key) tuples. If there are then we dedupe them, making sure that the latest/highest NIDs are always chosen.

func (StateEntry) LessThan

func (a StateEntry) LessThan(b StateEntry) bool

LessThan returns true if this state entry is less than the other state entry. The ordering is arbitrary and is used to implement binary search and to efficiently deduplicate entries.

type StateEntryList

type StateEntryList struct {
	StateBlockNID StateBlockNID
	StateEntries  []StateEntry
}

StateEntryList is used to return the result of bulk state entry lookups from the database.

type StateKeyTuple

type StateKeyTuple struct {
	// The numeric ID for the event type.
	EventTypeNID EventTypeNID
	// The numeric ID for the state key.
	EventStateKeyNID EventStateKeyNID
}

A StateKeyTuple is a pair of a numeric event type and a numeric state key. It is used to lookup state entries.

func (StateKeyTuple) IsCreate

func (a StateKeyTuple) IsCreate() bool

func (StateKeyTuple) LessThan

func (a StateKeyTuple) LessThan(b StateKeyTuple) bool

LessThan returns true if this state key is less than the other state key. The ordering is arbitrary and is used to implement binary search and to efficiently deduplicate entries.

type StateKeyTupleSorter

type StateKeyTupleSorter []StateKeyTuple

func (StateKeyTupleSorter) Len

func (s StateKeyTupleSorter) Len() int

func (StateKeyTupleSorter) Less

func (s StateKeyTupleSorter) Less(i, j int) bool

func (StateKeyTupleSorter) Swap

func (s StateKeyTupleSorter) Swap(i, j int)

func (StateKeyTupleSorter) TypesAndStateKeysAsArrays

func (s StateKeyTupleSorter) TypesAndStateKeysAsArrays() (eventTypeNIDs []int64, eventStateKeyNIDs []int64)

List the unique eventTypeNIDs and eventStateKeyNIDs. Assumes that the list is sorted.

type StateSnapshotNID

type StateSnapshotNID int64

StateSnapshotNID is a numeric ID for the state at an event.

type UserRoomKeyPair

type UserRoomKeyPair struct {
	RoomNID          RoomNID
	EventStateKeyNID EventStateKeyNID
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL