utils

package
v0.9.1 Latest Latest
Warning

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

Go to latest
Published: May 20, 2022 License: GPL-3.0 Imports: 11 Imported by: 0

Documentation

Overview

Package utils provides encapsulated elements of a TCPCLv4 session.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type IncomingTransfer

type IncomingTransfer struct {
	Id uint64
	// contains filtered or unexported fields
}

IncomingTransfer represents an incoming Bundle Transfer for the TCPCLv4.

func NewIncomingTransfer

func NewIncomingTransfer(id uint64) *IncomingTransfer

NewIncomingTransfer creates a new IncomingTransfer for the given Transfer ID.

func (IncomingTransfer) IsFinished

func (t IncomingTransfer) IsFinished() bool

IsFinished indicates if this Transfer is finished.

func (*IncomingTransfer) NextSegment

NextSegment reads data from a XFER_SEGMENT and returns a XFER_ACK or an error.

func (IncomingTransfer) String

func (t IncomingTransfer) String() string

func (*IncomingTransfer) ToBundle

func (t *IncomingTransfer) ToBundle() (bndl bpv7.Bundle, err error)

ToBundle returns the Bundle for a finished Transfer.

type KeepaliveTicker

type KeepaliveTicker struct {

	// C sends ticks with the current time.
	C <-chan time.Time
	// contains filtered or unexported fields
}

KeepaliveTicker is a variant of the time.Ticker which works like a wind-up clock.

The next tick of its channel C can be programmed by calling Reschedule. Multiple ticks might be scheduled. The internal channel C will NOT be closed to prevent reading the closing as an erroneous tick.

func NewKeepaliveTicker

func NewKeepaliveTicker() *KeepaliveTicker

NewKeepaliveTicker which needs to be scheduled by calling Reschedule.

func (*KeepaliveTicker) Reschedule

func (ticker *KeepaliveTicker) Reschedule(delay time.Duration)

Reschedule a tick for this ticker's channel C.

func (*KeepaliveTicker) Stop

func (ticker *KeepaliveTicker) Stop()

Stop this ticker.

The internal channel C will NOT be closed to prevent reading the closing as an erroneous tick.

type MessageSwitch

type MessageSwitch interface {
	io.Closer

	// Exchange channels to be serialized.
	//
	// 	* incoming is a "receive only" channel for incoming Messages.
	//	* outgoing is a "send only" channel for outgoing Messages.
	//	* errChan is another "receive only" channel to propagate errors. Only one error should be sent.
	Exchange() (incoming <-chan msgs.Message, outgoing chan<- msgs.Message, errChan <-chan error)
}

MessageSwitch is the interface for a exchange between msgs.Message from channels and an underlying layer.

type MessageSwitchReaderWriter

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

MessageSwitchReaderWriter exchanges msgs.Messages from an io.Reader and io.Writer to channels. If one of the io.Reader or the io.Writer is closeable, closing should be performed after the MessageSwitcher has finished.

func NewMessageSwitchReaderWriter

func NewMessageSwitchReaderWriter(in io.Reader, out io.Writer) (ms *MessageSwitchReaderWriter)

NewMessageSwitchReaderWriter for an io.Reader and io.Writer to exchange msgs.Messages to channels.

func (*MessageSwitchReaderWriter) Close

func (ms *MessageSwitchReaderWriter) Close() (err error)

Close the MessageSwitchReaderWriter. An error might be returned if the internal state is already finished.

func (*MessageSwitchReaderWriter) Exchange

func (ms *MessageSwitchReaderWriter) Exchange() (incoming <-chan msgs.Message, outgoing chan<- msgs.Message, errChan <-chan error)

Exchange channels to be serialized.

type MessageSwitchWebSocket

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

MessageSwitchWebSocket exchanges msgs.Messages from a *websocket.Conn to channels.

func NewMessageSwitchWebSocket

func NewMessageSwitchWebSocket(conn *websocket.Conn) (ms *MessageSwitchWebSocket)

NewMessageSwitchWebSocket for a *websocket.Conn to exchange msgs.Messages to channels.

func (*MessageSwitchWebSocket) Close

func (ms *MessageSwitchWebSocket) Close() (err error)

Close the MessageSwitchWebSocket. An error might be returned if the internal state is already finished.

func (*MessageSwitchWebSocket) Exchange

func (ms *MessageSwitchWebSocket) Exchange() (incoming <-chan msgs.Message, outgoing chan<- msgs.Message, errChan <-chan error)

Exchange channels to be serialized.

type OutgoingTransfer

type OutgoingTransfer struct {
	Id uint64
	// contains filtered or unexported fields
}

OutgoingTransfer represents an outgoing Bundle Transfer for the TCPCLv4.

func NewBundleOutgoingTransfer

func NewBundleOutgoingTransfer(id uint64, b bpv7.Bundle) *OutgoingTransfer

NewBundleOutgoingTransfer creates a new OutgoingTransfer for a Bundle.

func NewOutgoingTransfer

func NewOutgoingTransfer(id uint64) (t *OutgoingTransfer, w io.Writer)

NewOutgoingTransfer creates a new OutgoingTransfer for data written into the returned Writer.

func (*OutgoingTransfer) NextSegment

func (t *OutgoingTransfer) NextSegment(mtu uint64) (dtm *msgs.DataTransmissionMessage, err error)

NextSegment creates the next XFER_SEGMENT for the given MTU or an EOF in case of a finished Writer.

func (OutgoingTransfer) String

func (t OutgoingTransfer) String() string

type TransferManager

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

TransferManager transfers Bundles bidirectionally.

Therefore IncomingTransfer and OutgoingTransfer are generated automatically which will create msgs.Message.

func NewTransferManager

func NewTransferManager(msgIn <-chan msgs.Message, msgOut chan<- msgs.Message, segmentMtu uint64) (tm *TransferManager)

NewTransferManager for incoming and outgoing msgs.Message channels and a configured segment MTU.

func (*TransferManager) Close

func (tm *TransferManager) Close() (err error)

Close down this TransferManager.

func (*TransferManager) Exchange

func (tm *TransferManager) Exchange() (bundles <-chan bpv7.Bundle, errChan <-chan error)

Exchange channels for incoming Bundles or errors.

func (*TransferManager) Send

func (tm *TransferManager) Send(b bpv7.Bundle) error

Send an outgoing Bundle. This method blocks until the Bundle was sent successfully or an error arises.

Jump to

Keyboard shortcuts

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