tentacle

package
v0.0.0-...-c84ee5c Latest Latest
Warning

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

Go to latest
Published: Jun 26, 2019 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultRequestTimeout time.Duration = 1000000 * 5

	IntentLocal string = "local"
)

5 seconds

Variables

View Source
var (
	ErrNotNotify = errors.New("json message is not notify")
)

Functions

func GetCID

func GetCID() jsonrpc.CID

func GetConnId

func GetConnId(c *websocket.Conn) string

func GetUID

func GetUID() uint64

func HandleWebsocket

func HandleWebsocket(w http.ResponseWriter, r *http.Request)

func RemoveElement

func RemoveElement(slice []jsonrpc.CID, elems jsonrpc.CID) []jsonrpc.CID

Types

type ConnT

type ConnT interface {
	RecvChannel() MsgChannel
	CanBroadcast() bool
}

ConnT

type LocalConnT

type LocalConnT struct {
	ChMsg  MsgChannel
	ConnId jsonrpc.CID
	Conn   *websocket.Conn
}

An ConnActor manage a websocket connection and handles incoming messages

func (LocalConnT) CanBroadcast

func (self LocalConnT) CanBroadcast() bool

func (*LocalConnT) Close

func (self *LocalConnT) Close()

func (*LocalConnT) Init

func (self *LocalConnT) Init(conn *websocket.Conn) *LocalConnT

func (LocalConnT) RecvChannel

func (self LocalConnT) RecvChannel() MsgChannel

func (*LocalConnT) Start

func (self *LocalConnT) Start()

type MsgChannel

type MsgChannel chan jsonrpc.RPCMessage

Commands

type PendingKey

type PendingKey struct {
	ConnId jsonrpc.CID
	MsgId  interface{}
}

Pending Struct

type PendingValue

type PendingValue struct {
	ConnId jsonrpc.CID
	Expire time.Time
}

type Requester

type Requester struct {
	ChMsg  MsgChannel
	ConnId jsonrpc.CID
}

func (Requester) CanBroadcast

func (self Requester) CanBroadcast() bool

func (*Requester) Close

func (self *Requester) Close()

func (*Requester) Init

func (self *Requester) Init() *Requester

func (Requester) RecvChannel

func (self Requester) RecvChannel() MsgChannel

func (*Requester) RequestAndWait

func (self *Requester) RequestAndWait(msg jsonrpc.RPCMessage) (jsonrpc.RPCMessage, error)

type Router

type Router struct {
	ServiceConnMap map[string]([]jsonrpc.CID)
	ConnServiceMap map[jsonrpc.CID]([]string)

	ConnMap    map[jsonrpc.CID](ConnT)
	PendingMap map[PendingKey]PendingValue
	// contains filtered or unexported fields
}

func NewRouter

func NewRouter() *Router

func (*Router) BroadcastNotify

func (self *Router) BroadcastNotify(notify jsonrpc.RPCMessage, fromConnId jsonrpc.CID) (int, error)

func (*Router) ClearPending

func (self *Router) ClearPending(connId jsonrpc.CID)

func (*Router) ClearTimeoutRequests

func (self *Router) ClearTimeoutRequests()

func (*Router) GetServices

func (self *Router) GetServices(connId jsonrpc.CID) []string

func (*Router) Init

func (self *Router) Init() *Router

func (*Router) JoinConn

func (self *Router) JoinConn(connId jsonrpc.CID, conn ConnT)

func (*Router) Leave

func (self *Router) Leave(connId jsonrpc.CID)

func (*Router) RegisterService

func (self *Router) RegisterService(connId jsonrpc.CID, serviceName string) error

func (*Router) RouteMessage

func (self *Router) RouteMessage(msg jsonrpc.RPCMessage, fromConnId jsonrpc.CID) *ConnT

commands

func (*Router) SelectConn

func (self *Router) SelectConn(serviceName string) (jsonrpc.CID, bool)

func (*Router) UnRegisterService

func (self *Router) UnRegisterService(connId jsonrpc.CID, serviceName string) error

type ServiceManager

type ServiceManager struct {
	ChMsg  MsgChannel
	ConnId jsonrpc.CID
}

builtin services

func (*ServiceManager) CanBroadcast

func (self *ServiceManager) CanBroadcast() bool

func (*ServiceManager) Close

func (self *ServiceManager) Close()

func (*ServiceManager) Init

func (self *ServiceManager) Init() *ServiceManager

core services manager

func (*ServiceManager) RecvChannel

func (self *ServiceManager) RecvChannel() MsgChannel

func (*ServiceManager) Run

func (self *ServiceManager) Run()

func (*ServiceManager) Start

func (self *ServiceManager) Start()

type TentacleT

type TentacleT struct {
	Router         *Router
	ServiceManager *ServiceManager
}

func Tentacle

func Tentacle() *TentacleT

func (*TentacleT) Init

func (self *TentacleT) Init() *TentacleT

func (*TentacleT) Start

func (self *TentacleT) Start()

Jump to

Keyboard shortcuts

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