easysocket

package module
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Apr 7, 2022 License: MIT Imports: 11 Imported by: 0

README

easysocket

Documentation

Index

Constants

View Source
const (
	MsgTypeSize = 4
	MsgLenSize  = 4
)

Variables

This section is empty.

Functions

This section is empty.

Types

type BaseRouter

type BaseRouter struct{}

func (*BaseRouter) Handle

func (r *BaseRouter) Handle(request IRequest)

func (*BaseRouter) PostHandle

func (r *BaseRouter) PostHandle(request IRequest)

func (*BaseRouter) PreHandle

func (r *BaseRouter) PreHandle(request IRequest)

type DataPack

type DataPack struct{}

DataPack 封包拆包类实例

func (*DataPack) GetHeadLen

func (dp *DataPack) GetHeadLen() uint32

GetHeadLen 获取包头长度

func (*DataPack) Pack

func (dp *DataPack) Pack(message IMessage) []byte

Pack 封包 长度|类型|内容

func (*DataPack) UnPack

func (dp *DataPack) UnPack(data []byte) IMessage

UnPack 拆包 先读取消息头信息 长度|类型

type EventType

type EventType int

type HookFunc

type HookFunc func(session ISession)

type IDataPack

type IDataPack interface {
	GetHeadLen() uint32
	Pack(message IMessage) []byte
	UnPack(data []byte) IMessage
}

func NewDataPack

func NewDataPack() IDataPack

type IMessage

type IMessage interface {
	GetMsgId() int32
	GetDataLen() uint32
	GetData() []byte
	SetMsgId(msgType int32)
	SetDataLen(len uint32)
	SetData(data []byte)
}

type IMessageHandler

type IMessageHandler interface {
	DoMsgHandler(request IRequest)
	AddRouter(msgId int32, router IRouter)

	SendMsgToTaskQueue(request IRequest)
	StartWorkerPool()
	// contains filtered or unexported methods
}

type IRequest

type IRequest interface {
	GetSession() ISession
	GetData() []byte
	GetMsgId() int32
}

type IRouter

type IRouter interface {
	PreHandle(request IRequest)
	Handle(request IRequest)
	PostHandle(request IRequest)
}

type IServer

type IServer interface {
	Stop()
	Serve()
	AddRouter(msgId int32, router IRouter)
	GetSessMgr() ISessionManager
	SetOnConnStart(hookFunc HookFunc)
	SetOnConnStop(hookFunc HookFunc)
	CallOnConnStart(session ISession)
	CallOnConnStop(session ISession)
	DataPack() IDataPack
	// contains filtered or unexported methods
}

type ISession

type ISession interface {
	Start()
	Stop()
	Context() context.Context

	RemoteAddr() net.Addr
	GetConnId() uint32

	SendMsg(msgId int32, data []byte) error
	SendBuffMsg(msgId int32, data []byte) error

	SetProperty(key string, value interface{}) error
	GetProperty(key string) (interface{}, error)
	RemoveProperty(key string)
	// contains filtered or unexported methods
}

type ISessionManager

type ISessionManager interface {
	Add(session ISession)                // 添加链接
	Remove(session ISession)             // 删除链接
	Get(connId uint32) (ISession, error) // 获取链接
	Count() int                          // 获取所有链接数量
	Clear()                              // 删除并停止所有链接
}

type Message

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

func NewMessage

func NewMessage(id int32, data []byte) *Message

func (*Message) GetData

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

func (*Message) GetDataLen

func (m *Message) GetDataLen() uint32

func (*Message) GetMsgId

func (m *Message) GetMsgId() int32

func (*Message) SetData

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

func (*Message) SetDataLen

func (m *Message) SetDataLen(len uint32)

func (*Message) SetMsgId

func (m *Message) SetMsgId(id int32)

type MessageHandler

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

func NewMessageHandler

func NewMessageHandler() *MessageHandler

func (*MessageHandler) AddRouter

func (m *MessageHandler) AddRouter(msgId int32, router IRouter)

AddRouter 添加具体消息处理逻辑

func (*MessageHandler) DoMsgHandler

func (m *MessageHandler) DoMsgHandler(request IRequest)

DoMsgHandler 处理消息

