Documentation
¶
Index ¶
- type AnyMessageTable
- type BaseHandlerFunc
- type BaseServer
- type HelloMessage
- type Message
- type MessageTable
- type PString
- type PacketBuilder
- func (builder PacketBuilder) Build() ([]byte, error)
- func (builder PacketBuilder) MustBuild() []byte
- func (builder PacketBuilder) PutBytes(raw []byte) PacketBuilder
- func (builder PacketBuilder) PutInt16(v int16) PacketBuilder
- func (builder PacketBuilder) PutInt32(v int32) PacketBuilder
- func (builder PacketBuilder) PutInt8(v int8) PacketBuilder
- func (builder PacketBuilder) PutPString(s string) PacketBuilder
- func (builder PacketBuilder) PutString(s string, l int) PacketBuilder
- func (builder PacketBuilder) PutUint16(v uint16) PacketBuilder
- func (builder PacketBuilder) PutUint32(v uint32) PacketBuilder
- func (builder PacketBuilder) PutUint8(v uint8) PacketBuilder
- type ServerConn
- func (c *ServerConn[_, ServerMsg]) DebugMsg(msg ServerMsg) error
- func (c *ServerConn[_, _]) Log() zerolog.Logger
- func (c *ServerConn[ClientMsg, _]) ParsePacket(packet []byte) (ClientMsg, error)
- func (c *ServerConn[ClientMsg, _]) ReadMessage() (ClientMsg, error)
- func (c *ServerConn[_, _]) ReadPacket() ([]byte, error)
- func (c *ServerConn[_, _]) RemoteAddr() net.Addr
- func (c *ServerConn[_, _]) SendHello(hello HelloMessage) error
- func (c *ServerConn[_, ServerMsg]) SendMessage(_ context.Context, msg ServerMsg) error
- func (c *ServerConn[_, ServerMsg]) SendRaw(data []byte) error
- type UnexpectedMessageError
- type UnknownMessageError
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AnyMessageTable ¶
type BaseServer ¶
type BaseServer struct {
// contains filtered or unexported fields
}
func (*BaseServer) Listen ¶
func (b *BaseServer) Listen(log zerolog.Logger, addr string, handler BaseHandlerFunc) error
Listen implements a basic TCP server connection loop, dispatching connections to the handle function. It has some basic provisions for logging and error handling as well.
type HelloMessage ¶ added in v0.0.2
type HelloMessage interface {
SetKey(key uint8)
}
type MessageTable ¶
type MessageTable[T Message] struct { IDToMessage map[uint16]T MessageToID map[reflect.Type]uint16 }
func NewMessageTable ¶
func NewMessageTable[T Message](index map[uint16]T) MessageTable[T]
func (MessageTable[T]) Any ¶
func (table MessageTable[T]) Any() AnyMessageTable
func (MessageTable[T]) Build ¶
func (table MessageTable[T]) Build(id uint16) (T, error)
func (MessageTable[T]) ID ¶
func (table MessageTable[T]) ID(msg T) (uint16, error)
type PString ¶
PString represents a Pascal-style length prefix string. PString uses 2 bytes for the length.
type PacketBuilder ¶
type PacketBuilder struct {
// contains filtered or unexported fields
}
PacketBuilder is used for ad-hoc building of packets, mainly intended for use in the shim client.
func NewPacketBuilder ¶
func NewPacketBuilder() PacketBuilder
func (PacketBuilder) Build ¶
func (builder PacketBuilder) Build() ([]byte, error)
func (PacketBuilder) MustBuild ¶
func (builder PacketBuilder) MustBuild() []byte
func (PacketBuilder) PutBytes ¶
func (builder PacketBuilder) PutBytes(raw []byte) PacketBuilder
func (PacketBuilder) PutInt16 ¶
func (builder PacketBuilder) PutInt16(v int16) PacketBuilder
func (PacketBuilder) PutInt32 ¶
func (builder PacketBuilder) PutInt32(v int32) PacketBuilder
func (PacketBuilder) PutInt8 ¶
func (builder PacketBuilder) PutInt8(v int8) PacketBuilder
func (PacketBuilder) PutPString ¶
func (builder PacketBuilder) PutPString(s string) PacketBuilder
func (PacketBuilder) PutString ¶
func (builder PacketBuilder) PutString(s string, l int) PacketBuilder
func (PacketBuilder) PutUint16 ¶
func (builder PacketBuilder) PutUint16(v uint16) PacketBuilder
func (PacketBuilder) PutUint32 ¶
func (builder PacketBuilder) PutUint32(v uint32) PacketBuilder
func (PacketBuilder) PutUint8 ¶
func (builder PacketBuilder) PutUint8(v uint8) PacketBuilder
type ServerConn ¶
type ServerConn[ClientMsg Message, ServerMsg Message] struct { ClientMsg MessageTable[ClientMsg] ServerMsg MessageTable[ServerMsg] // contains filtered or unexported fields }
ServerConn provides base functionality for PangYa-compatible servers.
func NewServerConn ¶ added in v0.0.2
func NewServerConn[C Message, S Message]( socket net.Conn, log zerolog.Logger, clientMsg MessageTable[C], serverMsg MessageTable[S], ) *ServerConn[C, S]
func (*ServerConn[_, ServerMsg]) DebugMsg ¶
func (c *ServerConn[_, ServerMsg]) DebugMsg(msg ServerMsg) error
DebugMsg prints a message.
func (*ServerConn[_, _]) Log ¶
func (c *ServerConn[_, _]) Log() zerolog.Logger
Log returns a zerolog.Logger for logging.
func (*ServerConn[ClientMsg, _]) ParsePacket ¶
func (c *ServerConn[ClientMsg, _]) ParsePacket(packet []byte) (ClientMsg, error)
ParsePacket attempts to construct a packet from packet data.
func (*ServerConn[ClientMsg, _]) ReadMessage ¶
func (c *ServerConn[ClientMsg, _]) ReadMessage() (ClientMsg, error)
ReadMessage reads a single packet and parses it.
func (*ServerConn[_, _]) ReadPacket ¶
func (c *ServerConn[_, _]) ReadPacket() ([]byte, error)
ReadPacket attempts to read a single packet from the socket. It is not safe to call ReadPacket from multiple goroutines.
func (*ServerConn[_, _]) RemoteAddr ¶ added in v0.0.2
func (c *ServerConn[_, _]) RemoteAddr() net.Addr
RemoteAddr returns the address of the remotely connected endpoint.
func (*ServerConn[_, _]) SendHello ¶ added in v0.0.2
func (c *ServerConn[_, _]) SendHello(hello HelloMessage) error
SendHello sends the initial handshake bytes to the client.
func (*ServerConn[_, ServerMsg]) SendMessage ¶
func (c *ServerConn[_, ServerMsg]) SendMessage(_ context.Context, msg ServerMsg) error
SendMessage sends a message to the client. It is safe to call SendMessage from multiple goroutines.
func (*ServerConn[_, ServerMsg]) SendRaw ¶
func (c *ServerConn[_, ServerMsg]) SendRaw(data []byte) error
SendRaw sends raw bytes into a PangYa packet.
type UnexpectedMessageError ¶
type UnexpectedMessageError struct{ MessageID uint16 }
UnexpectedMessageError is returned when there an unexpected message is received.
func (UnexpectedMessageError) Error ¶
func (e UnexpectedMessageError) Error() string
Error implements the error interface.
type UnknownMessageError ¶
type UnknownMessageError struct{ MessageID uint16 }
UnknownMessageError is returned when there is no known message ID in a given context.
func (UnknownMessageError) Error ¶
func (e UnknownMessageError) Error() string
Error implements the error interface.