gameserver

package module
v0.0.0-...-916b0b1 Latest Latest
Warning

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

Go to latest
Published: Sep 1, 2020 License: MIT Imports: 11 Imported by: 0

README

gameserver

Documentation

Index

Constants

View Source
const (

	// DefaultTimeoutScale is the default TimeoutScale in a NetworkTransport.
	DefaultTimeoutScale = 256 * 1024 // 256KB

)

Variables

View Source
var (
	// ErrTransportShutdown is returned when operations on a transport are
	// invoked after it's been terminated.
	ErrTransportShutdown = errors.New("transport shutdown")

	// ErrPipelineShutdown is returned when the pipeline is closed.
	ErrPipelineShutdown = errors.New("append pipeline closed")
)

Functions

This section is empty.

Types

type Config

type Config struct {
	HeartbeatTimeout time.Duration
	NotifyCh         chan<- bool

	LogOutput io.Writer
	LogLevel  string
}

func DefaultConfig

func DefaultConfig() *Config

type Game

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

func NewGame

func NewGame(conf *Config, trans Transport) (*Game, error)

type NetworkTransport

type NetworkTransport struct {
	TimeoutScale int
	// contains filtered or unexported fields
}

func NewNetworkTransport

func NewNetworkTransport(
	stream StreamLayer,
	maxPool int,
	timeout time.Duration,
	logOutput io.Writer,
) *NetworkTransport

func NewNetworkTransportWithConfig

func NewNetworkTransportWithConfig(
	config *NetworkTransportConfig,
) *NetworkTransport

NewNetworkTransportWithConfig creates a new network transport with the given config struct

func NewTCPTransport

func NewTCPTransport(
	bindAddr string,
	advertise net.Addr,
	maxPool int,
	timeout time.Duration,
	logOutput io.Writer,
) (*NetworkTransport, error)

NewTCPTransport returns a NetworkTransport that is built on top of a TCP streaming transport layer.

func (*NetworkTransport) Consumer

func (n *NetworkTransport) Consumer() <-chan RPC

func (*NetworkTransport) IsShutdown

func (n *NetworkTransport) IsShutdown() bool

func (*NetworkTransport) LocalAddr

func (n *NetworkTransport) LocalAddr() ServerAddress

func (*NetworkTransport) SetHeartbeatHandler

func (n *NetworkTransport) SetHeartbeatHandler(cb func(rpc RPC))

type NetworkTransportConfig

type NetworkTransportConfig struct {
	Logger *log.Logger

	Stream StreamLayer

	MaxPool int

	Timeout time.Duration
}

type ProtocolVersion

type ProtocolVersion int

type RPC

type RPC struct {
	Command  interface{}
	Reader   io.Reader
	RespChan chan<- RPCResponse
}

func (*RPC) Respond

func (r *RPC) Respond(resp interface{}, err error)

type RPCHeader

type RPCHeader struct {
	ProtocolVersion ProtocolVersion
}

type RPCRequest

type RPCRequest struct {
	RPCHeader
	Payload []byte
}

func (*RPCRequest) GetRPCHeader

func (r *RPCRequest) GetRPCHeader() RPCHeader

type RPCRequestRsp

type RPCRequestRsp struct {
	RPCHeader
	Payload []byte
}

func (*RPCRequestRsp) GetRPCHeader

func (r *RPCRequestRsp) GetRPCHeader() RPCHeader

type RPCResponse

type RPCResponse struct {
	Response interface{}
	Error    error
}

type ServerAddress

type ServerAddress string

type StreamLayer

type StreamLayer interface {
	net.Listener

	// Dial is used to create a new outgoing connection
	Dial(address ServerAddress, timeout time.Duration) (net.Conn, error)
}

type TCPStreamLayer

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

TCPStreamLayer implements StreamLayer interface for plain TCP.

func (*TCPStreamLayer) Accept

func (t *TCPStreamLayer) Accept() (c net.Conn, err error)

Accept implements the net.Listener interface.

func (*TCPStreamLayer) Addr

func (t *TCPStreamLayer) Addr() net.Addr

Addr implements the net.Listener interface.

func (*TCPStreamLayer) Close

func (t *TCPStreamLayer) Close() (err error)

Close implements the net.Listener interface.

func (*TCPStreamLayer) Dial

func (t *TCPStreamLayer) Dial(address ServerAddress, timeout time.Duration) (net.Conn, error)

Dial implements the StreamLayer interface.

type Transport

type Transport interface {
	Consumer() <-chan RPC
	SetHeartbeatHandler(cb func(rpc RPC))
}

type WithRPCHeader

type WithRPCHeader interface {
	GetRPCHeader() RPCHeader
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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