Documentation ¶
Index ¶
- func Assert(msg string, expr bool)
- func CalculateRoomName(heroInfo *RoomMetadata, maxNumNamesPerRoom int) string
- func HashedTokenFromRequest(req *http.Request) (hashAccessToken string, accessToken string, err error)
- func IsMembershipChange(eventJSON gjson.Result) bool
- type HandlerError
- type Hero
- type RequiredStateMap
- type RoomMetadata
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Assert ¶
Assert that the expression is true, similar to assert() in C. If expr is false, print or panic.
If expr is false and SYNCV3_DEBUG=1 then the program panics. If expr is false and SYNCV3_DEBUG is unset or not '1' then the program logs an error along with a field which contains the file/line number of the caller/assertion of Assert. Assert should be used to verify invariants which should never be broken during normal functioning of the program, and shouldn't be used to log a normal error e.g network errors. Developers can make use of this function by setting SYNCV3_DEBUG=1 when running the server, which will fail-fast whenever a programming or logic error occurs.
The msg provided should be the expectation of the assert e.g:
Assert("list is not empty", len(list) > 0)
Which then produces:
assertion failed: list is not empty
func CalculateRoomName ¶
func CalculateRoomName(heroInfo *RoomMetadata, maxNumNamesPerRoom int) string
func HashedTokenFromRequest ¶ added in v0.2.0
func IsMembershipChange ¶
Types ¶
type HandlerError ¶
func (*HandlerError) Error ¶
func (e *HandlerError) Error() string
func (HandlerError) JSON ¶
func (e HandlerError) JSON() []byte
type RequiredStateMap ¶ added in v0.2.0
type RequiredStateMap struct {
// contains filtered or unexported fields
}
func NewRequiredStateMap ¶ added in v0.2.0
func (*RequiredStateMap) Include ¶ added in v0.2.0
func (rsm *RequiredStateMap) Include(evType, stateKey string) bool
func (*RequiredStateMap) QueryStateMap ¶ added in v0.2.0
func (rsm *RequiredStateMap) QueryStateMap() map[string][]string
work out what to ask the storage layer: if we have wildcard event types we need to pull all room state and cannot only pull out certain event types. If we have wildcard state keys we need to use an empty list for state keys.
type RoomMetadata ¶
type RoomMetadata struct { RoomID string Heroes []Hero NameEvent string // the content of m.room.name, NOT the calculated name CanonicalAlias string JoinCount int InviteCount int LastMessageTimestamp uint64 Encrypted bool Tombstoned bool RoomType *string // if this room is a space, which rooms are m.space.child state events. This is the same for all users hence is global. ChildSpaceRooms map[string]struct{} }
Metadata about a room that is consistent between all users in the room.
func (*RoomMetadata) IsSpace ¶ added in v0.2.1
func (m *RoomMetadata) IsSpace() bool
func (*RoomMetadata) RemoveHero ¶
func (m *RoomMetadata) RemoveHero(userID string)