net

package
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Nov 5, 2023 License: Apache-2.0 Imports: 11 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewConnManager

func NewConnManager() iface.IConnManager

func NewServer

func NewServer() iface.IServer

NewServer

@Description: 初始化服务器
@param name
@return iface.IServer

Types

type BaseRouter

type BaseRouter struct {
}

实现 Router 接口时,先嵌入这个 BaseRouter 基类,然后根据需求再对这个基类进行重写就好

func (*BaseRouter) Handle

func (r *BaseRouter) Handle(req iface.IRequest)

Handle 处理业务的方法

func (*BaseRouter) PostHandle

func (r *BaseRouter) PostHandle(req iface.IRequest)

PostHandle 处理业务之后的 hook

func (*BaseRouter) PreHandle

func (r *BaseRouter) PreHandle(req iface.IRequest)

PreHandle 处理业务前的 hook

type ConnManager

type ConnManager struct {
	// Conns 连接集合 connID => conn
	Conns map[uint32]iface.IConnection
	// contains filtered or unexported fields
}

func (*ConnManager) AddConn

func (cm *ConnManager) AddConn(conn iface.IConnection)

func (*ConnManager) GetConn

func (cm *ConnManager) GetConn(connID uint32) (iface.IConnection, error)

func (*ConnManager) GetConnCnt

func (cm *ConnManager) GetConnCnt() int

func (*ConnManager) RemoveAllConn

func (cm *ConnManager) RemoveAllConn()

func (*ConnManager) RemoveConn

func (cm *ConnManager) RemoveConn(conn iface.IConnection)

type Connection

type Connection struct {
	// Server connection 所属服务器
	Server iface.IServer

	// 当前连接的 socket TCP 套接字
	Conn *net.TCPConn

	// 连接 ID
	ConnID int32

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

	// 改连接处理的的方法
	MasHandler iface.IMsgHandler
	// contains filtered or unexported fields
}

Connection 连接模块

func NewConnection

func NewConnection(server iface.IServer, conn *net.TCPConn, connID int32, msgHandler iface.IMsgHandler) *Connection

NewConnection 初始化连接模块

func (*Connection) GetConnID

func (c *Connection) GetConnID() int32

func (*Connection) GetTCPConnection

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

func (*Connection) Read

func (c *Connection) Read()

Read 接收客户端消息

func (*Connection) RemoteAddr

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

func (*Connection) SendMsg

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

SendMsg 将要发送给客户端的数据先进行封包,然后发送

func (*Connection) Start

func (c *Connection) Start()

func (*Connection) Stop

func (c *Connection) Stop()

func (*Connection) Write

func (c *Connection) Write()

Write 给客户端发送消息

type DataPack

type DataPack struct {
}

func NewDataPack

func NewDataPack() *DataPack

func (*DataPack) GetHeadLen

func (p *DataPack) GetHeadLen() uint32

func (*DataPack) Pack

func (p *DataPack) Pack(msg iface.IMessage) ([]byte, error)

Pack 封包

func (*DataPack) UnPack

func (p *DataPack) UnPack(data []byte) (iface.IMessage, error)

UnPack 拆包

type Message

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

func NewMessagePackage

func NewMessagePackage(msgID uint32, data []byte) *Message

func (*Message) GetMsgData

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

func (*Message) GetMsgID

func (m *Message) GetMsgID() uint32

func (*Message) GetMsgLen

func (m *Message) GetMsgLen() uint32

func (*Message) SetMsgData

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

func (*Message) SetMsgID

func (m *Message) SetMsgID(ID uint32)

func (*Message) SetMsgLen

func (m *Message) SetMsgLen(len uint32)

type MsgHandler

type MsgHandler struct {

	// 工作队列
	TaskQueue []chan iface.IRequest
	// worker 数量
	WorkerPoolSize uint32
	// contains filtered or unexported fields
}

func NewMsgHandler

func NewMsgHandler() *MsgHandler

func (*MsgHandler) AddRouter

func (mh *MsgHandler) AddRouter(msgID uint32, router iface.Router)

func (*MsgHandler) Handle

func (mh *MsgHandler) Handle(request iface.IRequest)

func (*MsgHandler) SendMsgToTaskQueue

func (mh *MsgHandler) SendMsgToTaskQueue(req iface.IRequest)

SendMsgToTaskQueue 将消息发送给 队列,异步处理

func (*MsgHandler) StartOneWorker

func (mh *MsgHandler) StartOneWorker(workID int, taskQueue chan iface.IRequest)

func (*MsgHandler) StartWorkPool

func (mh *MsgHandler) StartWorkPool()

type Request

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

func (*Request) GetConn

func (r *Request) GetConn() iface.IConnection

func (*Request) GetData

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

func (*Request) GetMsgID

func (r *Request) GetMsgID() uint32

func (*Request) GetMsgLen

func (r *Request) GetMsgLen() uint32

type Server

type Server struct {
	ServerName  string                             // 服务器名称
	IPVersion   string                             // IP 版本
	IP          string                             // IP
	Port        int                                // 服务器监听端口
	MsgHandler  iface.IMsgHandler                  // 消息处理器
	ConnManager iface.IConnManager                 // 连接管理器
	OnConnStart func(connection iface.IConnection) // hook conn start
	OnConnClose func(connection iface.IConnection) // hook conn closed
}

Server

@Description: 服务器结构

func (*Server) AddRouter

func (s *Server) AddRouter(msgID uint32, router iface.Router)

func (*Server) CallOnConnClose

func (s *Server) CallOnConnClose(conn iface.IConnection)

func (*Server) CallOnConnStart

func (s *Server) CallOnConnStart(conn iface.IConnection)

func (*Server) GetConnManager

func (s *Server) GetConnManager() iface.IConnManager

func (*Server) Serve

func (s *Server) Serve()

Serve

@Description: 服务器运行方法

func (*Server) SetOnConnClose

func (s *Server) SetOnConnClose(f func(connection iface.IConnection))

func (*Server) SetOnConnStart

func (s *Server) SetOnConnStart(f func(connection iface.IConnection))

func (*Server) Start

func (s *Server) Start()

Start

@Description: 服务器启动方法

func (*Server) Stop

func (s *Server) Stop()

Stop

@Description: 服务器停止方法

Jump to

Keyboard shortcuts

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