Documentation ¶
Overview ¶
Package network implements common utilities for higher-level (emulated) Warcraft III network components.
Index ¶
- Constants
- Variables
- func Deadline(timeout time.Duration) time.Time
- func IsCloseError(err error) bool
- func IsRefusedError(err error) bool
- func IsSysCallError(err error, errno ...syscall.Errno) bool
- func IsTemporary(err error) bool
- func IsTimeout(err error) bool
- func IsUnexpectedCloseError(err error) bool
- func IsUseClosedNetworkError(err error) bool
- func Topic(s string) interface{}
- func UnnestError(err error) error
- type AsyncError
- type BNCSConn
- func (c *BNCSConn) Close() error
- func (c *BNCSConn) Conn() net.Conn
- func (c *BNCSConn) NextPacket(timeout time.Duration) (bncs.Packet, error)
- func (c *BNCSConn) Run(f Emitter, timeout time.Duration) error
- func (c *BNCSConn) Send(pkt bncs.Packet) (int, error)
- func (c *BNCSConn) SendRL(pkt bncs.Packet) (int, error)
- func (c *BNCSConn) SetConn(conn net.Conn, fact bncs.PacketFactory, enc bncs.Encoding)
- func (c *BNCSConn) SetWriteTimeout(wto time.Duration)
- func (c *BNCSConn) Write(b []byte) (int, error)
- type CAPIConn
- func (c *CAPIConn) Close() error
- func (c *CAPIConn) Conn() *websocket.Conn
- func (c *CAPIConn) NextPacket(timeout time.Duration) (*capi.Packet, error)
- func (c *CAPIConn) Run(f Emitter, timeout time.Duration) error
- func (c *CAPIConn) Send(pkt *capi.Packet) error
- func (c *CAPIConn) SetConn(conn *websocket.Conn)
- func (c *CAPIConn) SetWriteTimeout(wto time.Duration)
- type Emitter
- type Event
- type EventArg
- type EventEmitter
- type EventHandler
- type EventID
- type Listener
- type RWMutex
- type RunStart
- type RunStop
- type W3GSConn
- func (c *W3GSConn) Close() error
- func (c *W3GSConn) Conn() net.Conn
- func (c *W3GSConn) NextPacket(timeout time.Duration) (w3gs.Packet, error)
- func (c *W3GSConn) Run(f Emitter, timeout time.Duration) error
- func (c *W3GSConn) Send(pkt w3gs.Packet) (int, error)
- func (c *W3GSConn) SetConn(conn net.Conn, fact w3gs.PacketFactory, enc w3gs.Encoding)
- func (c *W3GSConn) SetWriteTimeout(wto time.Duration)
- func (c *W3GSConn) Write(b []byte) (int, error)
- type W3GSPacketConn
- func (c *W3GSPacketConn) Broadcast(pkt w3gs.Packet) (int, error)
- func (c *W3GSPacketConn) Close() error
- func (c *W3GSPacketConn) Conn() net.PacketConn
- func (c *W3GSPacketConn) NextPacket(timeout time.Duration) (w3gs.Packet, net.Addr, error)
- func (c *W3GSPacketConn) Run(f Emitter, timeout time.Duration) error
- func (c *W3GSPacketConn) Send(addr net.Addr, pkt w3gs.Packet) (int, error)
- func (c *W3GSPacketConn) SetConn(conn net.PacketConn, fact w3gs.PacketFactory, enc w3gs.Encoding)
- func (c *W3GSPacketConn) SetWriteTimeout(wto time.Duration)
Constants ¶
const NoTimeout = time.Duration(-1)
NoTimeout constant to read/write without deadline
const WSAECONNABORTED = 10053
WSAECONNABORTED is ECONNABORTED on Windows
const WSAECONNREFUSED = 10061
WSAECONNREFUSED is ECONNREFUSED on Windows
const WSAECONNRESET = 10054
WSAECONNRESET is ECONNRESET on Windows
const WSAENOTCONN = 10057
WSAENOTCONN is ENOTCONN on Windows
const WSAESHUTDOWN = 10058
WSAESHUTDOWN is ESHUTDOWN on Windows
Variables ¶
var W3GSBroadcastAddr = net.UDPAddr{IP: net.IPv4bcast, Port: 6112}
W3GSBroadcastAddr is used to broadcast W3GS packets to LAN
Functions ¶
func IsCloseError ¶ added in v1.5.0
IsCloseError checks if err indicates a (cleanly) closed connection
func IsRefusedError ¶ added in v1.5.0
IsRefusedError checks if err indicates a refused connection
func IsSysCallError ¶
IsSysCallError checks if error is one of syscall.Errno
func IsTemporary ¶ added in v1.5.0
IsTemporary checks is error is temporary
func IsUnexpectedCloseError ¶ added in v1.5.0
IsUnexpectedCloseError checks if err indicates an unexpectedly closed connection
func IsUseClosedNetworkError ¶
IsUseClosedNetworkError checks if net.error is poll.ErrNetClosed
Types ¶
type AsyncError ¶
AsyncError keeps track of where a non-fatal asynchronous error orignated
func (*AsyncError) Error ¶
func (e *AsyncError) Error() string
func (*AsyncError) Temporary ¶ added in v1.5.0
func (e *AsyncError) Temporary() bool
Temporary error
type BNCSConn ¶ added in v1.2.0
type BNCSConn struct {
// contains filtered or unexported fields
}
BNCSConn manages a TCP connection that transfers BNCS packets from/to client. Public methods/fields are thread-safe unless explicitly stated otherwise
func NewBNCSConn ¶ added in v1.2.0
NewBNCSConn returns conn wrapped in BNCSConn
func (*BNCSConn) NextPacket ¶ added in v1.5.0
NextPacket waits for the next packet (with given timeout) and returns its deserialized representation Not safe for concurrent invocation
func (*BNCSConn) Run ¶ added in v1.5.0
Run reads packets (with given max time between packets) from Conn and emits an event for each received packet Not safe for concurrent invocation
func (*BNCSConn) SetConn ¶ added in v1.2.0
SetConn closes the old connection and starts using the new net.Conn
func (*BNCSConn) SetWriteTimeout ¶ added in v1.6.0
SetWriteTimeout for Send() calls
type CAPIConn ¶ added in v1.2.0
type CAPIConn struct {
// contains filtered or unexported fields
}
CAPIConn manages a websocket connection that processes CAPI requests. Public methods/fields are thread-safe unless explicitly stated otherwise
func NewCAPIConn ¶ added in v1.2.0
NewCAPIConn returns conn wrapped in CAPIConn
func (*CAPIConn) NextPacket ¶ added in v1.2.0
NextPacket waits for the next packet (with given timeout) and returns its deserialized representation Not safe for concurrent invocation
func (*CAPIConn) Run ¶ added in v1.2.0
Run reads packets (with given max time between packets) from Conn and fires an event through f for each received packet Not safe for concurrent invocation
func (*CAPIConn) SetConn ¶ added in v1.2.0
SetConn closes the old connection and starts using the new net.Conn
func (*CAPIConn) SetWriteTimeout ¶ added in v1.6.0
SetWriteTimeout for Send() calls
type Event ¶
Event structure passed to event handlers
func (*Event) PreventNext ¶
func (e *Event) PreventNext()
PreventNext prevents any other handlers from being called for this event
type EventArg ¶
type EventArg interface{}
EventArg identifies an event (and with it the type of its Arg)
type EventEmitter ¶
type EventEmitter struct {
// contains filtered or unexported fields
}
EventEmitter is an event emitter based on argument types For every type, a listener can register callbacks. Callbacks will be fired in reverse order of registration. The structure is thread-safe and functions can be called from multiple goroutines at the same time.
func (*EventEmitter) Fire ¶
func (e *EventEmitter) Fire(a EventArg, o ...EventArg) bool
Fire new event of type a
func (*EventEmitter) Off ¶
func (e *EventEmitter) Off(id EventID)
Off stops id from listening to future events
func (*EventEmitter) OffAll ¶
func (e *EventEmitter) OffAll(a EventArg)
OffAll clears the current listeners for events of type a
func (*EventEmitter) On ¶
func (e *EventEmitter) On(a EventArg, h EventHandler) EventID
On an event of type a is, call handler h
func (*EventEmitter) Once ¶
func (e *EventEmitter) Once(a EventArg, h EventHandler) EventID
Once an event of type a is fired, call handler h once
type EventID ¶
type EventID struct {
// contains filtered or unexported fields
}
EventID identifies a single event handler
type Listener ¶ added in v1.2.0
type Listener interface { On(a EventArg, h EventHandler) EventID Once(a EventArg, h EventHandler) EventID Off(id EventID) OffAll(a EventArg) }
Listener is the interface that wraps the basic On/Once methods
type W3GSConn ¶
type W3GSConn struct {
// contains filtered or unexported fields
}
W3GSConn manages a TCP connection that transfers W3GS packets. Public methods/fields are thread-safe unless explicitly stated otherwise
func NewW3GSConn ¶
NewW3GSConn returns conn wrapped in W3GSConn
func (*W3GSConn) NextPacket ¶
NextPacket waits for the next packet (with given timeout) and returns its deserialized representation Not safe for concurrent invocation
func (*W3GSConn) Run ¶
Run reads packets (with given max time between packets) from Conn and fires an event through f for each received packet Not safe for concurrent invocation
func (*W3GSConn) SetWriteTimeout ¶ added in v1.6.0
SetWriteTimeout for Send() calls
type W3GSPacketConn ¶
type W3GSPacketConn struct {
// contains filtered or unexported fields
}
W3GSPacketConn manages a UDP connection that transfers W3GS packets. Public methods/fields are thread-safe unless explicitly stated otherwise
func NewW3GSPacketConn ¶
func NewW3GSPacketConn(conn net.PacketConn, fact w3gs.PacketFactory, enc w3gs.Encoding) *W3GSPacketConn
NewW3GSPacketConn returns conn wrapped in W3GSPacketConn
func (*W3GSPacketConn) Broadcast ¶
func (c *W3GSPacketConn) Broadcast(pkt w3gs.Packet) (int, error)
Broadcast a packet over LAN
func (*W3GSPacketConn) Conn ¶
func (c *W3GSPacketConn) Conn() net.PacketConn
Conn returns the underlying net.PacketConn
func (*W3GSPacketConn) NextPacket ¶
NextPacket waits for the next packet (with given timeout) and returns its deserialized representation Not safe for concurrent invocation
func (*W3GSPacketConn) Run ¶
func (c *W3GSPacketConn) Run(f Emitter, timeout time.Duration) error
Run reads packets (with given max time between packets) from Conn and emits an event for each received packet Not safe for concurrent invocation
func (*W3GSPacketConn) SetConn ¶
func (c *W3GSPacketConn) SetConn(conn net.PacketConn, fact w3gs.PacketFactory, enc w3gs.Encoding)
SetConn closes the old connection and starts using the new net.PacketConn
func (*W3GSPacketConn) SetWriteTimeout ¶ added in v1.6.0
func (c *W3GSPacketConn) SetWriteTimeout(wto time.Duration)
SetWriteTimeout for Send() calls
Directories ¶
Path | Synopsis |
---|---|
Package bnet implements a mocked BNCS client that can be used to interact with BNCS servers.
|
Package bnet implements a mocked BNCS client that can be used to interact with BNCS servers. |
Package chat implements the official classic Battle.net chat API.
|
Package chat implements the official classic Battle.net chat API. |
Package dummy implements a mocked Warcraft III game client that can be used to add dummy players to lobbies.
|
Package dummy implements a mocked Warcraft III game client that can be used to add dummy players to lobbies. |
Package lan implements a mocked Warcraft III LAN client that can be used to discover local games.
|
Package lan implements a mocked Warcraft III LAN client that can be used to discover local games. |
Package lobby implements a mocked Warcraft III game server that can be used to host lobbies.
|
Package lobby implements a mocked Warcraft III game server that can be used to host lobbies. |
Package peer implements a mocked Warcraft III client that can be used to manage peer connections in lobbies.
|
Package peer implements a mocked Warcraft III client that can be used to manage peer connections in lobbies. |