Documentation
¶
Index ¶
- func ServeAdminWs(w http.ResponseWriter, r *http.Request, fiber *fiber.Ctx, ...)
- func ServeWs(w http.ResponseWriter, r *http.Request, sessionStore *session.Store, ...)
- type AcceptCommitData
- type AcceptCommitMessage
- type AccessStatusMessage
- type AdminMessageHandler
- type AuthSession
- type ChangesetInfo
- type ChangesetResponse
- type ChannelOperator
- type Client
- type ClientReconnectData
- type ClientReconnectMessage
- type Hub
- type LineChange
- type Message
- type MockWebSocketConn
- func (m *MockWebSocketConn) Close() error
- func (m *MockWebSocketConn) NextWriter(messageType int) (io.WriteCloser, error)
- func (m *MockWebSocketConn) ReadMessage() (messageType int, p []byte, err error)
- func (m *MockWebSocketConn) RemoteAddr() net.Addr
- func (m *MockWebSocketConn) SetPongHandler(h func(appData string) error)
- func (m *MockWebSocketConn) SetReadDeadline(t time.Time) error
- func (m *MockWebSocketConn) SetReadLimit(size int64)
- func (m *MockWebSocketConn) SetWriteDeadline(t time.Time) error
- func (m *MockWebSocketConn) WriteControl(messageType int, data []byte, deadline time.Time) error
- func (m *MockWebSocketConn) WriteMessage(messageType int, data []byte) error
- type NewChangesMessage
- type NewChangesMessageData
- type PadDelete
- type PadDeleteMessage
- type PadMessageHandler
- func (p *PadMessageHandler) ComposePadChangesets(retrievedPad *pad2.Pad, startNum int, endNum int) (string, error)
- func (p *PadMessageHandler) DeletePad(padId string) error
- func (p *PadMessageHandler) GetRoomSockets(padID string) []Client
- func (p *PadMessageHandler) HandleChangesetRequest(socket *Client, message ws.ChangesetReq)
- func (p *PadMessageHandler) HandleClientReadyMessage(ready ws.ClientReady, client *Client, thisSession *ws.Session, ...)
- func (p *PadMessageHandler) HandleDisconnectOfPadClient(client *Client, settings *settings.Settings, logger *zap.SugaredLogger)
- func (p *PadMessageHandler) HandleMessage(message any, client *Client, ctx *fiber.Ctx, ...)
- func (p *PadMessageHandler) HandlePadDelete(client *Client, padDeleteMessage PadDelete)
- func (p *PadMessageHandler) HandleUserInfoUpdate(userInfo UserInfoUpdate, client *Client)
- func (p *PadMessageHandler) KickSessionsFromPad(padID string)
- func (p *PadMessageHandler) SendChatMessageToPadClients(session *ws.Session, chatMessage ws.ChatMessageData)
- func (p *PadMessageHandler) UpdatePadClients(pad *pad2.Pad)
- type SessionInfo
- type SessionStore
- func (s *SessionStore) AddHandleClientInformationForTest(sessionId string, padId string, token string) *ws.Session
- func (s *SessionStore) AddPadReadOnlyIdsForTest(sessionId, padId string, readOnlyPadId string, readOnly bool)
- func (s *SessionStore) GetSessionForTest(sessionId string) *ws.Session
- func (s *SessionStore) InitSessionForTest(sessionId string)
- func (s *SessionStore) RemoveSessionForTest(sessionId string)
- func (s *SessionStore) SetAuthorForTest(sessionId string, authorId string)
- func (s *SessionStore) SetPadIdForTest(sessionId string, padId string)
- func (s *SessionStore) SetReadOnlyForTest(sessionId string, readOnly bool)
- func (s *SessionStore) SetRevisionForTest(sessionId string, revision int)
- type Task
- type UserDupMessage
- type UserInfoUpdate
- type UserInfoUpdateWrapper
- type WebSocketConn
- type WebSocketConnData
- type WebSocketWrapper
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ServeAdminWs ¶ added in v0.0.2
func ServeAdminWs(w http.ResponseWriter, r *http.Request, fiber *fiber.Ctx, configSettings *settings.Settings, logger *zap.SugaredLogger, handler AdminMessageHandler)
func ServeWs ¶
func ServeWs(w http.ResponseWriter, r *http.Request, sessionStore *session.Store, fiber *fiber.Ctx, configSettings *settings.Settings, logger *zap.SugaredLogger, handler *PadMessageHandler)
ServeWs handles websocket requests from the peer.
Types ¶
type AcceptCommitData ¶
type AcceptCommitMessage ¶
type AcceptCommitMessage struct {
Type string `json:"type"`
Data AcceptCommitData `json:"data"`
}
type AccessStatusMessage ¶
type AccessStatusMessage struct {
AccessStatus string `json:"accessStatus"`
}
type AdminMessageHandler ¶ added in v0.0.2
type AdminMessageHandler struct {
Logger *zap.SugaredLogger
// contains filtered or unexported fields
}
func NewAdminMessageHandler ¶ added in v0.0.2
func NewAdminMessageHandler(store db.DataStore, h *hooks.Hook, m *pad.Manager, padMessHandler *PadMessageHandler, logger *zap.SugaredLogger, hub *Hub) AdminMessageHandler
func (AdminMessageHandler) DeleteRevisions ¶ added in v0.0.2
func (h AdminMessageHandler) DeleteRevisions(padId string, keepRevisions int) error
func (AdminMessageHandler) HandleMessage ¶ added in v0.0.2
func (h AdminMessageHandler) HandleMessage(message admin.EventMessage, retrievedSettings *settings.Settings, c *Client)
type AuthSession ¶
type ChangesetInfo ¶ added in v0.0.2
type ChangesetInfo struct {
ForwardsChangesets []string `json:"forwardsChangesets"`
BackwardsChangesets []string `json:"backwardsChangesets"`
ActualEndNum int `json:"actualEndNum"`
TimeDeltas []int64 `json:"timeDeltas"`
Start int `json:"start"`
Granularity int `json:"granularity"`
APool apool.APool `json:"apool"`
RequestId int `json:"requestID"`
}
type ChangesetResponse ¶ added in v0.0.2
type ChangesetResponse struct {
Type string `json:"type"`
Data ChangesetInfo `json:"data"`
}
type ChannelOperator ¶
type ChannelOperator struct {
// contains filtered or unexported fields
}
func NewChannelOperator ¶
func NewChannelOperator(p *PadMessageHandler) ChannelOperator
func (*ChannelOperator) AddToQueue ¶
func (c *ChannelOperator) AddToQueue(ch string, t Task)
type Client ¶
type Client struct {
Hub *Hub
// The websocket connection.
Conn WebSocketConn
// Buffered channel of outbound messages.
Send chan []byte
Room string
SessionId string
Ctx *fiber.Ctx
Handler *PadMessageHandler
// contains filtered or unexported fields
}
Client is a middleman between the websocket connection and the hub.
func (*Client) SafeSend ¶ added in v0.0.2
SafeSend sends a message to the client, returning false if the channel is closed. This prevents panic on send to closed channel.
func (*Client) SendPadDelete ¶
func (c *Client) SendPadDelete()
func (*Client) SendUserDupMessage ¶
func (c *Client) SendUserDupMessage()
type ClientReconnectData ¶ added in v0.0.2
type ClientReconnectData struct {
Type string `json:"type"`
HeadRev int `json:"headRev,omitempty"`
NewRev int `json:"newRev"`
Changeset string `json:"changeset,omitempty"`
APool apool.APool `json:"apool,omitempty"`
Author string `json:"author,omitempty"`
CurrentTime int64 `json:"currentTime,omitempty"`
NoChanges bool `json:"noChanges,omitempty"`
}
type ClientReconnectMessage ¶ added in v0.0.2
type ClientReconnectMessage struct {
Type string `json:"type"`
Data ClientReconnectData `json:"data"`
}
type Hub ¶
type Hub struct {
// Registered Clients.
Clients map[*Client]bool
// Inbound messages from the Clients.
Broadcast chan []byte
// Register requests from the Clients.
Register chan *Client
// Unregister requests from Clients.
Unregister chan *Client
}
Hub maintains the set of active Clients and broadcasts messages to the Clients.
type LineChange ¶ added in v0.0.2
type Message ¶
type Message struct {
Data clientVars2.ClientVars `json:"data"`
Type string `json:"type"`
}
type MockWebSocketConn ¶ added in v0.0.2
type MockWebSocketConn struct {
Data []WebSocketConnData
// contains filtered or unexported fields
}
func NewActualMockWebSocketconn ¶ added in v0.0.2
func NewActualMockWebSocketconn() *MockWebSocketConn
func (*MockWebSocketConn) Close ¶ added in v0.0.2
func (m *MockWebSocketConn) Close() error
func (*MockWebSocketConn) NextWriter ¶ added in v0.0.2
func (m *MockWebSocketConn) NextWriter(messageType int) (io.WriteCloser, error)
func (*MockWebSocketConn) ReadMessage ¶ added in v0.0.2
func (m *MockWebSocketConn) ReadMessage() (messageType int, p []byte, err error)
func (*MockWebSocketConn) RemoteAddr ¶ added in v0.0.2
func (m *MockWebSocketConn) RemoteAddr() net.Addr
func (*MockWebSocketConn) SetPongHandler ¶ added in v0.0.2
func (m *MockWebSocketConn) SetPongHandler(h func(appData string) error)
func (*MockWebSocketConn) SetReadDeadline ¶ added in v0.0.2
func (m *MockWebSocketConn) SetReadDeadline(t time.Time) error
func (*MockWebSocketConn) SetReadLimit ¶ added in v0.0.2
func (m *MockWebSocketConn) SetReadLimit(size int64)
func (*MockWebSocketConn) SetWriteDeadline ¶ added in v0.0.2
func (m *MockWebSocketConn) SetWriteDeadline(t time.Time) error
func (*MockWebSocketConn) WriteControl ¶ added in v0.0.2
func (*MockWebSocketConn) WriteMessage ¶ added in v0.0.2
func (m *MockWebSocketConn) WriteMessage(messageType int, data []byte) error
type NewChangesMessage ¶
type NewChangesMessage struct {
Type string `json:"type"`
Data NewChangesMessageData `json:"data"`
}
type NewChangesMessageData ¶
type PadDeleteMessage ¶
type PadDeleteMessage struct {
Disconnect string `json:"disconnect"`
}
type PadMessageHandler ¶ added in v0.0.2
type PadMessageHandler struct {
SessionStore *SessionStore
Logger *zap.SugaredLogger
// contains filtered or unexported fields
}
func NewPadMessageHandler ¶ added in v0.0.2
func NewPadMessageHandler(db db2.DataStore, hooks *hooks.Hook, padManager *pad.Manager, sessionStore *SessionStore, hub *Hub, logger *zap.SugaredLogger) *PadMessageHandler
func (*PadMessageHandler) ComposePadChangesets ¶ added in v0.0.2
func (*PadMessageHandler) DeletePad ¶ added in v0.0.2
func (p *PadMessageHandler) DeletePad(padId string) error
func (*PadMessageHandler) GetRoomSockets ¶ added in v0.0.2
func (p *PadMessageHandler) GetRoomSockets(padID string) []Client
func (*PadMessageHandler) HandleChangesetRequest ¶ added in v0.0.2
func (p *PadMessageHandler) HandleChangesetRequest(socket *Client, message ws.ChangesetReq)
func (*PadMessageHandler) HandleClientReadyMessage ¶ added in v0.0.2
func (p *PadMessageHandler) HandleClientReadyMessage(ready ws.ClientReady, client *Client, thisSession *ws.Session, retrievedSettings *settings.Settings, logger *zap.SugaredLogger)
func (*PadMessageHandler) HandleDisconnectOfPadClient ¶ added in v0.0.2
func (p *PadMessageHandler) HandleDisconnectOfPadClient(client *Client, settings *settings.Settings, logger *zap.SugaredLogger)
func (*PadMessageHandler) HandleMessage ¶ added in v0.0.2
func (p *PadMessageHandler) HandleMessage(message any, client *Client, ctx *fiber.Ctx, retrievedSettings *settings.Settings, logger *zap.SugaredLogger)
func (*PadMessageHandler) HandlePadDelete ¶ added in v0.0.2
func (p *PadMessageHandler) HandlePadDelete(client *Client, padDeleteMessage PadDelete)
func (*PadMessageHandler) HandleUserInfoUpdate ¶ added in v0.0.2
func (p *PadMessageHandler) HandleUserInfoUpdate(userInfo UserInfoUpdate, client *Client)
func (*PadMessageHandler) KickSessionsFromPad ¶ added in v0.0.2
func (p *PadMessageHandler) KickSessionsFromPad(padID string)
func (*PadMessageHandler) SendChatMessageToPadClients ¶ added in v0.0.2
func (p *PadMessageHandler) SendChatMessageToPadClients(session *ws.Session, chatMessage ws.ChatMessageData)
func (*PadMessageHandler) UpdatePadClients ¶ added in v0.0.2
func (p *PadMessageHandler) UpdatePadClients(pad *pad2.Pad)
type SessionInfo ¶
type SessionInfo struct {
// contains filtered or unexported fields
}
type SessionStore ¶
type SessionStore struct {
// contains filtered or unexported fields
}
func NewSessionStore ¶
func NewSessionStore() SessionStore
NewSessionStore @param refresh *int Number of milliseconds to refresh the session
/*
func (*SessionStore) AddHandleClientInformationForTest ¶ added in v0.0.2
func (s *SessionStore) AddHandleClientInformationForTest(sessionId string, padId string, token string) *ws.Session
AddHandleClientInformationForTest adds client information for testing
func (*SessionStore) AddPadReadOnlyIdsForTest ¶ added in v0.0.2
func (s *SessionStore) AddPadReadOnlyIdsForTest(sessionId, padId string, readOnlyPadId string, readOnly bool)
AddPadReadOnlyIdsForTest adds pad read-only IDs for testing
func (*SessionStore) GetSessionForTest ¶ added in v0.0.2
func (s *SessionStore) GetSessionForTest(sessionId string) *ws.Session
GetSessionForTest returns a session for testing
func (*SessionStore) InitSessionForTest ¶ added in v0.0.2
func (s *SessionStore) InitSessionForTest(sessionId string)
InitSessionForTest initializes a session for testing
func (*SessionStore) RemoveSessionForTest ¶ added in v0.0.2
func (s *SessionStore) RemoveSessionForTest(sessionId string)
RemoveSessionForTest removes a session for testing
func (*SessionStore) SetAuthorForTest ¶ added in v0.0.2
func (s *SessionStore) SetAuthorForTest(sessionId string, authorId string)
SetAuthorForTest sets the author for a session for testing
func (*SessionStore) SetPadIdForTest ¶ added in v0.0.2
func (s *SessionStore) SetPadIdForTest(sessionId string, padId string)
SetPadIdForTest sets the pad ID for a session for testing
func (*SessionStore) SetReadOnlyForTest ¶ added in v0.0.2
func (s *SessionStore) SetReadOnlyForTest(sessionId string, readOnly bool)
SetReadOnlyForTest sets the read-only flag for a session for testing
func (*SessionStore) SetRevisionForTest ¶ added in v0.0.2
func (s *SessionStore) SetRevisionForTest(sessionId string, revision int)
SetRevisionForTest sets the revision for a session for testing
type UserDupMessage ¶
type UserDupMessage struct {
Disconnect string `json:"disconnect"`
}
type UserInfoUpdate ¶
type UserInfoUpdateWrapper ¶
type UserInfoUpdateWrapper struct {
Event string `json:"event"`
Data UserInfoUpdate `json:"data"`
}
type WebSocketConn ¶ added in v0.0.2
type WebSocketConn interface {
ReadMessage() (messageType int, p []byte, err error)
WriteMessage(messageType int, data []byte) error
Close() error
SetWriteDeadline(t time.Time) error
SetReadDeadline(t time.Time) error
SetPongHandler(h func(appData string) error)
WriteControl(messageType int, data []byte, deadline time.Time) error
RemoteAddr() net.Addr
SetReadLimit(size int64)
NextWriter(messageType int) (io.WriteCloser, error)
}
func NewMockWebSocketConn ¶ added in v0.0.2
func NewMockWebSocketConn() WebSocketConn
func NewWebSocketWrapper ¶ added in v0.0.2
func NewWebSocketWrapper(conn *websocket.Conn) WebSocketConn
type WebSocketConnData ¶ added in v0.0.2
type WebSocketConnData struct {
Data []byte
// contains filtered or unexported fields
}