anet

package
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Aug 26, 2021 License: MIT Imports: 3 Imported by: 2

Documentation

Overview

@Title @Description @Author Wangwengang 2021/8/17 下午5:17 @Update Wangwengang 2021/8/17 下午5:17

@Title Connection interface @Description tcp websocket @Author Wangwengang 2021/8/17 下午4:22 @Update Wangwengang 2021/8/17 下午4:22

@Title @Description @Author Wangwengang 2021/8/17 下午5:23 @Update Wangwengang 2021/8/17 下午5:23

@Title @Description @Author Wangwengang 2021/8/17 下午5:12 @Update Wangwengang 2021/8/17 下午5:12

@Title @Description @Author Wangwengang 2021/8/17 下午5:13 @Update Wangwengang 2021/8/17 下午5:13

@Title @Description @Author Wangwengang 2021/8/17 下午5:12 @Update Wangwengang 2021/8/17 下午5:12

@Title @Description @Author Wangwengang 2021/8/17 下午5:14 @Update Wangwengang 2021/8/17 下午5:14

@Title @Description @Author Wangwengang 2021/8/17 下午5:15 @Update Wangwengang 2021/8/17 下午5:15

@Title @Description @Author Wangwengang 2021/8/17 下午5:07 @Update Wangwengang 2021/8/17 下午5:07

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ConnManager

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

连接管理抽象层

type Connection

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

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

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

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

type DataPack

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

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

type Message

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

	SetMsgID(uint32)   //设计消息ID
	SetData([]byte)    //设计消息内容
	SetDataLen(uint32) //设置消息数据段长度
}

type MsgHandle

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

消息管理抽象层

type Packet

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

type Request

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

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

type Router

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

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

type RpcxRouter added in v0.0.2

type RpcxRouter interface {
	Handle(request Request) //处理conn业务的方法
}

type Server

type Server interface {
	StartTcp()                             // 启动服务器方法
	StartWebsocket()                       // StartWebsocket
	Stop()                                 // 停止服务器方法
	Serve()                                //开启业务服务方法
	AddRouter(msgID uint32, router Router) //路由功能:给当前服务注册一个路由业务方法,供客户端链接处理使用
	SetRpcxRouter(router RpcxRouter)
	GetConnMgr() ConnManager         //得到链接管理
	SetOnConnStart(func(Connection)) //设置该Server的连接创建时Hook函数
	SetOnConnStop(func(Connection))  //设置该Server的连接断开时的Hook函数
	CallOnConnStart(conn Connection) //调用连接OnConnStart Hook函数
	CallOnConnStop(conn Connection)  //调用连接OnConnStop Hook函数
	Packet() Packet
}

Directories

Path Synopsis
@Title @Description @Author Wangwengang 2021/8/17 下午5:21 @Update Wangwengang 2021/8/17 下午5:21 @Title @Description @Author Wangwengang 2021/8/17 下午5:25 @Update Wangwengang 2021/8/17 下午5:25 @Title @Description @Author Wangwengang 2021/8/17 下午5:26 @Update Wangwengang 2021/8/17 下午5:26 @Title @Description @Author Wangwengang 2021/8/17 下午5:18 @Update Wangwengang 2021/8/17 下午5:18 @Title @Description @Author Wangwengang 2021/8/17 下午5:11 @Update Wangwengang 2021/8/17 下午5:11 @Title @Description @Author Wangwengang 2021/8/17 下午9:54 @Update Wangwengang 2021/8/17 下午9:54 @Title @Description @Author Wangwengang 2021/8/17 下午9:55 @Update Wangwengang 2021/8/17 下午9:55 @Title @Description @Author Wangwengang 2021/8/17 下午5:08 @Update Wangwengang 2021/8/17 下午5:08 @Title @Description @Author Wangwengang 2021/8/17 下午4:45 @Update Wangwengang 2021/8/17 下午4:45 @Title @Description @Author Wangwengang 2021/8/19 下午11:27 @Update Wangwengang 2021/8/19 下午11:27
@Title @Description @Author Wangwengang 2021/8/17 下午5:21 @Update Wangwengang 2021/8/17 下午5:21 @Title @Description @Author Wangwengang 2021/8/17 下午5:25 @Update Wangwengang 2021/8/17 下午5:25 @Title @Description @Author Wangwengang 2021/8/17 下午5:26 @Update Wangwengang 2021/8/17 下午5:26 @Title @Description @Author Wangwengang 2021/8/17 下午5:18 @Update Wangwengang 2021/8/17 下午5:18 @Title @Description @Author Wangwengang 2021/8/17 下午5:11 @Update Wangwengang 2021/8/17 下午5:11 @Title @Description @Author Wangwengang 2021/8/17 下午9:54 @Update Wangwengang 2021/8/17 下午9:54 @Title @Description @Author Wangwengang 2021/8/17 下午9:55 @Update Wangwengang 2021/8/17 下午9:55 @Title @Description @Author Wangwengang 2021/8/17 下午5:08 @Update Wangwengang 2021/8/17 下午5:08 @Title @Description @Author Wangwengang 2021/8/17 下午4:45 @Update Wangwengang 2021/8/17 下午4:45 @Title @Description @Author Wangwengang 2021/8/19 下午11:27 @Update Wangwengang 2021/8/19 下午11:27

Jump to

Keyboard shortcuts

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