Documentation
      ¶
    
    
  
    
  
    Index ¶
- Constants
 - Variables
 - func Module(scope string) fx.Option
 - type Adapter
 - type Backend
 - type Client
 - type ClientManager
 - type Context
 - func (ctx *Context) Error(code RPCErrorCode, data string) error
 - func (ctx *Context) GetClient() Client
 - func (ctx *Context) GetMeta() *Metadata
 - func (ctx *Context) GetReader() io.Reader
 - func (ctx *Context) GetRequest() *RPCRequest
 - func (ctx *Context) Notify(eventName string, payload interface{}) error
 - func (ctx *Context) Respond(res *RPCResponse) error
 - func (ctx *Context) Send(data []byte) error
 
- type Endpoint
 - type Metadata
 - type Options
 - type Packet
 - type Params
 - type PollerPool
 - type RPCAdapter
 - func (ra *RPCAdapter) HandleMessage(c Client) error
 - func (ra *RPCAdapter) PrepareNotification(eventName string, payload interface{}) ([]byte, error)
 - func (ra *RPCAdapter) PrepareResponse(res *RPCResponse) ([]byte, error)
 - func (ra *RPCAdapter) Register(method string, fn RPCFunc) error
 - func (ra *RPCAdapter) Unregister(method string)
 
- type RPCAdapterOpt
 - type RPCError
 - type RPCErrorCode
 - type RPCFunc
 - type RPCRequest
 - type RPCResponse
 - type RequestHandler
 - type RequestQueue
 - type RequestTask
 - type Runner
 - type RunnerFunc
 - type WebSocketServer
 
Constants ¶
      View Source
      
  
    const ( ErrorCode_InvalidRequest RPCErrorCode = 1000 ErrorCode_NotFound = 2000 ErrorCode_InvalidParams = 3000 ErrorCode_InvalidParams_Invalid_Arguments = 3001 ErrorCode_InvalidParams_Insufficient_Arguments = 3002 ErrorCode_InternalError = 4000 ErrorCode_ServerError = 5000 )
      View Source
      
  
const RequestQueueSize = 32
    Variables ¶
      View Source
      
  
    var (
	ErrAdapterNotImplemented = errors.New("adapter: not implemented")
)
    
      View Source
      
  
    var (
	ErrBackendNotImplemented = errors.New("backend: not implemented")
)
    
      View Source
      
  
    var (
	ErrConnectionClosed = errors.New("client: conn closed")
)
    
      View Source
      
  
var (
	ErrMethodNotFound = errors.New("rpc: method not found")
)
    Functions ¶
Types ¶
type Adapter ¶
type Adapter interface {
	HandleMessage(Client) error
	PrepareNotification(eventName string, payload interface{}) ([]byte, error)
	PrepareResponse(*RPCResponse) ([]byte, error)
	Register(method string, fn RPCFunc) error
	Unregister(method string)
}
    func NewAdapter ¶
func NewAdapter() Adapter
type Backend ¶
type Backend interface {
	ParseRequest(r io.Reader) (*RPCRequest, error)
	PrepareNotification(eventName string, payload interface{}) ([]byte, error)
	PrepareResponse(*RPCResponse) ([]byte, error)
}
    func NewBackend ¶
func NewBackend() Backend
type Client ¶
type Client interface {
	GetOptions() *Options
	GetConnection() net.Conn
	GetClientID() uuid.UUID
	GetMeta() *Metadata
	GetReader() io.Reader
	Send(data []byte) error
	Respond(res *RPCResponse) error
	Notify(eventName string, payload interface{}) error
	Resume() error
	CreateRunner(func(*Runner)) *Runner
	Release()
	Close()
}
    type ClientManager ¶
type ClientManager struct {
	// contains filtered or unexported fields
}
    func NewClientManager ¶
func NewClientManager() *ClientManager
func (*ClientManager) Close ¶
func (clientMgr *ClientManager) Close()
func (*ClientManager) Register ¶
func (clientMgr *ClientManager) Register(c Client)
func (*ClientManager) Run ¶
func (clientMgr *ClientManager) Run()
func (*ClientManager) Unregister ¶
func (clientMgr *ClientManager) Unregister(c Client)
type Context ¶
type Context struct {
	// contains filtered or unexported fields
}
    func NewContext ¶
