ynet

package
v1.0.2 Latest Latest
Warning

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

Go to latest
Published: Oct 14, 2022 License: MIT Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (
	HEART_MSG   = "heart_msg"   //作为client时发送的心跳消息
	LAST_ACTIVE = "last_active" //connection 最后活跃时间,秒
	KEEP_ALIVE  = 200           //假死存活时间
)

Variables

This section is empty.

Functions

func NewServer

func NewServer(conf string) yiface.IServer

Types

type BaseRouter

type BaseRouter struct {
}

func (*BaseRouter) AfterHandle

func (br *BaseRouter) AfterHandle(request yiface.IRequest)

func (*BaseRouter) Handle

func (br *BaseRouter) Handle(request yiface.IRequest)

func (*BaseRouter) PreHandle

func (br *BaseRouter) PreHandle(request yiface.IRequest)

type ConnManager

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

func NewConnManager

func NewConnManager() *ConnManager

func (*ConnManager) Add

func (connMgr *ConnManager) Add(conn yiface.IConnection)

func (*ConnManager) ClearConn

func (connMgr *ConnManager) ClearConn()

func (*ConnManager) Get

func (connMgr *ConnManager) Get(connId uint32) (yiface.IConnection, error)

func (*ConnManager) Len

func (connMgr *ConnManager) Len() int

func (*ConnManager) Remove

func (connMgr *ConnManager) Remove(conn yiface.IConnection)

func (*ConnManager) Tick

func (connMgr *ConnManager) Tick()

超过180

type Connection

type Connection struct {
	sync.RWMutex
	//当前Conn属于哪个Server
	TcpServer yiface.IServer //当前conn属于哪个server,在conn初始化的时候添加即可
	//当前连接的套接字
	Conn *net.TCPConn
	//当前连接的ID,也可以作为sessionID,全局唯一
	ConnId uint32

	//消息管理MsgId和对应处理方法的消息管理模块
	MsgHandler yiface.IMsgHandle
	// contains filtered or unexported fields
}

func NewConnection

func NewConnection(server yiface.IServer, conn *net.TCPConn, connId uint32, handle yiface.IMsgHandle) *Connection

func (*Connection) Context

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

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

func (*Connection) GetConnId

func (c *Connection) GetConnId() uint32

func (*Connection) GetProperty

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

func (*Connection) GetTCPConnection

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

func (*Connection) RemoteAddr

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

func (*Connection) RemoveProperty

func (c *Connection) RemoveProperty(key string)

func (*Connection) SendBuffMsg

func (c *Connection) SendBuffMsg(msgId uint32, data []byte) error

func (*Connection) SendMsg

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

func (*Connection) SetProperty

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

func (*Connection) Start

func (c *Connection) Start()

func (*Connection) StartReader

func (c *Connection) StartReader()

处理conn读数据的Goroutine

func (*Connection) StartWriter

func (c *Connection) StartWriter()

func (*Connection) Stop

func (c *Connection) Stop()

type Message

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

func NewMsgPackage

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

func (*Message) GetData

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

获取消息内容

func (*Message) GetDataLen

func (msg *Message) GetDataLen() uint32

获取消息长度

func (*Message) GetMsgId

func (msg *Message) GetMsgId() uint32

获取消息ID

func (*Message) SetData

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

设置消息内容

func (*Message) SetDataLen

func (msg *Message) SetDataLen(len uint32)

设置消息长度

func (*Message) SetMsgId

func (msg *Message) SetMsgId(msgId uint32)

设置消息ID

type MsgHandle

type MsgHandle struct {
	Apis           map[uint32]yiface.IRouter
	WorkerPoolSize uint32                 //业务工作Worker池的数量
	TaskQueue      []chan yiface.IRequest //Worker负责取任务的消息队列
}

func NewMsgHandle

func NewMsgHandle() *MsgHandle

func (*MsgHandle) AddRouter

