znet

package
v1.1.5 Latest Latest
Warning

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

Go to latest
Published: Mar 22, 2023 License: GPL-3.0 Imports: 14 Imported by: 180

Documentation

Overview

服务端Server的链接模块

Index

Constants

View Source
const (
	PRE_HANDLE  ziface.HandleStep = iota //PreHandle 预处理
	HANDLE                               //Handle 处理
	POST_HANDLE                          //PostHandle 后处理

	HANDLE_OVER
)

Variables

View Source
var AcceptDelay *acceptDelay

Functions

func NewClient added in v1.1.0

func NewClient(ip string, port int, opts ...ClientOption) ziface.IClient

func NewServer

func NewServer(opts ...Option) ziface.IServer

NewServer 创建一个服务器句柄

func NewUserConfServer added in v1.0.2

func NewUserConfServer(config *utils.Config, opts ...Option) ziface.IServer

NewServer 创建一个服务器句柄

Types

type BaseRouter

type BaseRouter struct{}

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

func (*BaseRouter) Handle

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

Handle -

func (*BaseRouter) PostHandle

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

PostHandle -

func (*BaseRouter) PreHandle

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

PreHandle -

type Client added in v1.1.0

type Client struct {
	//目标链接服务器的IP
	Ip string
	//目标链接服务器的端口
	Port int
	// contains filtered or unexported fields
}

func (*Client) AddInterceptor added in v1.1.1

func (this *Client) AddInterceptor(interceptor ziface.Interceptor)

func (*Client) AddRouter added in v1.1.0

func (c *Client) AddRouter(msgID uint32, router ziface.IRouter)

func (*Client) Conn added in v1.1.0

func (c *Client) Conn() ziface.IConnection

func (*Client) GetLengthField added in v1.1.1

func (this *Client) GetLengthField() *ziface.LengthField

func (*Client) GetMsgHandler added in v1.1.0

func (c *Client) GetMsgHandler() ziface.IMsgHandle

func (*Client) GetOnConnStart added in v1.1.0

func (c *Client) GetOnConnStart() func(ziface.IConnection)

GetOnConnStart 得到该Server的连接创建时Hook函数

func (*Client) GetOnConnStop added in v1.1.0

func (c *Client) GetOnConnStop() func(ziface.IConnection)

得到该Server的连接断开时的Hook函数

func (*Client) GetPacket added in v1.1.0

func (c *Client) GetPacket() ziface.IDataPack

获取Client绑定的数据协议封包方式

func (*Client) SetDecoder added in v1.1.3

func (this *Client) SetDecoder(decoder ziface.IDecoder)

func (*Client) SetOnConnStart added in v1.1.0

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

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

func (*Client) SetOnConnStop added in v1.1.0

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

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

func (*Client) SetPacket added in v1.1.0

func (c *Client) SetPacket(packet ziface.IDataPack)

设置Client绑定的数据协议封包方式

func (*Client) Start added in v1.1.0

func (c *Client) Start()

启动客户端,发送请求且建立链接

func (*Client) StartHeartBeat added in v1.1.0

func (c *Client) StartHeartBeat(interval time.Duration)

启动心跳检测

func (*Client) StartHeartBeatWithOption added in v1.1.0

func (c *Client) StartHeartBeatWithOption(interval time.Duration, option *ziface.HeartBeatOption)

启动心跳检测(自定义回调)

func (*Client) Stop added in v1.1.0

func (c *Client) Stop()

type ClientOption added in v1.1.0

type ClientOption func(c *Client)

Client的客户端Option

func WithPacketClient added in v1.1.0

func WithPacketClient(pack ziface.IDataPack) ClientOption

Client的客户端Option

type ConnManager

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

ConnManager 连接管理模块

func NewConnManager

func NewConnManager() *ConnManager

NewConnManager 创建一个链接管理

func (*ConnManager) Add

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

Add 添加链接

func (*ConnManager) ClearConn

func (connMgr *ConnManager) ClearConn()

ClearConn 清除并停止所有连接

func (*ConnManager) Get

func (connMgr *ConnManager) Get(connID uint64) (ziface.IConnection, error)

