network

package
v0.0.0-...-15b9bff Latest Latest
Warning

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

Go to latest
Published: Jun 25, 2022 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BaseRouter

type BaseRouter struct {
}

func (*BaseRouter) AfterHook

func (b *BaseRouter) AfterHook(req IRequest)

func (*BaseRouter) BeforeHook

func (b *BaseRouter) BeforeHook(req IRequest)

func (*BaseRouter) Handle

func (b *BaseRouter) Handle(req IRequest)

type Config

type Config struct {
	Name    string `json:"name"`
	Host    string `json:"host"`
	TCPPort int    `json:"port"`
	Version string `json:"version"`

	MaxPacketSize     uint32 `json:"max_packet_size"`
	MaxConn           int    `json:"max_conn"`
	WorkerPoolSize    uint32 `json:"worker_pool_size"`
	MaxWorkerTaskLen  uint32 `json:"max_worker_task_len"`
	MaxMessageChanLen uint32 `json:"max_message_chan_len"`

	Raft struct {
		Id      string `json:"id"`
		Addr    string `json:"addr"`
		Cluster string `json:"cluster"`
	} `json:"raft"`
}
var Setting *Config

func (*Config) Reload

func (c *Config) Reload(path string)

type ConnManager

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

func NewConnManager

func NewConnManager() *ConnManager

func (*ConnManager) Add

func (c *ConnManager) Add(conn IConnection)

func (*ConnManager) ClearConn

func (c *ConnManager) ClearConn()

func (*ConnManager) Get

func (c *ConnManager) Get(id uint32) (IConnection, error)

func (*ConnManager) Len

func (c *ConnManager) Len() int

func (*ConnManager) Remove

func (c *ConnManager) Remove(conn IConnection)

type Connection

type Connection struct {
	TCPServer IServer
	Conn      *net.TCPConn
	ConnID    uint32

	ExitBuffChan chan bool
	// contains filtered or unexported fields
}

func NewConnection

func NewConnection(server IServer, conn *net.TCPConn, connID uint32, h IMessageHandle) *Connection

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) SendBuffMessage

func (c *Connection) SendBuffMessage(id uint32, data []byte) error

func (*Connection) SendMessage

func (c *Connection) SendMessage(id 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()

func (*Connection) StartWriter

func (c *Connection) StartWriter()

func (*Connection) Stop

func (c *Connection) Stop()

type HandFunc

type HandFunc func(*net.TCPConn, []byte, int) error

type IConnManager

type IConnManager interface {
	Add(IConnection)
	Remove(IConnection)
	Get(uint32) (IConnection, error)
	Len() int
	ClearConn()
}

type IConnection

type IConnection interface {
	Start()
	Stop()

	GetTCPConnection() *net.TCPConn
	GetConnID() uint32
	RemoteAddr() net.Addr

	SendMessage(uint32, []byte) error
	SendBuffMessage(uint32, []byte) error

	SetProperty(string, interface{})
	GetProperty(string) (interface{}, error)
	RemoveProperty(string)
}

type IMessage

type IMessage interface {
	GetID() uint32
	GetData() []byte
	GetDataLen() uint32

	SetID(uint32)
	SetData([]byte)
	SetDataLen(uint32)
}

type IMessageHandle

type IMessageHandle interface {
	DoMessageHandler(IRequest)
	AddRouter(uint32, IRouter)
	StartWorkerPool()
	SendMessageToTaskQueue(IRequest)
}

type IPack

type IPack interface {
	GetHeadLen() uint32
	Pack(IMessage) ([]byte, error)
	Unpack([]byte) (IMessage, error)
}

type IRequest

type IRequest interface {
	GetConnection() IConnection
	GetData() []byte
	GetMessageID() uint32
}

type IRouter

type IRouter interface {
	BeforeHook(IRequest)
	Handle(IRequest)
	AfterHook(IRequest)
}

type IServer

type IServer interface {
	Start()
	Close()
	Serve()
	AddRouter(uint32, IRouter)
	GetConnManager() IConnManager
	SetOnConnStart(func(IConnection))
	SetOnConnStop(func(IConnection))
	CallOnConnStart(IConnection)
	CallOnConnStop(IConnection)
}

func NewServer

func NewServer() IServer

type Message

type Message struct {
	ID      uint32
	DataLen uint32
	Data    []byte
}

func NewMessage

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

func (*Message) GetData

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

func (*Message) GetDataLen

func (m *Message) GetDataLen() uint32

func (*Message) GetID

func (m *Message) GetID() uint32

func (*Message) SetData

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

func (*Message) SetDataLen

func (m *Message) SetDataLen(l uint32)

func (*Message) SetID

func (m *Message) SetID(id uint32)

type MessageHandle

type MessageHandle struct {
	APIs           map[uint32]IRouter
	WorkerPoolSize uint32
	TaskQueue      []chan IRequest
}

func NewMessageHandle

func NewMessageHandle() *MessageHandle

func (*MessageHandle) AddRouter

func (m *MessageHandle) AddRouter(id uint32, router IRouter)

func (*MessageHandle) DoMessageHandler

func (m *MessageHandle) DoMessageHandler(req IRequest)

func (*MessageHandle) SendMessageToTaskQueue

func (m *MessageHandle) SendMessageToTaskQueue(req IRequest)

func (*MessageHandle) StartOneWorker

func (m *MessageHandle) StartOneWorker(workerID int, taskQueue chan IRequest)

func (*MessageHandle) StartWorkerPool

func (m *MessageHandle) StartWorkerPool()

type Pack

type Pack struct {
}

func NewPack

func NewPack() *Pack

func (Pack) GetHeadLen

func (p Pack) GetHeadLen() uint32

ID (4 bytes) + DataLen (4 bytes)

func (Pack) Pack

func (p Pack) Pack(message IMessage) ([]byte, error)

func (Pack) Unpack

func (p Pack) Unpack(data []byte) (IMessage, error)

type Request

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

func (Request) GetConnection

func (r Request) GetConnection() IConnection

func (Request) GetData

func (r Request) GetData() []byte

func (*Request) GetMessageID

func (r *Request) GetMessageID() uint32

type Server

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

	ConnManager IConnManager

	OnConnStart func(conn IConnection)
	OnConnStop  func(conn IConnection)
	// contains filtered or unexported fields
}

func (*Server) AddRouter

func (s *Server) AddRouter(id uint32, r IRouter)

func (*Server) CallOnConnStart

func (s *Server) CallOnConnStart(conn IConnection)

func (*Server) CallOnConnStop

func (s *Server) CallOnConnStop(conn IConnection)

func (*Server) Close

func (s *Server) Close()

func (*Server) GetConnManager

func (s *Server) GetConnManager() IConnManager

func (*Server) Serve

func (s *Server) Serve()

func (*Server) SetOnConnStart

func (s *Server) SetOnConnStart(f func(IConnection))

func (*Server) SetOnConnStop

func (s *Server) SetOnConnStop(f func(IConnection))

func (*Server) Start

func (s *Server) Start()

Jump to

Keyboard shortcuts

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