internal

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Aug 18, 2021 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

@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 下午4:45 @Update Wangwengang 2021/8/17 下午4:45

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

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewDataPack

func NewDataPack() anet.Packet

NewDataPack 封包拆包实例初始化方法

func NewServer

func NewServer(opts ...Option) anet.Server

NewServer 创建一个服务器句柄

Types

type ConnManager

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

func NewConnManager

func NewConnManager() *ConnManager

NewConnManager 创建一个链接管理

func (*ConnManager) Add

func (connMgr *ConnManager) Add(conn anet.Connection)

Add 添加链接

func (*ConnManager) ClearConn

func (connMgr *ConnManager) ClearConn()

ClearConn 清除并停止所有连接

func (*ConnManager) ClearOneConn

func (connMgr *ConnManager) ClearOneConn(connID uint32)

ClearOneConn 利用ConnID获取一个链接 并且删除

func (*ConnManager) Get

func (connMgr *ConnManager) Get(connID uint32) (anet.Connection, error)

Get 利用ConnID获取链接

func (*ConnManager) Len

func (connMgr *ConnManager) Len() int

Len 获取当前连接

func (*ConnManager) Remove

func (connMgr *ConnManager) Remove(conn anet.Connection)

Remove 删除连接

type DataPack

type DataPack struct{}

DataPack 封包拆包类实例,暂时不需要成员

func (*DataPack) GetHeadLen

func (dp *DataPack) GetHeadLen() uint32

GetHeadLen 获取包头长度方法

func (*DataPack) Pack

func (dp *DataPack) Pack(msg anet.Message) ([]byte, error)

Pack 封包方法(压缩数据)

func (*DataPack) Unpack

func (dp *DataPack) Unpack(binaryData []byte) (anet.Message, error)

Unpack 拆包方法(解压数据)

type IRouter

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

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

type Message

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

Message 消息

func NewMsgPackage

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

NewMsgPackage 创建一个Message消息包

func (*Message) GetData

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

GetData 获取消息内容

func (*Message) GetDataLen

func (msg *Message) GetDataLen() uint32

GetDataLen 获取消息数据段长度

func (*Message) GetMsgID

func (msg *Message) GetMsgID() uint32

GetMsgID 获取消息ID

func (*Message) SetData

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

SetData 设计消息内容

func (*Message) SetDataLen

func (msg *Message) SetDataLen(len uint32)

SetDataLen 设置消息数据段长度

func (*Message) SetMsgID

func (msg *Message) SetMsgID(msgID uint32)

SetMsgID 设计消息ID

type MsgHandle

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

func NewMsgHandle

func NewMsgHandle() *MsgHandle

NewMsgHandle 创建MsgHandle

func (*MsgHandle) AddRouter

func (mh *MsgHandle) AddRouter(msgID uint32, router anet.Router)

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

func (*MsgHandle) DoMsgHandler

func (mh *MsgHandle) DoMsgHandler(request anet.Request)

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

func (*MsgHandle) SendMsgToTaskQueue

func (mh *MsgHandle) SendMsgToTaskQueue(request anet.Request)

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

func (*MsgHandle) StartOneWorker

func (mh *MsgHandle) StartOneWorker(workerID int, taskQueue chan anet.Request)

StartOneWorker 启动一个Worker工作流程

func (*MsgHandle) StartWorkerPool

func (mh *MsgHandle) StartWorkerPool()

StartWorkerPool 启动worker工作池

type Option

type Option func(s *TcpServer)

func WithPacket

func WithPacket(pack anet.Packet) Option

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

type Request

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

Request 请求

func (*Request) GetConnection

func (r *Request) GetConnection() anet.Connection

GetConnection 获取请求连接信息

func (*Request) GetData

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

GetData 获取请求消息的数据

func (*Request) GetMsgID

func (r *Request) GetMsgID() uint32

GetMsgID 获取请求的消息的ID

type TcpConnection

type TcpConnection struct {
	//当前Conn属于哪个Server
	TCPServer anet.Server
	//当前连接的socket TCP套接字
	Conn *net.TCPConn
	//当前连接的ID 也可以称作为SessionID,ID全局唯一
	ConnID uint32
	//消息管理MsgID和对应处理方法的消息管理模块
	MsgHandler anet.MsgHandle

	sync.RWMutex
	// contains filtered or unexported fields
}

func NewConnection

func NewConnection(server anet.Server, conn *net.TCPConn, connID uint32, msgHandler anet.MsgHandle) *TcpConnection

NewConnection 创建连接的方法

func (*TcpConnection) Context

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

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

func (*TcpConnection) GetConnID

func (c *TcpConnection) GetConnID() uint32

GetConnID 获取当前连接ID

func (*TcpConnection) GetProperty

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

GetProperty 获取链接属性

func (*TcpConnection) GetTCPConnection

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

GetTCPConnection 从当前连接获取原始的socket TCPConn

func (*TcpConnection) RemoteAddr

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

RemoteAddr 获取远程客户端地址信息

func (*TcpConnection) RemoveProperty

func (c *TcpConnection) RemoveProperty(key string)

RemoveProperty 移除链接属性

func (*TcpConnection) SendBuffMsg

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

SendBuffMsg 发生BuffMsg

func (*TcpConnection) SendMsg

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

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

func (*TcpConnection) SetProperty

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

SetProperty 设置链接属性

func (*TcpConnection) Start

func (c *TcpConnection) Start()

Start 启动连接,让当前连接开始工作

func (*TcpConnection) StartReader

func (c *TcpConnection) StartReader()

StartReader 读消息Goroutine,用于从客户端中读取数据

func (*TcpConnection) StartWriter

func (c *TcpConnection) StartWriter()

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

func (*TcpConnection) Stop

func (c *TcpConnection) Stop()

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

type TcpServer

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

	//当前Server的链接管理器
	ConnMgr anet.ConnManager
	//该Server的连接创建时Hook函数
	OnConnStart func(conn anet.Connection)
	//该Server的连接断开时的Hook函数
	OnConnStop func(conn anet.Connection)
	// contains filtered or unexported fields
}

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

func (*TcpServer) AddRouter

func (s *TcpServer) AddRouter(msgID uint32, router anet.Router)

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

func (*TcpServer) CallOnConnStart

func (s *TcpServer) CallOnConnStart(conn anet.Connection)

CallOnConnStart 调用连接OnConnStart Hook函数

func (*TcpServer) CallOnConnStop

func (s *TcpServer) CallOnConnStop(conn anet.Connection)

CallOnConnStop 调用连接OnConnStop Hook函数

func (*TcpServer) GetConnMgr

func (s *TcpServer) GetConnMgr() anet.ConnManager

GetConnMgr 得到链接管理

func (*TcpServer) Packet

func (s *TcpServer) Packet() anet.Packet

func (*TcpServer) Serve

func (s *TcpServer) Serve()

Serve 运行服务

func (*TcpServer) SetOnConnStart

func (s *TcpServer) SetOnConnStart(hookFunc func(anet.Connection))

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

func (*TcpServer) SetOnConnStop

func (s *TcpServer) SetOnConnStop(hookFunc func(anet.Connection))

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

func (*TcpServer) Start

func (s *TcpServer) Start()

Start 开启网络服务

func (*TcpServer) Stop

func (s *TcpServer) Stop()

Stop 停止服务

Jump to

Keyboard shortcuts

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