func NewContext(client Client, req *RPCRequest) *Context
func (*Context) GetRequest ¶
func (ctx *Context) GetRequest() *RPCRequest
func (*Context) Respond ¶
func (ctx *Context) Respond(res *RPCResponse) error
type Endpoint ¶
type Endpoint struct {
	// contains filtered or unexported fields
}
    func NewEndpoint ¶
func (*Endpoint) GetAdapter ¶ added in v0.0.4
type Metadata ¶
type Metadata struct {
	// contains filtered or unexported fields
}
    func NewMetadata ¶
func NewMetadata() *Metadata
type Options ¶
type Options struct {
	Adapter        Adapter
	MaxClients     int
	OnConnected    func(Client) error
	OnDisconnected func(Client) error
	OnMessage      func(Client) error
}
    func NewOptions ¶
func NewOptions() *Options
type Params ¶
type Params struct {
	fx.In
	Lifecycle  fx.Lifecycle
	Logger     *zap.Logger
	HTTPServer *http_server.HTTPServer
}
    type PollerPool ¶
type PollerPool struct {
	// contains filtered or unexported fields
}
    func NewPollerPool ¶
func NewPollerPool() *PollerPool
func (*PollerPool) Add ¶
func (pp *PollerPool) Add(c Client) error
func (*PollerPool) Remove ¶
func (pp *PollerPool) Remove(c Client) error
func (*PollerPool) Wait ¶
func (pp *PollerPool) Wait(fn func([]Client))
type RPCAdapter ¶
type RPCAdapter struct {
	// contains filtered or unexported fields
}
    func NewRPCAdapter ¶
func NewRPCAdapter(opts ...RPCAdapterOpt) *RPCAdapter
func (*RPCAdapter) HandleMessage ¶
func (ra *RPCAdapter) HandleMessage(c Client) error
func (*RPCAdapter) PrepareNotification ¶
func (ra *RPCAdapter) PrepareNotification(eventName string, payload interface{}) ([]byte, error)
func (*RPCAdapter) PrepareResponse ¶
func (ra *RPCAdapter) PrepareResponse(res *RPCResponse) ([]byte, error)
func (*RPCAdapter) Unregister ¶
func (ra *RPCAdapter) Unregister(method string)
type RPCAdapterOpt ¶
type RPCAdapterOpt func(*RPCAdapter)
func WithRPCBackend ¶
func WithRPCBackend(b Backend) RPCAdapterOpt
type RPCError ¶
type RPCError struct {
	Code    RPCErrorCode `json:"code"`
	Message string       `json:"message"`
	Data    interface{}  `json:"data,omitempty"`
}
    func NewError ¶
func NewError(code RPCErrorCode, data interface{}) *RPCError
type RPCErrorCode ¶
type RPCErrorCode int32
type RPCRequest ¶
type RPCResponse ¶
type RequestHandler ¶
type RequestQueue ¶
type RequestQueue struct {
	// contains filtered or unexported fields
}
    func NewRequestQueue ¶
func NewRequestQueue() *RequestQueue
func (*RequestQueue) Consume ¶
func (rq *RequestQueue) Consume(fn RequestHandler) error
func (*RequestQueue) Push ¶
func (rq *RequestQueue) Push(c *Context)
type RequestTask ¶
type RequestTask struct {
	Ctx *Context
}
    type Runner ¶
type Runner struct {
	IsRunning bool
	// contains filtered or unexported fields
}
    func NewRunner ¶
func NewRunner(fn RunnerFunc) *Runner
func (*Runner) WaitForClose ¶
func (r *Runner) WaitForClose()
type RunnerFunc ¶
type RunnerFunc func(*Runner)
type WebSocketServer ¶
type WebSocketServer struct {
	// contains filtered or unexported fields
}
    func (*WebSocketServer) CreateEndpoint ¶
func (wss *WebSocketServer) CreateEndpoint(uri string, opts *Options) (*Endpoint, error)
func (*WebSocketServer) GetEndpoint ¶ added in v0.0.4
func (wss *WebSocketServer) GetEndpoint(uri string) *Endpoint
func (*WebSocketServer) RemoveEndpoint ¶
func (wss *WebSocketServer) RemoveEndpoint(ep *Endpoint) error
 Click to show internal directories. 
   Click to hide internal directories.