qnet

package
v0.6.3 Latest Latest
Warning

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

Go to latest
Published: Feb 24, 2022 License: BSD-3-Clause Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (
	StatBytesRecv   int = iota // bytes received
	StatBytesSent              // bytes sent
	StatPacketsRecv            // packets received
	StatPacketsSent            // packets sent
	NumStat
)
View Source
const EndpointMapShardCount = 16

Variables

View Source
var (
	ErrConnIsClosing        = errors.New("connection is closing when sending")
	ErrConnOutboundOverflow = errors.New("connection outbound queue overflow")
	ErrConnForceClose       = errors.New("connection forced to close")
)
View Source
var ErrBufferOutOfRange = errors.New("buffer out of range")
View Source
var (
	RequestReadTimeout = 100 // 默认read超时时间,100s
)
View Source
var (
	TConnReadTimeout = 200 // seconds
)

Functions

func DecodeRequestBody added in v0.6.3

func DecodeRequestBody(req *http.Request, ptr interface{}) error

解析http请求的body为json

func GetClientIP added in v0.6.3

func GetClientIP(req *http.Request) string

获取http请求的来源IP

func NewFakeConn

func NewFakeConn(node fatchoy.NodeID, addr string) fatchoy.Endpoint

func NewFakeEndpoint added in v0.3.10

func NewFakeEndpoint(node fatchoy.NodeID, ud interface{}) fatchoy.Endpoint

func ReadLenMessage added in v0.1.5

func ReadLenMessage(conn net.Conn, msg proto.Message) error

读取2字节开头的message

func ReadProtoMessage added in v0.1.12

func ReadProtoMessage(conn net.Conn, enc codec.Encoder, decrypt cipher.BlockCryptor, msg proto.Message) error

读取一条protobuf消息

func RequestProtoMessage added in v0.1.12

func RequestProtoMessage(conn net.Conn, enc codec.Encoder, command int32, req, resp proto.Message) error

send并且立即recv(不加密)

func RequestRawMessage added in v0.6.3

func RequestRawMessage(conn net.Conn, req, ack proto.Message) error

写入req并且等待读取ack

func SendProtoMessage added in v0.1.12

func SendProtoMessage(conn io.Writer, enc codec.Encoder, encrypt cipher.BlockCryptor, command int32, msg proto.Message) error

send一条protobuf消息

func WriteLenMessage added in v0.1.5

func WriteLenMessage(conn net.Conn, msg proto.Message) error

写入2字节开头的message

Types

type Buffer

type Buffer struct {
	bytes.Buffer
}

func (*Buffer) PeekBool

func (b *Buffer) PeekBool() bool

func (*Buffer) PeekFloat32

func (b *Buffer) PeekFloat32() float32

func (*Buffer) PeekFloat64

func (b *Buffer) PeekFloat64() float64

func (*Buffer) PeekInt16

func (b *Buffer) PeekInt16() int16

func (*Buffer) PeekInt32

func (b *Buffer) PeekInt32() int32

func (*Buffer) PeekInt64

func (b *Buffer) PeekInt64() int64

func (*Buffer) PeekInt8

func (b *Buffer) PeekInt8() int8

func (*Buffer) PeekUint16

func (b *Buffer) PeekUint16() uint16

func (*Buffer) PeekUint32

func (b *Buffer) PeekUint32() uint32

func (*Buffer) PeekUint64

func (b *Buffer) PeekUint64() uint64

func (*Buffer) PeekUint8

func (b *Buffer) PeekUint8() uint8

func (*Buffer) ReadBool

func (b *Buffer) ReadBool() bool

func (*Buffer) ReadFloat32

func (b *Buffer) ReadFloat32() float32

func (*Buffer) ReadFloat64

func (b *Buffer) ReadFloat64() float64

func (*Buffer) ReadInt16

func (b *Buffer) ReadInt16() int16

func (*Buffer) ReadInt32

func (b *Buffer) ReadInt32() int32

func (*Buffer) ReadInt64

