znet

package
v0.0.0-...-a0c5203 Latest Latest
Warning

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

Go to latest
Published: Jul 1, 2020 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewServer

func NewServer() ziface.IServer

Types

type BaseRouter

type BaseRouter struct {
}

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

func (*BaseRouter) Handle

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

在处理conn业务的主方法Hook

func (*BaseRouter) PostHandle

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

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

func (*BaseRouter) PreHandle

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

这里之所以BaseRouter的方法都为空,是有的Router不希望有PreHandle/PostHandle 在处理conn业务之前的钩子方法Hook

type Connection

type Connection struct {
	// 当前连接的socket TCP套接字
	Conn *net.TCPConn

	// 连接的ID
	ConnID uint32

	// 当前的连接状态
	IsClosed bool

	// 告知当前连接已经退出 channel
	ExitBuffChan chan bool

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

连接模块

func NewConnection

func NewConnection(conn *net.TCPConn, connID uint32, msgHandler ziface.IMsgHandle) *Connection

初始化连接模块的方法

func (*Connection) GetConnID

func (c *Connection) GetConnID() uint32

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

func (*Connection) GetRemoteAddr

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

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

func (*Connection) GetTCPConnection

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

获取当前连接的绑定socket conn

func (*Connection) SendMsg

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

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

func (*Connection) Start

func (c *Connection) Start()

启动连接

func (*Connection) StartReader

func (c *Connection) StartReader()

连接的读业务方法

func (*Connection) StartWriter

func (c *Connection) StartWriter()

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

func (*Connection) Stop

func (c *Connection) Stop()

停止连接

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 ziface.IMessage) ([]byte, error)

封包方法(压缩数据)

func (*DataPack) Unpack

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

拆包方法(解压数据)

type Message

type Message struct {
	ID      uint32 // 消息的ID
	DataLen uint32 // 消息的长度
	Data    []byte // 消息的内容
}

func NewMsgPackage

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

创建一个Message消息包

func (*Message) GetData

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

获取消息的内容

func (*Message) GetDataLen

func (m *Message) GetDataLen() uint32

获取消息的长度

func (*Message) GetMsgId

func (m *Message) GetMsgId() uint32

获取消息的ID

func (*Message) SetData

func (m *Message) SetData(data []byte)

设置消息的内容

func (*Message) SetDataLen

func (m *Message) SetDataLen(len uint32)

设置消息的长度

func (*Message) SetMsgId

func (m *Message) SetMsgId(id uint32)

设置消息的ID

type MsgHandle

type MsgHandle struct {
	Apis map[uint32]ziface.IRouter //存放每个MsgId 所对应的处理方法的map属性
}

func NewMsgHandle

func NewMsgHandle() *MsgHandle

func (*MsgHandle) AddRouter

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

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

func (*MsgHandle) DoMsgHandler

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

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

type Request

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

func (*Request) GetConnection

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

得到当前连接

func (*Request) GetData

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

得到当前的请求数据

func (*Request) GetMsgID

func (r *Request) GetMsgID() uint32

获取请求的消息的ID

type Server

type Server struct {
	// 名称
	Name string
	// ip版本
	IPVersion string
	// 监听的ip
	IP string
	// 监听的端口
	Port int
	// contains filtered or unexported fields
}

iserver 实现

func (*Server) AddRouter

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

func (*Server) Serve

func (s *Server) Serve()

func (*Server) Start

func (s *Server) Start()

func (*Server) Stop

func (s *Server) Stop()

Jump to

Keyboard shortcuts

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