common

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Jun 3, 2023 License: Apache-2.0, BSD-3-Clause, ISC Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AnyMessageTable

type AnyMessageTable interface {
	ID(msg Message) (uint16, error)
	Build(id uint16) (Message, error)
}

type BaseHandlerFunc

type BaseHandlerFunc func(*log.Entry, net.Conn) error

type BaseServer

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

func (*BaseServer) Close

func (b *BaseServer) Close() error

Close stops accepting connections.

func (*BaseServer) Listen

func (b *BaseServer) Listen(logger *log.Entry, 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 Message

type Message interface{}

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

type PString struct {
	Length uint16 `struct:"sizeof=Value"`
	Value  string
}

PString represents a Pascal-style length prefix string. PString uses 2 bytes for the length.

func ToPString

func ToPString(value string) PString

ToPString is a helper function that constructs a PString from a normal string value.

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

func (builder PacketBuilder) PutInt8(v int8) PacketBuilder

func (PacketBuilder) PutInt16

func (builder PacketBuilder) PutInt16(v int16) PacketBuilder

func (PacketBuilder) PutInt32

func (builder PacketBuilder) PutInt32(v int32) 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) PutUint8

func (builder PacketBuilder) PutUint8(v uint8) PacketBuilder

func (PacketBuilder) PutUint16

func (builder PacketBuilder) PutUint16(v uint16) PacketBuilder

func (PacketBuilder) PutUint32

func (builder PacketBuilder) PutUint32(v uint32) PacketBuilder

type ServerConn

type ServerConn[ClientMsg Message, ServerMsg Message] struct {
	Socket net.Conn
	Key    uint8
	Log    *log.Entry

	ClientMsg MessageTable[ClientMsg]
	ServerMsg MessageTable[ServerMsg]
}

ServerConn provides base functionality for PangYa-compatible servers.

func (*ServerConn[_, ServerMsg]) DebugMsg

func (c *ServerConn[_, ServerMsg]) DebugMsg(msg ServerMsg) error

DebugMsg prints a message.

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.

func (*ServerConn[_, ServerMsg]) SendMessage

func (c *ServerConn[_, ServerMsg]) SendMessage(msg ServerMsg) error

SendMessage sends a message to the client.

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.

Directories

Path Synopsis
Package bufconn provides a net.Conn implemented by a buffer and related dialing and listening functionality.
Package bufconn provides a net.Conn implemented by a buffer and related dialing and listening functionality.

Jump to

Keyboard shortcuts

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