Documentation ¶
Index ¶
- func Protocols() []string
- func Register(protocol string, builder *Builder)
- type Builder
- type DockingRequest
- type KCPPier
- type KCPShip
- type Pier
- type PierBase
- type Ship
- type ShipBase
- func (ship *ShipBase) IsMine() bool
- func (ship *ShipBase) Load(data []byte) (ok bool, err error)
- func (ship *ShipBase) LocalAddr() net.Addr
- func (ship *ShipBase) RemoteAddr() net.Addr
- func (ship *ShipBase) Sink()
- func (ship *ShipBase) String() string
- func (ship *ShipBase) Transport() *hub.Transport
- func (ship *ShipBase) UnloadTo(buf []byte) (n int, ok bool, err error)
- type TCPPier
- type TCPShip
- type TestShip
- func (d *TestShip) IsMine() bool
- func (d *TestShip) Load(data []byte) (ok bool, err error)
- func (d *TestShip) LocalAddr() net.Addr
- func (d *TestShip) RemoteAddr() net.Addr
- func (d *TestShip) Reverse() *TestShip
- func (d *TestShip) Sink()
- func (d *TestShip) String() string
- func (d *TestShip) Transport() *hub.Transport
- func (d *TestShip) UnloadTo(buf []byte) (n int, ok bool, err error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Builder ¶
type Builder struct { LaunchShip func(ctx context.Context, transport *hub.Transport, ip net.IP) (Ship, error) EstablishPier func(ctx context.Context, transport *hub.Transport, dockingRequests chan *DockingRequest) (Pier, error) }
Builder is a factory that can build ships and piers of it's protocol.
func GetBuilder ¶
GetBuilder returns the builder for the given protocol, or nil if it does not exist.
type DockingRequest ¶
DockingRequest is a uniform request that Piers emit when a new ship arrives.
type Pier ¶
type Pier interface { // String returns a human readable informational summary about the ship. String() string // Transport returns the transport used for this ship. Transport() *hub.Transport // Docking is the blocking (!) procedure that docks new ships and sends docking requests. This should be run as a worker by the caller. Docking(ctx context.Context) error // Addr returns the underlying network address used by the listener. Addr() net.Addr // Abolish closes the underlying listener and cleans up any related resources. Abolish() }
Pier represents a network connection listener.
func EstablishPier ¶
func EstablishPier(ctx context.Context, transport *hub.Transport, dockingRequests chan *DockingRequest) (Pier, error)
EstablishPier is shorthand function to get the transport's builder and establish a pier.
type PierBase ¶
type PierBase struct {
// contains filtered or unexported fields
}
PierBase implements common functions to comply with the Pier interface.
func (*PierBase) Abolish ¶
func (pier *PierBase) Abolish()
Abolish closes the underlying listener and cleans up any related resources.
func (*PierBase) Docking ¶
Docking is the blocking (!) procedure that docks new ships and sends docking requests. This should be run as a worker by the caller.
type Ship ¶
type Ship interface { // String returns a human readable informational summary about the ship. String() string // Transport returns the transport used for this ship. Transport() *hub.Transport // IsMine returns whether the ship was launched from here. IsMine() bool // Load loads data into the ship - ie. sends the data via the connection. It returns the amount of data written, a boolean if everything is ok and an optional error if something is not okay and needs to be reported. If ok is false, stop using the ship. Load(data []byte) (ok bool, err error) // UnloadTo unloads data from the ship - ie. receives data from the connection - puts it into the buf. It returns the amount of data written, a boolean if everything is ok and an optional error if something is not okay and needs to be reported. If ok is false, stop using the ship. UnloadTo(buf []byte) (n int, ok bool, err error) // LocalAddr returns the underlying local net.Addr of the connection. LocalAddr() net.Addr // RemoteAddr returns the underlying remote net.Addr of the connection. RemoteAddr() net.Addr // Sink closes the underlying connection and cleans up any related resources. Sink() }
Ship represents a network layer connection.
type ShipBase ¶
type ShipBase struct {
// contains filtered or unexported fields
}
ShipBase implements common functions to comply with the Ship interface.
func (*ShipBase) Load ¶
Load loads data into the ship - ie. sends the data via the connection. It returns the amount of data written, a boolean if everything is ok and an optional error if something is not okay and needs to be reported. If ok is false, stop using the ship.
func (*ShipBase) RemoteAddr ¶
RemoteAddr returns the underlying remote net.Addr of the connection.
func (*ShipBase) Sink ¶
func (ship *ShipBase) Sink()
Sink closes the underlying connection and cleans up any related resources.
func (*ShipBase) UnloadTo ¶
UnloadTo unloads data from the ship - ie. receives data from the connection - puts it into the buf. It returns the amount of data written, a boolean if everything is ok and an optional error if something is not okay and needs to be reported. If ok is false, stop using the ship.
type TestShip ¶
type TestShip struct {
// contains filtered or unexported fields
}
TestShip is a simulated ship that is used for testing higher level components.
func (*TestShip) Load ¶
Load loads data into the ship - ie. sends the data via the connection. It returns the amount of data written, a boolean if everything is ok and an optional error if something is not okay and needs to be reported. If ok is false, stop using the ship.
func (*TestShip) RemoteAddr ¶
RemoteAddr returns the underlying remote net.Addr of the connection.
func (*TestShip) Reverse ¶
Reverse creates a connected TestShip. This is used to simulate a connection instead of using a Pier.
func (*TestShip) Sink ¶
func (d *TestShip) Sink()
Sink closes the underlying connection and cleans up any related resources.
func (*TestShip) UnloadTo ¶
UnloadTo unloads data from the ship - ie. receives data from the connection - puts it into the buf. It returns the amount of data written, a boolean if everything is ok and an optional error if something is not okay and needs to be reported. If ok is false, stop using the ship.