liNet

package
v0.0.0-...-f53a7f7 Latest Latest
Warning

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

Go to latest
Published: Sep 18, 2022 License: Apache-2.0 Imports: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DataPackKey = []byte("msgprotokey12345")
View Source
var GateMessageKey = []byte("liFrameVeryGood!")

Functions

This section is empty.

Types

type BaseRouter

type BaseRouter struct{}

实现router时,先嵌入这个基类,然后根据需要对这个基类的方法进行重写

func (*BaseRouter) After

func (b *BaseRouter) After()

这里之所以BaseRouter的方法都为空, 是因为有的Router不希望有PreHandle或PostHandle 所以Router全部继承BaseRouter的好处是,不需要实现PreHandle和PostHandle也可以实例化

func (*BaseRouter) EveryThingHandle

func (b *BaseRouter) EveryThingHandle(req liFace.IRequest, rsp liFace.IMessage)

func (*BaseRouter) NameSpace

func (b *BaseRouter) NameSpace() string

func (*BaseRouter) PostHandle

func (b *BaseRouter) PostHandle(req liFace.IRequest, rsp liFace.IMessage)

func (*BaseRouter) PreHandle

func (b *BaseRouter) PreHandle(req liFace.IRequest, rsp liFace.IMessage) bool

type Client

type Client struct {
	Server *Server
	// contains filtered or unexported fields
}

func NewClient

func NewClient(clientName string, clientId string, remoteIP string, remotePort int) *Client

func (*Client) AddRouter

func (c *Client) AddRouter(router liFace.IRouter)

func (*Client) CallOnConnStart

func (c *Client) CallOnConnStart(conn liFace.IConnection)

func (*Client) CallOnConnStop

func (c *Client) CallOnConnStop(conn liFace.IConnection)

func (*Client) GetClientType

func (c *Client) GetClientType() proto.ServerType

func (*Client) GetConn

func (c *Client) GetConn() liFace.IConnection

func (*Client) GetConnMgr

func (c *Client) GetConnMgr() liFace.IConnManager

func (*Client) GetHost

func (c *Client) GetHost() string

func (*Client) GetId

func (c *Client) GetId() string

func (*Client) GetName

func (c *Client) GetName() string

func (*Client) GetPort

func (c *Client) GetPort() int

func (*Client) Running

func (c *Client) Running()

func (*Client) SetClientType

func (c *Client) SetClientType(sType proto.ServerType)

func (*Client) SetOnConnStart

func (c *Client) SetOnConnStart(hookFunc func(liFace.IConnection))

func (*Client) SetOnConnStop

func (c *Client) SetOnConnStop(hookFunc func(liFace.IConnection))

func (*Client) Start

func (c *Client) Start()

func (*Client) Stop

func (c *Client) Stop()

type ConnManager

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

连接管理模块

func NewConnManager

func NewConnManager() *ConnManager

创建一个链接管理

func (*ConnManager) Add

func (connMgr *ConnManager) Add(conn liFace.IConnection)

添加链接

func (*ConnManager) BroadcastMsg

func (connMgr *ConnManager) BroadcastMsg(msgName string, data []byte)

func (*ConnManager) ClearConn

func (connMgr *ConnManager) ClearConn()

清除并停止所有连接

func (*ConnManager) Get

func (connMgr *ConnManager) Get(connID uint32) (liFace.IConnection, error)

利用ConnID获取链接

func (*ConnManager) Len

func (connMgr *ConnManager) Len() int

获取当前连接

func (*ConnManager) Remove

func (connMgr *ConnManager) Remove(conn liFace.IConnection)

删除连接

type Connection

type Connection struct {
	//当前Conn属于哪个Server
	TcpNetWork liFace.INetWork
	//当前连接的socket TCP套接字
	Conn *net.TCPConn
	//当前连接的ID 也可以称作为SessionID,ID全局唯一
	ConnID uint32

	//消息管理msgName和对应处理方法的消息管理模块
	MsgHandler liFace.IMsgHandle
	// contains filtered or unexported fields
}

func NewConnection

func NewConnection(netWork liFace.INetWork, conn *net.TCPConn, connID uint32, msgHandler liFace.IMsgHandle) *Connection

创建连接的方法

func (*Connection) CheckRpc

func (c *Connection) CheckRpc(seq uint32, rsp liFace.IMessage) bool

func (*Connection) GetConnID

func (c *Connection) GetConnID() uint32

获取当前连接ID

func (*Connection) GetProperty