func (*MessageHandler) SendMsgToTaskQueue

func (m *MessageHandler) SendMsgToTaskQueue(request IRequest)

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

func (*MessageHandler) StartWorkerPool

func (m *MessageHandler) StartWorkerPool()

StartWorkerPool 启动工作池

type Request

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

func (*Request) GetData

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

GetData 获取请求消息的数据

func (*Request) GetMsgId

func (r *Request) GetMsgId() int32

GetMsgId 获取请求的消息的ID

func (*Request) GetSession

func (r *Request) GetSession() ISession

GetSession 获取请求连接信息

type Server

type Server struct {
	ServerType ServerType

	OnConnStart HookFunc
	OnConnStop  HookFunc
	// contains filtered or unexported fields
}

func NewServer

func NewServer(name string, serverType ServerType, host string, port int) *Server

func (*Server) AddRouter

func (s *Server) AddRouter(msgId int32, router IRouter)

func (*Server) CallOnConnStart

func (s *Server) CallOnConnStart(session ISession)

func (*Server) CallOnConnStop

func (s *Server) CallOnConnStop(session ISession)

func (*Server) DataPack

func (s *Server) DataPack() IDataPack

func (*Server) GetSessMgr

func (s *Server) GetSessMgr() ISessionManager

func (*Server) Serve

func (s *Server) Serve()

func (*Server) SetOnConnStart

func (s *Server) SetOnConnStart(hookFunc HookFunc)

func (*Server) SetOnConnStop

func (s *Server) SetOnConnStop(hookFunc HookFunc)

func (*Server) Stop

func (s *Server) Stop()

type ServerType

type ServerType uint32
const (
	NullServer ServerType = iota
	TcpServer
	WsServer
	TcpClient
)

type Session

type Session struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

func (*Session) Context

func (s *Session) Context() context.Context

func (*Session) GetConnId

func (s *Session) GetConnId() uint32

func (*Session) GetProperty

func (s *Session) GetProperty(key string) (interface{}, error)

GetProperty 获取链接属性

func (*Session) RemoveProperty

func (s *Session) RemoveProperty(key string)

RemoveProperty 移除链接属性

func (*Session) SendBuffMsg

func (s *Session) SendBuffMsg(msgId int32, data []byte) error

SendBuffMsg 发送BuffMsg

func (*Session) SetProperty

func (s *Session) SetProperty(key string, value interface{}) error

SetProperty 设置链接属性

func (*Session) Stop

func (s *Session) Stop()

type SessionManager

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

func NewSessionManager

func NewSessionManager() *SessionManager

func (*SessionManager) Add

func (m *SessionManager) Add(session ISession)

Add 添加链接

func (*SessionManager) Clear

func (m *SessionManager) Clear()

Clear 清空所有链接

func (*SessionManager) Count

func (m *SessionManager) Count() int

Count 获取链接数量

func (*SessionManager) Get

func (m *SessionManager) Get(connId uint32) (ISession, error)

Get 获取链接

func (*SessionManager) Remove

func (m *SessionManager) Remove(session ISession)

Remove 删除链接

type TCPSession

type TCPSession struct {
	Session
	// contains filtered or unexported fields
}

func NewTCPSession

func NewTCPSession(server IServer, conn net.Conn, connId uint32, handler IMessageHandler) *TCPSession

func (*TCPSession) GetConn

func (s *TCPSession) GetConn() net.Conn

func (*TCPSession) RemoteAddr

func (s *TCPSession) RemoteAddr() net.Addr

func (*TCPSession) SendMsg

func (s *TCPSession) SendMsg(msgId int32, data []byte) error

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

func (*TCPSession) Start

func (s *TCPSession) Start()

type WsSession

type WsSession struct {
	Session
	// contains filtered or unexported fields
}

func NewWsSession

func NewWsSession(server IServer, conn *websocket.Conn, connId uint32, handler IMessageHandler) *WsSession

func (*WsSession) RemoteAddr

func (s *WsSession) RemoteAddr() net.Addr

func (*WsSession) SendMsg

func (s *WsSession) SendMsg(msgId int32, data []byte) error

func (*WsSession) Start

func (s *WsSession) Start()

Jump to

Keyboard shortcuts

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