func (mh *MsgHandle) AddRouter(msgId uint32, router yiface.IRouter)

func (*MsgHandle) DoMsgHandler

func (mh *MsgHandle) DoMsgHandler(request yiface.IRequest)

func (*MsgHandle) SendMsgToTaskQueue

func (mh *MsgHandle) SendMsgToTaskQueue(request yiface.IRequest)

将消息交给TaskQueue,由worker进行处理 @todo 实现其他算法

func (*MsgHandle) StartWorkerPool

func (mh *MsgHandle) StartWorkerPool()

type Pack

type Pack struct {
}

func NewDataPack

func NewDataPack() *Pack

func (*Pack) GetHeadLen

func (dp *Pack) GetHeadLen() uint32

func (*Pack) Pack

func (dp *Pack) Pack(msg yiface.IMessage) ([]byte, error)

func (*Pack) UnPack

func (dp *Pack) UnPack(binaryData []byte) (yiface.IMessage, error)

type Request

type Request struct {
	Conn yiface.IConnection //已经建立好的连接
	Msg  yiface.IMessage    //客户端请求的数据
}

func (*Request) GetConnection

func (r *Request) GetConnection() yiface.IConnection

func (*Request) GetData

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

func (*Request) GetMsgId

func (r *Request) GetMsgId() uint32

type Server

type Server struct {
	Id        string
	Name      string
	IPVersion string
	IP        string
	Port      int

	//当前Server的链接管理器
	ConnMgr yiface.IConnManager
	//该Server启动时Hook函数
	OnServerStart func(server yiface.IServer)
	//该Server退出时Hook函数
	OnServerStop func(server yiface.IServer)
	//该Server的连接创建时Hook函数
	OnConnStart func(conn yiface.IConnection)
	//该Server的连接断开时的Hook函数
	OnConnStop func(conn yiface.IConnection)

	//tick函数hook
	OnTick func(tick time.Time)

	Tick100MSec int64 //100毫秒

	//Client chan yiface.IClient
	Client map[string]yiface.IClient
	// contains filtered or unexported fields
}

func (*Server) AddClient

func (s *Server) AddClient(key string, c yiface.IClient)

func (*Server) AddRouter

func (s *Server) AddRouter(msgId uint32, router yiface.IRouter)

func (*Server) CallOnConnStart

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

func (*Server) CallOnConnStop

func (s *Server) CallOnConnStop(conn yiface.IConnection)

func (*Server) CallOnServerStart

func (s *Server) CallOnServerStart(server yiface.IServer)

func (*Server) CallOnServerStop

func (s *Server) CallOnServerStop(server yiface.IServer)

func (*Server) GetClient

func (s *Server) GetClient(key string) yiface.IClient

func (*Server) GetConnMgr

func (s *Server) GetConnMgr() yiface.IConnManager

func (*Server) GetCtx

func (s *Server) GetCtx() context.Context

func (*Server) GetInfo

func (s *Server) GetInfo() *Server

func (*Server) Packet

func (s *Server) Packet() yiface.IPack

func (*Server) Server

func (s *Server) Server()

func (*Server) SetOnConnStart

func (s *Server) SetOnConnStart(hookFunc func(yiface.IConnection))

func (*Server) SetOnConnStop

func (s *Server) SetOnConnStop(hookFunc func(yiface.IConnection))

func (*Server) SetOnServerStart

func (s *Server) SetOnServerStart(hookFunc func(yiface.IServer))

func (*Server) SetOnServerStop

func (s *Server) SetOnServerStop(hookFunc func(yiface.IServer))

func (*Server) SetOnTick

func (s *Server) SetOnTick(hookFunc func(time.Time))

func (*Server) Start

func (s *Server) Start()

func (*Server) Stop

func (s *Server) Stop()

func (*Server) Tick

func (s *Server) Tick(tick time.Time)

Jump to

Keyboard shortcuts

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