func (c *Connection) GetProperty(key string) (interface{}, error)

获取链接属性

func (*Connection) GetTCPConnection

func (c *Connection) GetTCPConnection() *net.TCPConn

从当前连接获取原始的socket TCPConn

func (*Connection) GetTcpNetWork

func (c *Connection) GetTcpNetWork() liFace.INetWork

func (*Connection) IsClose

func (c *Connection) IsClose() bool

func (*Connection) RemoteAddr

func (c *Connection) RemoteAddr() net.Addr

获取远程客户端地址信息

func (*Connection) RemoveProperty

func (c *Connection) RemoveProperty(key string)

移除链接属性

func (*Connection) RpcCall

func (c *Connection) RpcCall(msgName string, data []byte, success func(rsp liFace.IRespond), fail func(rsp liFace.IRespond)) error

直接将Message数据发送数据给远程的TCP客户端

func (*Connection) RpcPush

func (c *Connection) RpcPush(msgName string, data []byte) error

func (*Connection) RpcReply

func (c *Connection) RpcReply(msgName string, seq uint32, data []byte) error

func (*Connection) SetProperty

func (c *Connection) SetProperty(key string, value interface{})

设置链接属性

func (*Connection) Start

func (c *Connection) Start()

启动连接,让当前连接开始工作

func (*Connection) StartReader

func (c *Connection) StartReader()

读消息Goroutine,用于从客户端中读取数据

func (*Connection) StartWriter

func (c *Connection) StartWriter()

写消息Goroutine, 用户将数据发送给客户端

func (*Connection) Stop

func (c *Connection) Stop()

停止连接,结束当前连接状态M

type DataPack

type DataPack struct{}

封包拆包类实例,暂时不需要成员

func NewDataPack

func NewDataPack() *DataPack

封包拆包实例初始化方法

func (*DataPack) GetHeadLen

func (dp *DataPack) GetHeadLen() uint32

获取包头长度方法

func (*DataPack) Pack

func (dp *DataPack) Pack(msg liFace.IMessage) ([]byte, error)

封包方法(压缩数据)

func (*DataPack) Unpack

func (dp *DataPack) Unpack(binaryData []byte) (liFace.IMessage, error)

拆包方法(解压数据)

type Message

type Message struct {
	NameLen uint32
	BodyLen uint32 //消息的长度
	Name    []byte //消息的ID
	Seq     uint32 //序列号
	Body    []byte //消息的内容
	Type    byte
}

func NewMsgPackage

func NewMsgPackage(id string, data []byte) *Message

创建一个Message消息包

func (*Message) GetBody

func (msg *Message) GetBody() []byte

获取消息内容

func (*Message) GetBodyLen

func (msg *Message) GetBodyLen() uint32

获取消息数据段长度

func (*Message) GetMsgName

func (msg *Message) GetMsgName() string

获取消息ID

func (*Message) GetMsgNameByte

func (msg *Message) GetMsgNameByte() []byte

func (*Message) GetNameLen

func (msg *Message) GetNameLen() uint32

func (*Message) GetSeq

func (msg *Message) GetSeq() uint32

func (*Message) GetType

func (msg *Message) GetType() byte

func (*Message) SetBody

func (msg *Message) SetBody(data []byte)

设置消息内容

func (*Message) SetBodyLen

func (msg *Message) SetBodyLen(len uint32)

设置消息数据段长度

func (*Message) SetMsgName

func (msg *Message) SetMsgName(name string)

设置消息ID

func (*Message) SetMsgNameByte

func (msg *Message) SetMsgNameByte(data []byte)

func (*Message) SetNameLen

func (msg *Message) SetNameLen(len uint32)

func (*Message) SetSeq

func (msg *Message) SetSeq(seq uint32)

func (*Message) SetType

func (msg *Message) SetType(t byte)

type MsgHandle

type MsgHandle struct {
	Apis           map[string]*list.List  //存放每个msgName 所对应的处理方法的map属性
	WorkerPoolSize uint32                 //业务工作Worker池的数量
	TaskQueue      []chan liFace.IRequest //Worker负责取任务的消息队列
	TaskExit       []chan bool
}

func NewMsgHandle

func NewMsgHandle(workerSize uint32) *MsgHandle

func (*MsgHandle) AddRouter

func (mh *MsgHandle) AddRouter(router liFace.IRouter)

为消息添加具体的处理逻辑

func (*MsgHandle) DoMsgHandler

