Mnet

package
v0.0.0-...-2ea0082 Latest Latest
Warning

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

Go to latest
Published: Mar 18, 2022 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ConnHuixie

func ConnHuixie(conn *net.TCPConn, msg []byte, v int) error

连接绑定执行命令一 :回写数据

func NewConnManager

func NewConnManager() Miface.IConnManager

用于创建连接控制器的一个实例

func NewConnect

func NewConnect(server Miface.MServer, getconn *net.TCPConn, getconnID int64, getMsgHandle Miface.IMsgHandle) Miface.Iconnect

创建一个连接

func NewMessage

func NewMessage(sendID uint64, sendData []byte) Miface.Imessage

func NewMsgHandle

func NewMsgHandle() Miface.IMsgHandle

初始化创建一个管理路由MsgHandle实例的函数

func NewServer

func NewServer(ip string, port int) Miface.MServer

初始化方法

Types

type BaseRouter

type BaseRouter struct{}

创建一个路由结构的基类 后续用户依靠继承重写来使用

func (*BaseRouter) Handle

func (rt *BaseRouter) Handle(request Miface.Irequest)

处理业务

func (*BaseRouter) HandleHou

func (rt *BaseRouter) HandleHou(request Miface.Irequest)

处理业务后

func (*BaseRouter) HandleQian

func (rt *BaseRouter) HandleQian(request Miface.Irequest)

处理业务前

type ConnManager

type ConnManager struct {
	ConnPoolMap map[int]Miface.Iconnect
	// contains filtered or unexported fields
}
用于实现控制连接connManager的接口

connManager所需的结构体

func (*ConnManager) ConnManAdd

func (cm *ConnManager) ConnManAdd(connIn Miface.Iconnect) error

增加连接

func (*ConnManager) ConnManDel

func (cm *ConnManager) ConnManDel(connIn Miface.Iconnect)

删除连接

func (*ConnManager) ConnManDelAll

func (cm *ConnManager) ConnManDelAll()

中断所有的连接

func (*ConnManager) ConnManGetID

func (cm *ConnManager) ConnManGetID(idIn int) Miface.Iconnect

根据连接ID获取连接

func (*ConnManager) ConnManGetNum

func (cm *ConnManager) ConnManGetNum() int

获取当前总连接数量

type Connect

type Connect struct {
	// 连接所属服务器
	ConnServer Miface.MServer
	// 连接句柄
	Conn *net.TCPConn
	// 连接ID
	ConnID int64
	// 连接状态
	Isclosed bool
	// 连接绑定的方法
	ConnAPI Miface.BangdinFunc
	// 检查当前连接是否已经终止的管道
	CheakExitC chan bool
	// 添加一个router
	// Router Miface.IRouter
	// 将之前的router单路由控制模式 转换成使用路由管理MsgHandle来控制 实现多路由管理
	CMsgHandle Miface.IMsgHandle
	// 创建一个给写进程发送数据的管道
	CtransData chan []byte
	// contains filtered or unexported fields
}

func (*Connect) GetConnID

func (c *Connect) GetConnID() int64

获取连接的ID

func (*Connect) Getconn

func (c *Connect) Getconn() *net.TCPConn

获取绑定的连接接口

func (*Connect) GetconnInfo

func (c *Connect) GetconnInfo() net.Addr

获取连接的状态属性 IP 端口等

func (*Connect) InfoAdd

func (c *Connect) InfoAdd(infoIn string, a interface{})

添加属性

func (*Connect) InfoDel

func (c *Connect) InfoDel(infoIn string)

删除属性

func (*Connect) InfoFind

func (c *Connect) InfoFind(infoIn string) interface{}

查询属性

func (*Connect) SendMsg

func (c *Connect) SendMsg(msg []byte) error

发送数据 使用连接将二进制流数据发送给客户端

func (*Connect) SendPackMsg

func (c *Connect) SendPackMsg(sendID uint64, sendData []byte) error

提供一个发送封装好的Message数据包的方法

func (*Connect) Start

func (c *Connect) Start()

启动 让连接开始工作

func (*Connect) StartReader

func (c *Connect) StartReader()

启动的读数据子协程

func (*Connect) StartWriter

func (c *Connect) StartWriter()