func (b *Buffer) ReadInt64() int64

func (*Buffer) ReadInt8

func (b *Buffer) ReadInt8() int8

func (*Buffer) ReadUint16

func (b *Buffer) ReadUint16() uint16

func (*Buffer) ReadUint32

func (b *Buffer) ReadUint32() uint32

func (*Buffer) ReadUint64

func (b *Buffer) ReadUint64() uint64

func (*Buffer) ReadUint8

func (b *Buffer) ReadUint8() uint8

func (*Buffer) WriteBool

func (b *Buffer) WriteBool(v bool)

func (*Buffer) WriteFloat32

func (b *Buffer) WriteFloat32(f float32)

func (*Buffer) WriteFloat64

func (b *Buffer) WriteFloat64(f float64)

func (*Buffer) WriteInt16

func (b *Buffer) WriteInt16(n int16)

func (*Buffer) WriteInt32

func (b *Buffer) WriteInt32(n int32)

func (*Buffer) WriteInt64

func (b *Buffer) WriteInt64(n int64)

func (*Buffer) WriteInt8

func (b *Buffer) WriteInt8(n int8)

func (*Buffer) WriteUInt8

func (b *Buffer) WriteUInt8(n uint8)

func (*Buffer) WriteUint16

func (b *Buffer) WriteUint16(n uint16)

func (*Buffer) WriteUint32

func (b *Buffer) WriteUint32(n uint32)

func (*Buffer) WriteUint64

func (b *Buffer) WriteUint64(n uint64)

type ConcurrentEndpointMap added in v0.3.10

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

线程安全的EndpointMap,适合数据量很大的场景

func NewConcurrentEndpointMap added in v0.3.10

func NewConcurrentEndpointMap() *ConcurrentEndpointMap

func (*ConcurrentEndpointMap) Clear added in v0.3.10

func (m *ConcurrentEndpointMap) Clear()

func (*ConcurrentEndpointMap) Foreach added in v0.3.10

func (m *ConcurrentEndpointMap) Foreach(action func(fatchoy.Endpoint) int)

action应该对map是read-only

func (*ConcurrentEndpointMap) Get added in v0.3.10

func (*ConcurrentEndpointMap) Has added in v0.3.10

func (*ConcurrentEndpointMap) IsEmpty added in v0.3.10

func (m *ConcurrentEndpointMap) IsEmpty() bool

func (*ConcurrentEndpointMap) IterBuffered added in v0.3.10

func (m *ConcurrentEndpointMap) IterBuffered() <-chan Tuple

IterBuffered returns a buffered iterator which could be used in a for range loop.

func (*ConcurrentEndpointMap) Keys added in v0.3.10

func (m *ConcurrentEndpointMap) Keys() []fatchoy.NodeID

func (*ConcurrentEndpointMap) Pop added in v0.3.10

Pop removes an element from the map and returns it

func (*ConcurrentEndpointMap) Put added in v0.3.10

func (m *ConcurrentEndpointMap) Put(node fatchoy.NodeID, endpoint fatchoy.Endpoint)

func (*ConcurrentEndpointMap) PutIfAbsent added in v0.3.10

func (m *ConcurrentEndpointMap) PutIfAbsent(node fatchoy.NodeID, endpoint fatchoy.Endpoint)

func (*ConcurrentEndpointMap) Remove added in v0.3.10

func (m *ConcurrentEndpointMap) Remove(node fatchoy.NodeID)

func (*ConcurrentEndpointMap) Size added in v0.3.10

func (m *ConcurrentEndpointMap) Size() int

func (*ConcurrentEndpointMap) Values added in v0.3.10

func (m *ConcurrentEndpointMap) Values() []fatchoy.Endpoint

type EndpointHashMap added in v0.3.10

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

线程安全的EndpointMap,适合数据量不是很大的场景

func NewEndpointHashMap added in v0.3.10

func NewEndpointHashMap() *EndpointHashMap

func (*EndpointHashMap) Clear added in v0.3.10

func (m *EndpointHashMap) Clear()