Get 利用ConnID获取链接

func (*ConnManager) GetAllConnID added in v1.1.0

func (connMgr *ConnManager) GetAllConnID() []uint64

GetAllConnID 获取所有连接的ID

func (*ConnManager) Len

func (connMgr *ConnManager) Len() int

Len 获取当前连接

func (*ConnManager) Remove

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

Remove 删除连接

type Connection

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

Connection Tcp连接模块 用于处理Tcp连接的读写业务 一个连接对应一个Connection

func (*Connection) Context added in v1.0.1

func (c *Connection) Context() context.Context

返回ctx,用于用户自定义的go程获取连接退出状态

func (*Connection) GetConnID

func (c *Connection) GetConnID() uint64

GetConnID 获取当前连接ID

func (*Connection) GetConnection added in v1.1.0

func (c *Connection) GetConnection() net.Conn

func (*Connection) GetProperty

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

GetProperty 获取链接属性

func (*Connection) IsAlive added in v1.1.0

func (c *Connection) IsAlive() bool

func (*Connection) LocalAddr added in v1.1.0

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

LocalAddr 获取链接本地地址信息

func (*Connection) RemoteAddr

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

RemoteAddr 获取链接远程地址信息

func (*Connection) RemoveProperty

func (c *Connection) RemoveProperty(key string)

RemoveProperty 移除链接属性

func (*Connection) Send added in v1.1.1

func (c *Connection) Send(data []byte) error

func (*Connection) SendBuffMsg

func (c *Connection) SendBuffMsg(msgID uint32, data []byte) error

SendBuffMsg 发生BuffMsg

func (*Connection) SendMsg

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

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

func (*Connection) SendToQueue added in v1.1.1

func (c *Connection) SendToQueue(data []byte) error

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 读消息Goroutine,用于从客户端中读取数据

func (*Connection) StartWriter

func (c *Connection) StartWriter()

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

func (*Connection) Stop

func (c *Connection) Stop()

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

type HeartbeatChecker added in v1.1.0

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

func NewHeartbeatCheckerC added in v1.1.0

func NewHeartbeatCheckerC(interval time.Duration, client ziface.IClient) *HeartbeatChecker

NewHeartbeatCheckerC Client创建心跳检测器

func NewHeartbeatCheckerS added in v1.1.0

func NewHeartbeatCheckerS(interval time.Duration, server ziface.IServer) *HeartbeatChecker

NewHeartbeatCheckerS Server创建心跳检测器

func (*HeartbeatChecker) BindRouter added in v1.1.0

func (h *HeartbeatChecker) BindRouter(msgID uint32, router ziface.IRouter)

func (*HeartbeatChecker) SetHeartbeatMsgFunc added in v1.1.0

func (h *HeartbeatChecker) SetHeartbeatMsgFunc(f ziface.HeartBeatMsgFunc)

func (*HeartbeatChecker) SetOnRemoteNotAlive added in v1.1.0

func (h *HeartbeatChecker) SetOnRemoteNotAlive(f ziface.OnRemoteNotAlive)

func (*HeartbeatChecker) Start added in v1.1.0

func (h *HeartbeatChecker) Start()

启动心跳检测

func (*HeartbeatChecker) Stop added in v1.1.0

func (h *HeartbeatChecker) Stop()

停止心跳检测

type HeatBeatDefaultRouter added in v1.1.0

type HeatBeatDefaultRouter struct {
	BaseRouter
}

收到remote心跳消息的默认回调路由业务

func (*HeatBeatDefaultRouter) Handle added in v1.1.0

func (r *HeatBeatDefaultRouter) Handle(req ziface.IRequest)

Handle -

type MsgHandle

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

MsgHandle 对消息的处理回调模块

func NewMsgHandle

func NewMsgHandle() *MsgHandle

NewMsgHandle 创建MsgHandle

func (*MsgHandle) AddInterceptor added in v1.1.1

func (this *MsgHandle) AddInterceptor(interceptor ziface.Interceptor)

func (*MsgHandle) AddRouter

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

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

func (*MsgHandle) Decode added in v1.1.1

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

