ziface

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Dec 15, 2021 License: GPL-3.0 Imports: 4 Imported by: 0

Documentation

Overview

Package ziface 主要提供zinx全部抽象层接口定义. 包括:

		IServer 服务mod接口
		IRouter 路由mod接口
		IConnection 连接mod层接口
     IMessage 消息mod接口
		IDataPack 消息拆解接口
     IMsgHandler 消息处理及协程池接口

当前文件描述: @Title iconnection.go @Description 全部连接相关方法声明 @Author Aceld - Thu Mar 11 10:32:29 CST 2019

Package ziface 主要提供zinx全部抽象层接口定义. 包括:

		IServer 服务mod接口
		IRouter 路由mod接口
		IConnection 连接mod层接口
     IMessage 消息mod接口
		IDataPack 消息拆解接口
     IMsgHandler 消息处理及协程池接口

当前文件描述: @Title iconnmanager.go @Description 连接管理相关,包括添加、删除、通过一个连接ID获得连接对象,当前连接数量、清空全部连接等方法 @Author Aceld - Thu Mar 11 10:32:29 CST 2019

Package ziface 主要提供zinx全部抽象层接口定义. 包括:

		IServer 服务mod接口
		IRouter 路由mod接口
		IConnection 连接mod层接口
     IMessage 消息mod接口
		IDataPack 消息拆解接口
     IMsgHandler 消息处理及协程池接口

当前文件描述: @Title idatapack.go @Description 消息的打包和解包方法 @Author Aceld - Thu Mar 11 10:32:29 CST 2019

Package ziface 主要提供zinx全部抽象层接口定义. 包括:

		IServer 服务mod接口
		IRouter 路由mod接口
		IConnection 连接mod层接口
     IMessage 消息mod接口
		IDataPack 消息拆解接口
     IMsgHandler 消息处理及协程池接口

当前文件描述: @Title imessage.go @Description 提供消息的基本方法 @Author Aceld - Thu Mar 11 10:32:29 CST 2019

Package ziface 主要提供zinx全部抽象层接口定义. 包括:

		IServer 服务mod接口
		IRouter 路由mod接口
		IConnection 连接mod层接口
     IMessage 消息mod接口
		IDataPack 消息拆解接口
     IMsgHandler 消息处理及协程池接口

当前文件描述: @Title imsghandler.go @Description 提供worker启动、处理消息业务调用等接口 @Author Aceld - Thu Mar 11 10:32:29 CST 2019

Package ziface 主要提供zinx全部抽象层接口定义. 包括:

		IServer 服务mod接口
		IRouter 路由mod接口
		IConnection 连接mod层接口
     IMessage 消息mod接口
		IDataPack 消息拆解接口
     IMsgHandler 消息处理及协程池接口

当前文件描述: @Title irequest.go @Description 提供连接请求全部接口声明 @Author Aceld - Thu Mar 11 10:32:29 CST 2019

Package ziface 主要提供zinx全部抽象层接口定义. 包括:

		IServer 服务mod接口
		IRouter 路由mod接口
		IConnection 连接mod层接口
     IMessage 消息mod接口
		IDataPack 消息拆解接口
     IMsgHandler 消息处理及协程池接口

当前文件描述: @Title irouter.go @Description 提供消息路由全部接口声明 @Author Aceld - Thu Mar 11 10:32:29 CST 2019

Package ziface 主要提供zinx全部抽象层接口定义. 包括:

		IServer 服务mod接口
		IRouter 路由mod接口
		IConnection 连接mod层接口
     IMessage 消息mod接口
		IDataPack 消息拆解接口
     IMsgHandler 消息处理及协程池接口

当前文件描述: @Title iserver.go @Description 提供Server抽象层全部接口声明 @Author Aceld - Thu Mar 11 10:32:29 CST 2019

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type IConnManager

type IConnManager interface {
	Add(conn IConnection)                   //添加链接
	Remove(conn IConnection)                //删除连接
	Get(connID uint32) (IConnection, error) //利用ConnID获取链接
	Len() int                               //获取当前连接
	ClearConn()                             //删除并停止所有链接
}

IConnManager 连接管理抽象层