func (mh *MsgHandle) DoMsgHandler(request liFace.IRequest, respond liFace.IMessage)

马上以非阻塞方式处理消息

func (*MsgHandle) SendMsgToTaskQueue

func (mh *MsgHandle) SendMsgToTaskQueue(request liFace.IRequest)

将消息交给TaskQueue,由worker进行处理

func (*MsgHandle) StartWorkerPool

func (mh *MsgHandle) StartWorkerPool()

启动worker工作池

func (*MsgHandle) StopWorkerPool

func (mh *MsgHandle) StopWorkerPool()

type Request

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

func (*Request) GetConnection

func (r *Request) GetConnection() liFace.IConnection

获取请求连接信息

func (*Request) GetMessage

func (r *Request) GetMessage() liFace.IMessage

func (*Request) SetMessage

func (r *Request) SetMessage(msg liFace.IMessage)

type Respond

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

func (*Respond) GetData

func (r *Respond) GetData() []byte

获取响应消息的数据

func (*Respond) GetMessage

func (r *Respond) GetMessage() liFace.IMessage

func (*Respond) GetRequest

func (r *Respond) GetRequest() liFace.IRequest

func (*Respond) SetMessage

func (r *Respond) SetMessage(msg liFace.IMessage)

func (*Respond) SetRequest

func (r *Respond) SetRequest(req liFace.IRequest)

type Server

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

iServer 接口实现,定义一个Server服务类

func NewServer

func NewServer() *Server

创建一个服务器句柄

func (*Server) AddRouter

func (s *Server) AddRouter(router liFace.IRouter)

路由功能:给当前服务注册一个路由业务方法,供客户端链接处理使用

func (*Server) CallOnConnStart

func (s *Server) CallOnConnStart(conn liFace.IConnection)

调用连接OnConnStart Hook函数

func (*Server) CallOnConnStop

func (s *Server) CallOnConnStop(conn liFace.IConnection)

调用连接OnConnStop Hook函数

func (*Server) GetConnMgr

func (s *Server) GetConnMgr() liFace.IConnManager

得到链接管理

func (*Server) GetHost

func (s *Server) GetHost() string

func (*Server) GetId

func (s *Server) GetId() string

func (*Server) GetName

func (s *Server) GetName() string

func (*Server) GetPort

func (s *Server) GetPort() int

func (*Server) Running

func (s *Server) Running()

运行服务

func (*Server) SetOnConnStart

func (s *Server) SetOnConnStart(hookFunc func(liFace.IConnection))

设置该Server的连接创建时Hook函数

func (*Server) SetOnConnStop

func (s *Server) SetOnConnStop(hookFunc func(liFace.IConnection))

设置该Server的连接断开时的Hook函数

func (*Server) Start

func (s *Server) Start()

开启网络服务

func (*Server) Stop

func (s *Server) Stop()

停止服务

type WsConnection

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

客户端连接

func NewWsConnection

func NewWsConnection(wsSocket *websocket.Conn, cid uint64) *WsConnection

func (*WsConnection) Close

func (wsConn *WsConnection) Close()

func (*WsConnection) GetId

func (wsConn *WsConnection) GetId() uint64

func (*WsConnection) GetProperty

func (c *WsConnection) GetProperty(key string) (interface{}, error)

获取链接属性

func (*WsConnection) Push

func (wsConn *WsConnection) Push(proxyName string, funcName string, body []byte)

func (*WsConnection) RemoveProperty

func (c *WsConnection) RemoveProperty(key string)

移除链接属性

func (*WsConnection) Response

func (wsConn *WsConnection) Response(proxyName string, funcName string, seq uint32, body []byte)

func (*WsConnection) Running

func (wsConn *WsConnection) Running()

func (*WsConnection) SetOnClose

func (wsConn *WsConnection) SetOnClose(hookFunc func(*WsConnection))

func (*WsConnection) SetOnMessage

func (wsConn *WsConnection) SetOnMessage(hookFunc func(*WsConnection, *WsMessageReq, *WsMessageRsp))

func (*WsConnection) SetProperty

func (c *WsConnection) SetProperty(key string, value interface{})

设置链接属性

type WsMessageReq

type WsMessageReq struct {
	MsgType int
	Seq     uint32
	Data    []byte
}

type WsMessageRsp

type WsMessageRsp struct {
	MsgType   int
	Seq       uint32
	FuncName  string
	ProxyName string
	Data      []byte
}

Jump to

Keyboard shortcuts

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