func (*MsgHandle) DoMsgHandler

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

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

func (*MsgHandle) Intercept added in v1.1.1

func (this *MsgHandle) Intercept(chain ziface.Chain) ziface.Response

func (*MsgHandle) SendMsgToTaskQueue

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

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

func (*MsgHandle) StartOneWorker

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

StartOneWorker 启动一个Worker工作流程

func (*MsgHandle) StartWorkerPool

func (mh *MsgHandle) StartWorkerPool()

StartWorkerPool 启动worker工作池

type Option added in v1.0.1

type Option func(s *Server)

Server的服务Option

func WithPacket added in v1.0.1

func WithPacket(pack ziface.IDataPack) Option

只要实现Packet 接口可自由实现数据包解析格式,如果没有则使用默认解析格式

type Request

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

Request 请求

func NewRequest added in v1.0.2

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

func (*Request) Abort added in v1.0.2

func (r *Request) Abort()

func (*Request) BindRouter added in v1.0.2

func (r *Request) BindRouter(router ziface.IRouter)

func (*Request) Call added in v1.0.2

func (r *Request) Call()

func (*Request) GetConnection

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

GetConnection 获取请求连接信息

func (*Request) GetData

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

GetData 获取请求消息的数据

func (*Request) GetMessage added in v1.1.1

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

GetMessage 获取消息实体

func (*Request) GetMsgID

func (r *Request) GetMsgID() uint32

GetMsgID 获取请求的消息的ID

func (*Request) GetResponse added in v1.1.1

func (r *Request) GetResponse() ziface.Response

func (*Request) Goto added in v1.0.2

func (r *Request) Goto(step ziface.HandleStep)

func (*Request) SetResponse added in v1.1.1

func (r *Request) SetResponse(response ziface.Response)

type Server

type Server struct {
	//服务器的名称
	Name string
	//tcp4 or other
	IPVersion string
	//服务绑定的IP地址
	IP string
	//服务绑定的端口
	Port int

	//当前Server的链接管理器
	ConnMgr ziface.IConnManager
	// contains filtered or unexported fields
}

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

func (*Server) AddInterceptor added in v1.1.1

func (this *Server) AddInterceptor(interceptor ziface.Interceptor)

func (*Server) AddRouter

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

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

func (*Server) GetConnMgr

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

GetConnMgr 得到链接管理

func (*Server) GetLengthField added in v1.1.1

func (this *Server) GetLengthField() *ziface.LengthField

func (*Server) GetMsgHandler added in v1.1.0

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

func (*Server) GetOnConnStart added in v1.1.0

func (s *Server) GetOnConnStart() func(ziface.IConnection)

GetOnConnStart 得到该Server的连接创建时Hook函数

func (*Server) GetOnConnStop added in v1.1.0

func (s *Server) GetOnConnStop() func(ziface.IConnection)

得到该Server的连接断开时的Hook函数

func (*Server) GetPacket added in v1.1.0

func (s *Server) GetPacket() ziface.IDataPack

func (*Server) Serve

func (s *Server) Serve()

Serve 运行服务

func (*Server) SetDecoder added in v1.1.3

func (this *Server) SetDecoder(decoder ziface.IDecoder)

func (*Server) SetOnConnStart

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

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

func (*Server) SetOnConnStop

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

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

func (*Server) SetPacket added in v1.1.0

func (s *Server) SetPacket(packet ziface.IDataPack)

func (*Server) Start

func (s *Server) Start()

Start 开启网络服务

func (*Server) StartHeartBeat added in v1.1.0

func (s *Server) StartHeartBeat(interval time.Duration)

StartHeartBeat 启动心跳检测 interval 每次发送心跳的时间间隔 msgID 心跳检测消息的msgID

func (*Server) StartHeartBeatWithOption added in v1.1.0

func (s *Server) StartHeartBeatWithOption(interval time.Duration, option *ziface.HeartBeatOption)

StartHeartBeatWithFunc 启动心跳检测 msgFunc 心跳检测消息的自定义生成函数,不需要自定义可以传nil notAlive 检测到地方停止心跳的自定义处理函数,不需要自定义可以传nil

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