写协程

func (*Connect) Stop

func (c *Connect) Stop()

停止 结束当前连接的工作

type Message

type Message struct {
	MsgLen uint64
	MsgID  uint64
	Msg    []byte
}

定义Message的结构体

func (*Message) GetID

func (msg *Message) GetID() uint64

获取消息的ID

func (*Message) GetLen

func (msg *Message) GetLen() uint64

获取消息的长度

func (*Message) GetMsg

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

获取消息的内容

func (*Message) SetMsg

func (msg *Message) SetMsg(newMsg []byte)

设置消息的内容

func (*Message) SetMsgID

func (msg *Message) SetMsgID(newID uint64)

设置消息的ID

type MsgHandle

type MsgHandle struct {
	// 使用map来存放所有的message所对应使用router路由方法
	MsgHandleMap map[uint64]Miface.IRouter
	// 定义一组消息队列 因为是一组 所以使用切片
	MsgHandleDuilie []chan Miface.Irequest
	// 定义工作池的工作单元个数
	MsgHandleWorkUnitNum int
}

用于实现msgHandle的接口

func (*MsgHandle) RouterAdd

func (mh *MsgHandle) RouterAdd(msgid uint64, router Miface.IRouter) error

添加路由Router方法

func (*MsgHandle) RouterUse

func (mh *MsgHandle) RouterUse(request Miface.Irequest) error

调度路由Router方法

func (*MsgHandle) SendRequestToWorkPool

func (mh *MsgHandle) SendRequestToWorkPool(request Miface.Irequest)

将收到的request发送给对应的工作池 并做简易负载均衡

func (*MsgHandle) StartWorkPool

func (mh *MsgHandle) StartWorkPool()

创建一个工作池并使用生成工作池函数来生成工作单元协程

func (*MsgHandle) StartWorkUnit

func (mh *MsgHandle) StartWorkUnit(idIn int)

工作单元go程 接收传来的工作request请求 与工作单元id 并调用MsgHandle的调度路由方法来使用request

type Pack

type Pack struct{}

定义pack的空结构体 用于实例化对象时调用其方法

func NewPack

func NewPack() *Pack

实例化一个pack对象的方法

func (*Pack) GetPackLen

func (p *Pack) GetPackLen() uint64

获取包的长度

func (*Pack) Pack

func (p *Pack) Pack(msg Miface.Imessage) ([]byte, error)

打包

func (*Pack) UnPack

func (p *Pack) UnPack(waitToUnpackData []byte) (Miface.Imessage, error)

解包

type Request

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

定义request结构体

func (*Request) GetConnect

func (r *Request) GetConnect() Miface.Iconnect

获取request连接

func (*Request) GetData

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

获取request二进制流数据

func (*Request) GetID

func (r *Request) GetID() uint64

获取request头ID

func (*Request) GetLen

func (r *Request) GetLen() uint64

获取request头长度

type Server

type Server struct {
	Name  string
	IpVer string
	Ip    string

	Channel     chan string
	ChannelStop chan bool
	// Router      Miface.IRouter
	MsgHandle Miface.IMsgHandle
	// 连接控制队列
	ConnManager Miface.IConnManager
	// contains filtered or unexported fields
}

定义结构

func (*Server) AddNewRouter

func (s *Server) AddNewRouter(addid uint64, router Miface.IRouter)

新增router的方法

func (*Server) GetServerConnManager

func (s *Server) GetServerConnManager() Miface.IConnManager

返回服务器所拥有的连接池

func (*Server) Run

func (s *Server) Run()

运行方法

func (*Server) ServerChannelListen

func (s *Server) ServerChannelListen()

启动监听管道

func (*Server) ServerDoOpen

func (s *Server) ServerDoOpen(getcon net.Conn)

连接创建成功后的进行 阻塞 检测停止 并运行相应命令

func (*Server) ServerDoSomething

func (s *Server) ServerDoSomething(getcon net.Conn)

连接运行命令

func (*Server) ServerGetConn

func (s *Server) ServerGetConn()

启动一个简单的监听连接

func (*Server) Start

func (s *Server) Start()

启动方法

func (*Server) Stop

func (s *Server) Stop()

停止方法

Jump to

Keyboard shortcuts

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