internal

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Aug 23, 2022 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Assert

func Assert(msg string, expr bool)

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 DecorateLogger added in v0.3.1

func DecorateLogger(ctx context.Context, l *zerolog.Event) *zerolog.Event

func HashedTokenFromRequest added in v0.2.0

func HashedTokenFromRequest(req *http.Request) (hashAccessToken string, accessToken string, err error)

func IsMembershipChange

func IsMembershipChange(eventJSON gjson.Result) bool

func RequestContext added in v0.3.1

func RequestContext(ctx context.Context) context.Context

prepare a request context so it can contain syncv3 info

func SetRequestContextResponseInfo added in v0.3.1

func SetRequestContextResponseInfo(ctx context.Context, since, next int64, numRooms int, txnID string)

func SetRequestContextUserID added in v0.3.1

func SetRequestContextUserID(ctx context.Context, userID string)

add the user ID to this request context. Need to have called RequestContext first.

Types

type HandlerError

type HandlerError struct {
	StatusCode int
	Err        error
}

func (*HandlerError) Error

func (e *HandlerError) Error() string

func (HandlerError) JSON

func (e HandlerError) JSON() []byte

type Hero

type Hero struct {
	ID   string
	Name string
}

type RequiredStateMap added in v0.2.0

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

func NewRequiredStateMap added in v0.2.0

func NewRequiredStateMap(eventTypesWithWildcardStateKeys map[string]struct{},
	stateKeysForWildcardEventType []string,
	eventTypeToStateKeys map[string][]string,
	allState bool) *RequiredStateMap

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)

func (*RoomMetadata) SameRoomName added in v0.3.1

func (m *RoomMetadata) SameRoomName(other *RoomMetadata) bool

SameRoomName checks if the fields relevant for room names have changed between the two metadatas. Returns true if there are no changes.

Jump to

Keyboard shortcuts

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