znet

package
v1.0.5 Latest Latest
Warning

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

Go to latest
Published: Jul 25, 2023 License: AFL-3.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultHeadLen = 8
)

Variables

This section is empty.

Functions

func NewServer

func NewServer(configPath string) ziface.IServer

NewServer 初始化服务器

Types

type BaseRouter

type BaseRouter struct{}

BaseRouter 实现router时候,先嵌入这个BaseRouter基类, 然后根据需要对这个基类的方法进行重写就行了 所以BaseRouter的方法都为空 是因为有些Router不需要PreHandle、PostHandle这两个业务

func (*BaseRouter) Handle

func (br *BaseRouter) Handle(request ziface.IRequest)

Handle 在处理conn业务的主方法hook

func (*BaseRouter) PostHandle

func (br *BaseRouter) PostHandle(request ziface.IRequest)

PostHandle 在处理conn业务之后的钩子方法Hook

func (*BaseRouter) PreHandle

func (br *BaseRouter) PreHandle(request ziface.IRequest)

PreHandle 在处理conn业务之前的钩子方法Hook

type ConnManager

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

func NewConnManager

func NewConnManager() *ConnManager

NewConnManager 创建当前连接的方法

func (*ConnManager) AddConn

func (connMgr *ConnManager) AddConn(conn ziface.IConnection)

AddConn 添加连接

func (*ConnManager) ClearConn

func (connMgr *ConnManager) ClearConn()

ClearConn 清理并终止所有的连接

func (*ConnManager) GetConn

func (connMgr *ConnManager) GetConn(connID uint32) (ziface.IConnection, error)

GetConn 根据connID获取连接

func (*ConnManager) GetConnCount

func (connMgr *ConnManager) GetConnCount() int

GetConnCount 得到当前连接总数

func (*ConnManager) RemoveConn

func (connMgr *ConnManager) RemoveConn(conn ziface.IConnection)

RemoveConn 删除连接

type Connection

type Connection struct {
	// 当前Conn属于哪个server
	TcpServer ziface.IServer
	// 当前连接的socket TCP套接字
	Conn *net.TCPConn

	// 连接ID
	ConnID uint32

	// 告知当前连接已经退出/停止的 channel
	ExitChan chan bool

	// 当前连接所绑定的处理业务方法Router
	MsgHandler ziface.IMsgHandler
	// contains filtered or unexported fields
}

Connection 连接模块

func NewConnection

func NewConnection(server ziface.IServer, conn *net.TCPConn, connID uint32) *Connection

NewConnection 初始化连接模块的方法

func (*Connection) GetConnID

func (c *Connection) GetConnID() uint32

GetConnID 获取当前连接模块的连接ID

func (*Connection) GetProperty

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

GetProperty 获取连接属性

func (*Connection) GetTcpConnection

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

GetTcpConnection 获取当前连接的绑定的socket conn

func (*Connection) RemoteAddr

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

RemoteAddr 获取远程客户端的 TCP状态 IP port

func (*Connection) RemoveProperty

func (c *Connection) RemoveProperty(key string)

RemoveProperty 删除连接属性

func (*Connection) SendMsg

func (c *Connection) SendMsg(msgId uint32, data []byte) error

SendMsg 提供一个SendMsg方法 将我们要发送给客户端的数据,先进行封包,再发送

func (*Connection) SetProperty

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

SetProperty 设置连接属性

func (*Connection) Start

func (c *Connection) Start()

Start 启动连接 让当前的连接准备开始工作

func (*Connection) StartReader

func (c *Connection) StartReader()

StartReader 连接的读业务方法

func (*Connection) StartWriter

func (c *Connection) StartWriter()

StartWriter 专门发送消息给客户端的模块

func (*Connection) Stop

func (c *Connection) Stop()

Stop 停止连接 结束当前连接的工作

type DataPack

type DataPack struct {
}

DataPack 封包、拆包的具体模块

func NewDataPack

func NewDataPack() *DataPack

NewDataPack 拆包封包实例的一个初始化方法

func (*DataPack) GetHeadLen

func (d *DataPack) GetHeadLen() uint32

GetHeadLen 获取包的头的长度方法

func (*DataPack) Pack

func (d *DataPack) Pack(msg ziface.IMessage) ([]byte, error)

Pack 封包方法 /dataLen/msgId/data/

func (*DataPack) UnPack

func (d *DataPack) UnPack(binaryData []byte) (ziface.IMessage, error)

UnPack 拆包方法

type Message

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

func NewMessage

func NewMessage(id uint32, body []byte) *Message

NewMessage 创建Message消息包

func (*Message) GetMsgBody

func (m *Message) GetMsgBody() []byte

GetMsgBody 获取消息体

func (*Message) GetMsgBodyLen

func (m *Message) GetMsgBodyLen() uint32

