common

package
v0.0.3 Latest Latest
Warning

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

Go to latest
Published: Jul 16, 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(zerolog.Logger, 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(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 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) 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.

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