func (*EndpointHashMap) Foreach added in v0.3.10

func (m *EndpointHashMap) Foreach(action func(fatchoy.Endpoint) int)

action应该对map是read-only

func (*EndpointHashMap) Get added in v0.3.10

func (*EndpointHashMap) Has added in v0.3.10

func (m *EndpointHashMap) Has(node fatchoy.NodeID) bool

func (*EndpointHashMap) IsEmpty added in v0.3.10

func (m *EndpointHashMap) IsEmpty() bool

func (*EndpointHashMap) Keys added in v0.3.10

func (m *EndpointHashMap) Keys() []fatchoy.NodeID

func (*EndpointHashMap) Pop added in v0.3.10

Pop removes an element from the map and returns it

func (*EndpointHashMap) Put added in v0.3.10

func (m *EndpointHashMap) Put(node fatchoy.NodeID, endpoint fatchoy.Endpoint)

func (*EndpointHashMap) PutIfAbsent added in v0.3.10

func (m *EndpointHashMap) PutIfAbsent(node fatchoy.NodeID, endpoint fatchoy.Endpoint)

func (*EndpointHashMap) Remove added in v0.3.10

func (m *EndpointHashMap) Remove(node fatchoy.NodeID)

func (*EndpointHashMap) Size added in v0.3.10

func (m *EndpointHashMap) Size() int

func (*EndpointHashMap) Values added in v0.3.10

func (m *EndpointHashMap) Values() []fatchoy.Endpoint

type EndpointMapShard added in v0.3.10

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

func (*EndpointMapShard) Clear added in v0.3.10

func (s *EndpointMapShard) Clear()

func (*EndpointMapShard) Range added in v0.3.10

func (s *EndpointMapShard) Range(action func(fatchoy.Endpoint) int) int

type Error

type Error struct {
	Err      error
	Endpoint fatchoy.Endpoint
}

func NewError

func NewError(err error, endpoint fatchoy.Endpoint) *Error

func (Error) Error

func (e Error) Error() string

type FakeConn

type FakeConn struct {
	StreamConn
}

a fake endpoint

func (*FakeConn) Close

func (c *FakeConn) Close() error

func (*FakeConn) ForceClose

func (c *FakeConn) ForceClose(error)

func (*FakeConn) Go

func (c *FakeConn) Go(flag fatchoy.EndpointFlag)

func (*FakeConn) Node added in v0.6.2

func (c *FakeConn) Node() fatchoy.NodeID

func (*FakeConn) RawConn

func (c *FakeConn) RawConn() net.Conn

func (*FakeConn) Send added in v0.4.1

func (c *FakeConn) Send(pkt *fatchoy.Packet) error

func (*FakeConn) SetNode added in v0.6.2

func (c *FakeConn) SetNode(v fatchoy.NodeID)

type FakeEndpoint added in v0.3.10

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

func (*FakeEndpoint) Close added in v0.3.10

func (e *FakeEndpoint) Close() error

关闭读/写

func (*FakeEndpoint) ErrorChan added in v0.3.10

func (e *FakeEndpoint) ErrorChan() <-chan error

func (*FakeEndpoint) ForceClose added in v0.3.10

func (e *FakeEndpoint) ForceClose(error)

func (*FakeEndpoint) Go added in v0.3.10

开启read/write线程

func (*FakeEndpoint) IsRunning added in v0.3.10

func (e *FakeEndpoint) IsRunning() bool

func (*FakeEndpoint) Node added in v0.6.2

func (e *FakeEndpoint) Node() fatchoy.NodeID

func (*FakeEndpoint) OutMsgChan added in v0.4.1

func (e *FakeEndpoint) OutMsgChan() chan<- *fatchoy.Packet

func (*FakeEndpoint) RawConn added in v0.3.10

func (e *FakeEndpoint) RawConn() net.Conn

func (*FakeEndpoint) RemoteAddr added in v0.3.10

func (e *FakeEndpoint) RemoteAddr() string

func (*FakeEndpoint) Send added in v0.4.1