GetMsgBodyLen 获取消息体长度

func (*Message) GetMsgId

func (m *Message) GetMsgId() uint32

GetMsgId 获取消息的ID

func (*Message) SetMsgBody

func (m *Message) SetMsgBody(body []byte)

SetMsgBody 设置消息体

func (*Message) SetMsgBodyLen

func (m *Message) SetMsgBodyLen(bodyLen uint32)

SetMsgBodyLen 设置消息体长度

func (*Message) SetMsgId

func (m *Message) SetMsgId(id uint32)

SetMsgId 设置消息的ID

type MsgHandler

type MsgHandler struct {
	// 存放每个MsgID所对应的处理方法
	Apis map[uint32]ziface.IRouter
	// 负责Worker取任务的消息队列
	TaskQueue []chan ziface.IRequest
	// 业务工作Worker池的数量
	WorkPoolSize uint32
}

func NewMsgHandler

func NewMsgHandler() *MsgHandler

NewMsgHandler 初始化/创建MsgHandler *MsgHandler

func (*MsgHandler) AddRouter

func (mh *MsgHandler) AddRouter(msgId uint32, router ziface.IRouter)

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

func (*MsgHandler) DoMsgHandler

func (mh *MsgHandler) DoMsgHandler(request ziface.IRequest)

DoMsgHandler 调度/执行对应的Router消息处理方法

func (*MsgHandler) SendMsgToTaskQueue

func (mh *MsgHandler) SendMsgToTaskQueue(request ziface.IRequest)

SendMsgToTaskQueue 将消息交给TaskQueue, 由Worker进行管理

func (*MsgHandler) StartOneWorker

func (mh *MsgHandler) StartOneWorker(workerID int, taskQueue chan ziface.IRequest)

StartOneWorker 启动一个Worker工作流程

func (*MsgHandler) StartWorkerPool

func (mh *MsgHandler) StartWorkerPool()

StartWorkerPool 启动一个Worker工作池(开启工作池的动作只能发生一次,一个zinx框架只能有一个worker工作池)

type Request

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

func NewRequest

func NewRequest(conn ziface.IConnection, msg ziface.IMessage) *Request

NewRequest creates a new request

func (*Request) GetConnection

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

GetConnection 得到当前连接

func (*Request) GetMessageBody

func (r *Request) GetMessageBody() []byte

GetMessageBody 获取消息数据

func (*Request) GetMessageID

func (r *Request) GetMessageID() uint32

GetMessageID 获取消息的ID

func (*Request) GetMessageLen

func (r *Request) GetMessageLen() uint32

GetMessageLen 获得消息的长度

type Server

type Server struct {
	// 服务器名称
	Name string
	// 服务器绑定的ip版本
	IPVersion string
	// 服务器监听的IP
	IP string
	// 服务器监听的端口
	Port int
	// 当前server的消息管理模块,用来绑定MsgID和对应的处理业务API关系
	MsgHandler ziface.IMsgHandler
	// 该server的连接管理器
	ConnMgr ziface.IConnManager
	// 该Server创建连接后自动调用的Hook函数-OnConnStart
	OnConnStart func(connection ziface.IConnection)
	// 该Server关闭连接后自动调用的Hook函数-OnConnClose
	OnConnClose func(connection ziface.IConnection)
}

Server iServer的接口实现, 定义一个Server的服务器模块

func (*Server) AddRouter

func (s *Server) AddRouter(msgID uint32, router ziface.IRouter)

AddRouter 路由功能:给当前的服务注册一个路由方法;供客户端的连接处理使用

func (*Server) CallOnConnClose

func (s *Server) CallOnConnClose(connection ziface.IConnection)

CallOnConnClose 调用OnConnClose 钩子函数的方法

func (*Server) CallOnConnStart

func (s *Server) CallOnConnStart(connection ziface.IConnection)

CallOnConnStart 调用OnConnStart 钩子函数的方法

func (*Server) GetConnMgr

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

GetConnMgr 获取当前Server的ConnMgr

func (*Server) GetMsgHandler

func (s *Server) GetMsgHandler() ziface.IMsgHandler

GetMsgHandler 获取当前Server的ConnMgr

func (*Server) Run

func (s *Server) Run()

Run 启动服务器

func (*Server) SetOnConnClose

func (s *Server) SetOnConnClose(f func(connection ziface.IConnection))

SetOnConnClose 注册OnConnClose 钩子函数的方法

func (*Server) SetOnConnStart

func (s *Server) SetOnConnStart(f func(connection ziface.IConnection))

SetOnConnStart 注册OnConnStar 钩子函数的方法

func (*Server) Start

func (s *Server) Start()

Start 运行服务器

func (*Server) Stop

func (s *Server) Stop()

Stop 停止服务器

Jump to

Keyboard shortcuts

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