Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type HTTPBinderConfig ¶
type HTTPBinderConfig struct {
BindSendTimeout int `json:"bind_send_timeout_ms" yaml:"bind_send_timeout_ms"`
}
HTTPBinderConfig - Options for individual binders (one for each socket connection)
type HTTPServer ¶
type HTTPServer struct {
// contains filtered or unexported fields
}
HTTPServer - A construct designed to take a LeapLocator (a structure for finding and binding to leap documents) and bind it to http clients.
func CreateHTTPServer ¶
func CreateHTTPServer( locator LeapLocator, config HTTPServerConfig, logger *log.Logger, stats *log.Stats, ) (*HTTPServer, error)
CreateHTTPServer - Create a new leaps HTTPServer.
func (*HTTPServer) Listen ¶
func (h *HTTPServer) Listen() error
Listen - Bind to the http endpoint as per configured address, and begin serving requests. This is simply a helper function that calls http.ListenAndServe
func (*HTTPServer) Stop ¶
func (h *HTTPServer) Stop()
Stop - Stop serving web requests and close the HTTPServer.
type HTTPServerConfig ¶
type HTTPServerConfig struct { StaticPath string `json:"static_path" yaml:"static_path"` Path string `json:"socket_path" yaml:"socket_path"` Address string `json:"address" yaml:"address"` StaticFilePath string `json:"www_dir" yaml:"www_dir"` Binder HTTPBinderConfig `json:"binder" yaml:"binder"` }
HTTPServerConfig - Holds configuration options for the HTTPServer.
func DefaultHTTPServerConfig ¶
func DefaultHTTPServerConfig() HTTPServerConfig
DefaultHTTPServerConfig - Returns a fully defined HTTPServer configuration with the default values for each field.
type LeapClientMessage ¶
type LeapClientMessage struct { Command string `json:"command" yaml:"command"` Token string `json:"token" yaml:"token"` DocID string `json:"document_id,omitempty" yaml:"document_id,omitempty"` UserID string `json:"user_id,omitempty" yaml:"user_id,omitempty"` Document *lib.Document `json:"leap_document,omitempty" yaml:"leap_document,omitempty"` }
LeapClientMessage - A structure that defines a message format to expect from clients. Commands can be 'create' (init with new document) or 'find' (init with existing document).
type LeapLocator ¶
type LeapLocator interface { // FindDocument - Find and return a binder portal to an existing document FindDocument(string, string) (lib.BinderPortal, error) // CreateDocument - Create and return a binder portal to a new document CreateDocument(string, string, *lib.Document) (lib.BinderPortal, error) // Close - Close the LeapLocator Close() }
LeapLocator - An interface capable of locating and creating leaps documents. This can either be a curator, which deals with documents on the local service, or a TBD, which load balances between servers of curators.
type LeapServerMessage ¶
type LeapServerMessage struct { Type string `json:"response_type" yaml:"response_type"` Document *lib.Document `json:"leap_document,omitempty" yaml:"leap_document,omitempty"` Version *int `json:"version,omitempty" yaml:"version,omitempty"` Error string `json:"error,omitempty" yaml:"error,omitempty"` }
LeapServerMessage - A structure that defines a response message from the server to a client. Type can be 'document' (init response) or 'error' (an error message to display to the client).
type LeapSocketClientMessage ¶ added in v0.1.0
type LeapSocketClientMessage struct { Command string `json:"command" yaml:"command"` Transform *lib.OTransform `json:"transform,omitempty" yaml:"transform,omitempty"` Position *int64 `json:"position,omitempty" yaml:"position,omitempty"` Message string `json:"message,omitempty" yaml:"message,omitempty"` }
LeapSocketClientMessage - A structure that defines a message format to expect from clients connected to a text model. Commands can currently be 'submit' (submit a transform to a bound document), or 'update' (submit an update to the users cursor position).
type LeapSocketServerMessage ¶ added in v0.1.0
type LeapSocketServerMessage struct { Type string `json:"response_type" yaml:"response_type"` Transforms []lib.OTransform `json:"transforms,omitempty" yaml:"transforms,omitempty"` Updates []lib.ClientMessage `json:"user_updates,omitempty" yaml:"user_updates,omitempty"` Version int `json:"version,omitempty" yaml:"version,omitempty"` Error string `json:"error,omitempty" yaml:"error,omitempty"` }
LeapSocketServerMessage - A structure that defines a response message from a text model to a client. Type can be 'transforms' (continuous delivery), 'correction' (actual version of a submitted transform), 'update' (an update to a users status) or 'error' (an error message to display to the client).
type WebsocketServer ¶ added in v0.1.0
type WebsocketServer struct {
// contains filtered or unexported fields
}
WebsocketServer - A websocket client that connects a binder of a document to a websocket client.
func NewWebsocketServer ¶ added in v0.1.0
func NewWebsocketServer( config HTTPBinderConfig, socket *websocket.Conn, binder lib.BinderPortal, closeChan <-chan bool, logger *log.Logger, stats *log.Stats, ) *WebsocketServer
NewWebsocketServer - Creates a new HTTP websocket client.
func (*WebsocketServer) Launch ¶ added in v0.1.0
func (w *WebsocketServer) Launch()
Launch - Launches the client, wrapping two goroutines around a connected websocket and a BinderPortal. This call spawns two goroutines and blocks until both are closed. One goroutine manages incoming messages routing through to the binder, the other manages outgoing messages routing back through the websocket.