func (e *FakeEndpoint) Send(pkt *fatchoy.Packet) error

发送消息

func (*FakeEndpoint) SetEncryptPair added in v0.3.10

func (e *FakeEndpoint) SetEncryptPair(cipher.BlockCryptor, cipher.BlockCryptor)

设置加解密

func (*FakeEndpoint) SetNode added in v0.6.2

func (e *FakeEndpoint) SetNode(v fatchoy.NodeID)

func (*FakeEndpoint) SetUserData added in v0.3.10

func (e *FakeEndpoint) SetUserData(v interface{})

绑定自定义数据

func (*FakeEndpoint) Stats added in v0.3.10

func (e *FakeEndpoint) Stats() *stats.Stats

发送/接收计数数据

func (*FakeEndpoint) UserData added in v0.3.10

func (e *FakeEndpoint) UserData() interface{}

type StreamConn

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

stream connection

func (*StreamConn) ErrorChan added in v0.3.5

func (c *StreamConn) ErrorChan() <-chan error

func (*StreamConn) Init added in v0.1.14

func (c *StreamConn) Init(node fatchoy.NodeID, enc codec.Encoder, incoming chan<- *fatchoy.Packet,
	outQueueSize int, stat *stats.Stats)

func (*StreamConn) IsRunning added in v0.1.20

func (c *StreamConn) IsRunning() bool

func (*StreamConn) Node added in v0.6.2

func (c *StreamConn) Node() fatchoy.NodeID

func (*StreamConn) OutMsgChan added in v0.4.1

func (c *StreamConn) OutMsgChan() chan<- *fatchoy.Packet

func (*StreamConn) RemoteAddr

func (c *StreamConn) RemoteAddr() string

func (*StreamConn) SetEncryptPair

func (c *StreamConn) SetEncryptPair(encrypt cipher.BlockCryptor, decrypt cipher.BlockCryptor)

func (*StreamConn) SetNode added in v0.6.2

func (c *StreamConn) SetNode(node fatchoy.NodeID)

func (*StreamConn) SetRemoteAddr

func (c *StreamConn) SetRemoteAddr(addr string)

func (*StreamConn) SetUserData

func (c *StreamConn) SetUserData(ud interface{})

func (*StreamConn) Stats

func (c *StreamConn) Stats() *stats.Stats

func (*StreamConn) UserData

func (c *StreamConn) UserData() interface{}

type TcpConn

type TcpConn struct {
	StreamConn
	// contains filtered or unexported fields
}

TCP connection

func NewTcpConn

func NewTcpConn(node fatchoy.NodeID, conn net.Conn, enc codec.Encoder, incoming chan<- *fatchoy.Packet,
	outsize int, stats *stats.Stats) *TcpConn

func (*TcpConn) Close

func (t *TcpConn) Close() error

func (*TcpConn) ForceClose

func (t *TcpConn) ForceClose(err error)

func (*TcpConn) Go

func (t *TcpConn) Go(flag fatchoy.EndpointFlag)

func (*TcpConn) RawConn

func (t *TcpConn) RawConn() net.Conn

func (*TcpConn) Send added in v0.4.1

func (t *TcpConn) Send(pkt *fatchoy.Packet) error

type TcpServer

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

func NewTcpServer

func NewTcpServer(enc codec.Encoder, incoming chan *fatchoy.Packet, outsize int) *TcpServer

func (*TcpServer) BacklogChan

func (s *TcpServer) BacklogChan() chan fatchoy.Endpoint

func (*TcpServer) Close

func (s *TcpServer) Close()

func (*TcpServer) ErrorChan

func (s *TcpServer) ErrorChan() chan error

func (*TcpServer) Listen

func (s *TcpServer) Listen(addr string) error

func (*TcpServer) Shutdown

func (s *TcpServer) Shutdown()

type Tuple added in v0.3.10

type Tuple struct {
	Key fatchoy.NodeID
	Val fatchoy.Endpoint
}

Jump to

Keyboard shortcuts

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