type IConnection

type IConnection interface {
	Start()                   //启动连接,让当前连接开始工作
	Stop()                    //停止连接,结束当前连接状态M
	Context() context.Context //返回ctx,用于用户自定义的go程获取连接退出状态

	GetTCPConnection() *websocket.Conn //从当前连接获取原始的socket TCPConn
	GetConnID() uint32                 //获取当前连接ID
	RemoteAddr() net.Addr              //获取远程客户端地址信息

	SendMsg(msgID uint16, msgType int, data []byte) error     //直接将Message数据发送数据给远程的TCP客户端(无缓冲)
	SendBuffMsg(msgID uint16, msgType int, data []byte) error //直接将Message数据发送给远程的TCP客户端(有缓冲)
	SendBinaryMsg(msgID uint16, data []byte) error
	SendBinaryBuffMsg(msgID uint16, data []byte) error

	SetProperty(key string, value interface{})   //设置链接属性
	GetProperty(key string) (interface{}, error) //获取链接属性
	RemoveProperty(key string)                   //移除链接属性
}

IConnection 定义连接接口

type IDataPack

type IDataPack interface {
	GetHeadLen() uint32                //获取包头长度方法
	Pack(msg IMessage) ([]byte, error) //封包方法
	Unpack([]byte) (IMessage, error)   //拆包方法
}

封包数据和拆包数据 直接面向TCP连接中的数据流,为传输数据添加头部信息,用于处理TCP粘包问题。

type IMessage

type IMessage interface {
	GetDataLen() uint16 //获取消息数据段长度
	GetMsgID() uint16   //获取消息ID
	GetData() []byte    //获取消息内容

	SetMsgID(uint16)   //设计消息ID
	SetData([]byte)    //设计消息内容
	SetMsgType(int)    //设置消息类型 websocket
	SetDataLen(uint16) //设置消息数据段长度
	ToString()         //输出日志
}

将请求的一个消息封装到message中,定义抽象层接口

type IMsgHandle

type IMsgHandle interface {
	DoMsgHandler(request IRequest)          //马上以非阻塞方式处理消息
	AddRouter(msgID uint16, router IRouter) //为消息添加具体的处理逻辑
	StartWorkerPool()                       //启动worker工作池
	SendMsgToTaskQueue(request IRequest)    //将消息交给TaskQueue,由worker进行处理
}

IMsgHandle 消息管理抽象层

type IRequest

type IRequest interface {
	GetConnection() IConnection //获取请求连接信息
	GetData() []byte            //获取请求消息的数据
	GetMsgID() uint16           //获取请求的消息ID
}

IRequest 接口: 实际上是把客户端请求的链接信息 和 请求的数据 包装到了 Request里

type IRouter

type IRouter interface {
	PreHandle(request IRequest)  //在处理conn业务之前的钩子方法
	Handle(request IRequest)     //处理conn业务的方法
	PostHandle(request IRequest) //处理conn业务之后的钩子方法
}

路由接口, 这里面路由是 使用框架者给该链接自定的 处理业务方法 路由里的IRequest 则包含用该链接的链接信息和该链接的请求数据信息

type IServer

type IServer interface {
	Start(c *gin.Context)                   //启动服务器方法
	Stop()                                  //停止服务器方法
	Serve(c *gin.Context)                   //开启业务服务方法
	AddRouter(msgID uint16, router IRouter) //路由功能:给当前服务注册一个路由业务方法,供客户端链接处理使用
	GetConnMgr() IConnManager               //得到链接管理
	SetOnConnStart(func(IConnection))       //设置该Server的连接创建时Hook函数
	SetOnConnStop(func(IConnection))        //设置该Server的连接断开时的Hook函数
	CallOnConnStart(conn IConnection)       //调用连接OnConnStart Hook函数
	CallOnConnStop(conn IConnection)        //调用连接OnConnStop Hook函数
	Packet() Packet
}

IServer 定义服务接口

type Packet

type Packet interface {
	Unpack(binaryData []byte) (IMessage, error)
	Pack(msg IMessage) ([]byte, error)
	GetHeadLen() uint32
}

Jump to

Keyboard shortcuts

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