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 ¶
func (t *IncomingTransfer) NextSegment(dtm *msgs.DataTransmissionMessage) (dam *msgs.DataAcknowledgementMessage, err error)
NextSegment reads data from a XFER_SEGMENT and returns a XFER_ACK or an error.
func (IncomingTransfer) String ¶
func (t IncomingTransfer) String() string
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.
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.
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.