Documentation ¶
Index ¶
- Constants
- Variables
- func AddTerminator(ctrl CtrlChannel, serviceId, binding, address, identity string, ...) (string, error)
- func DecodePayload(payload *Payload) ([]byte, bool)
- func GlobalRegistry() *registry
- func NewRegistry() *registry
- func ReadUntil(peer transport.Connection, stop byte) ([]byte, error)
- func ReadUntilNewline(peer transport.Connection) ([]byte, error)
- func RemoveTerminator(ctrl CtrlChannel, terminatorId string) error
- func SendRequest(request *Request, peer io.Writer) error
- func SendResponse(response *Response, peer io.Writer) error
- func SetOriginatorFlag(flags uint32, originator Originator) uint32
- func UpdateTerminator(ctrl CtrlChannel, terminatorId string, staticCost *uint16, ...) error
- type Acknowledgement
- type Address
- type BindHandler
- type CloseHandler
- type CloseHelper
- type Connection
- type CtrlChannel
- type Decoder
- type Dialer
- type Factory
- type Header
- type Listener
- type Options
- type OptionsData
- type Originator
- type Payload
- type PayloadBuffer
- type PayloadBufferController
- type PayloadBufferForwarder
- type PayloadFlag
- type PeekHandler
- type ReceiveHandler
- type Request
- type Response
- type SessionInfo
- type TransmitBuffer
- type Xgress
- func (self *Xgress) AddPeekHandler(peekHandler PeekHandler)
- func (self *Xgress) Address() Address
- func (self *Xgress) Close()
- func (self *Xgress) CloseTimeout(duration time.Duration)
- func (self *Xgress) Closed() bool
- func (self *Xgress) GetEndSession() *Payload
- func (self *Xgress) GetStartSession() *Payload
- func (self *Xgress) IsTerminator() bool
- func (self *Xgress) Label() string
- func (self *Xgress) Originator() Originator
- func (self *Xgress) SendAcknowledgement(acknowledgement *Acknowledgement) error
- func (self *Xgress) SendPayload(payload *Payload) error
- func (self *Xgress) SessionId() *identity.TokenId
- func (self *Xgress) SetCloseHandler(closeHandler CloseHandler)
- func (self *Xgress) SetPayloadBuffer(payloadBuffer *PayloadBuffer)
- func (self *Xgress) SetReceiveHandler(receiveHandler ReceiveHandler)
- func (self *Xgress) Start()
Constants ¶
View Source
const ( MinHeaderKey = 2000 MaxHeaderKey = MinHeaderKey + int32(math.MaxUint8) HeaderKeySessionId = 2256 HeaderKeySequence = 2257 HeaderKeyFlags = 2258 ContentTypePayloadType = 1100 ContentTypeAcknowledgementType = 1101 )
View Source
const DECODER = "data"
View Source
const (
HeaderKeyUUID = 0
)
Variables ¶
View Source
var ContentTypeValue = map[string]int32{ "PayloadType": ContentTypePayloadType, "AcknowledgementType": ContentTypeAcknowledgementType, }
Functions ¶
func AddTerminator ¶
func AddTerminator(ctrl CtrlChannel, serviceId, binding, address, identity string, identitySecret []byte, peerData map[uint32][]byte, staticCost uint16, precedence ctrl_pb.TerminatorPrecedence) (string, error)
func DecodePayload ¶
func GlobalRegistry ¶
func GlobalRegistry() *registry
func NewRegistry ¶
func NewRegistry() *registry
func ReadUntilNewline ¶
func ReadUntilNewline(peer transport.Connection) ([]byte, error)
func RemoveTerminator ¶
func RemoveTerminator(ctrl CtrlChannel, terminatorId string) error
func SetOriginatorFlag ¶
func SetOriginatorFlag(flags uint32, originator Originator) uint32
func UpdateTerminator ¶
func UpdateTerminator(ctrl CtrlChannel, terminatorId string, staticCost *uint16, precedence *ctrl_pb.TerminatorPrecedence) error
Types ¶
type Acknowledgement ¶
func NewAcknowledgement ¶
func NewAcknowledgement(sessionId string, originator Originator) *Acknowledgement
func UnmarshallAcknowledgement ¶
func UnmarshallAcknowledgement(msg *channel2.Message) (*Acknowledgement, error)
func (*Acknowledgement) GetSequence ¶
func (ack *Acknowledgement) GetSequence() []int32
func (*Acknowledgement) Marshall ¶
func (ack *Acknowledgement) Marshall() *channel2.Message
type BindHandler ¶
type BindHandler interface {
HandleXgressBind(x *Xgress)
}
The BindHandlers are invoked to install the appropriate handlers.
type CloseHandler ¶
type CloseHandler interface { // HandleXgressClose is invoked when the connected peer terminates the communication. // HandleXgressClose(x *Xgress) }
CloseHandler is invoked by an xgress when the connected peer terminates the communication.
type CloseHelper ¶
type CloseHelper struct {
// contains filtered or unexported fields
}
func (*CloseHelper) Close ¶
func (self *CloseHelper) Close() error
func (*CloseHelper) Init ¶
func (self *CloseHelper) Init(closer io.Closer)
type Connection ¶
type CtrlChannel ¶
type Factory ¶
type Factory interface { CreateListener(optionsData OptionsData) (Listener, error) CreateDialer(optionsData OptionsData) (Dialer, error) }
type Header ¶
func (*Header) GetOriginator ¶
func (header *Header) GetOriginator() Originator
func (*Header) GetSessionId ¶
type Listener ¶
type Listener interface { Listen(address string, bindHandler BindHandler) error Close() error }
type Options ¶
type Options struct { Mtu int32 Retransmission bool RandomDrops bool Drop1InN int32 GetSessionTimeout time.Duration }
Options contains common Xgress configuration options
func DefaultOptions ¶
func DefaultOptions() *Options
func LoadOptions ¶
func LoadOptions(data OptionsData) (*Options, error)
type OptionsData ¶
type OptionsData map[interface{}]interface{}
type Originator ¶
type Originator int32
const ( Initiator Originator = 0 Terminator Originator = 1 )
func (Originator) String ¶
func (o Originator) String() string
type Payload ¶
func (*Payload) GetLoggerFields ¶
func (*Payload) GetSequence ¶
func (*Payload) IsSessionEndFlagSet ¶
func (*Payload) IsSessionStartFlagSet ¶ added in v0.12.0
type PayloadBuffer ¶
type PayloadBuffer struct { SrcAddress Address Originator Originator // contains filtered or unexported fields }
func NewPayloadBuffer ¶
func NewPayloadBuffer(sessionId *identity.TokenId, forwarder PayloadBufferForwarder) *PayloadBuffer
func (*PayloadBuffer) AcknowledgePayload ¶
func (buffer *PayloadBuffer) AcknowledgePayload(payload *Payload)
func (*PayloadBuffer) BufferPayload ¶
func (buffer *PayloadBuffer) BufferPayload(payload *Payload)
func (*PayloadBuffer) Close ¶
func (buffer *PayloadBuffer) Close()
func (*PayloadBuffer) ReceiveAcknowledgement ¶
func (buffer *PayloadBuffer) ReceiveAcknowledgement(ack *Acknowledgement)
type PayloadBufferController ¶
type PayloadBufferController struct {
// contains filtered or unexported fields
}
func NewPayloadBufferController ¶
func NewPayloadBufferController(forwarder PayloadBufferForwarder) *PayloadBufferController
func (*PayloadBufferController) BufferForSession ¶
func (controller *PayloadBufferController) BufferForSession(sessionId *identity.TokenId, address Address) *PayloadBuffer
func (*PayloadBufferController) EndSession ¶
func (controller *PayloadBufferController) EndSession(sessionId *identity.TokenId)
type PayloadBufferForwarder ¶
type PayloadFlag ¶
type PayloadFlag uint32
const ( PayloadFlagSessionEnd PayloadFlag = 1 PayloadFlagEgress PayloadFlag = 2 PayloadFlagSessionStart PayloadFlag = 4 )
type PeekHandler ¶
type PeekHandler interface { Rx(x *Xgress, payload *Payload) Tx(x *Xgress, payload *Payload) Close(x *Xgress) }
PeekHandler allows registering watcher to react to data flowing an xgress instance
type ReceiveHandler ¶
type ReceiveHandler interface { // HandleXgressReceive is invoked when data is received from the connected xgress peer. // HandleXgressReceive(payload *Payload, x *Xgress) }
ReceiveHandler is invoked by an xgress whenever data is received from the connected peer. Generally a ReceiveHandler is implemented to connect the xgress to a data plane data transmission system.
type Request ¶
func ReceiveRequest ¶
func ReceiveRequest(peer transport.Connection) (*Request, error)
func RequestFromJSON ¶
type Response ¶
type Response struct { Success bool `json:"scc"` Message string `json:"msg"` SessionId string `json:"sessionId"` }
func CreateSession ¶
func CreateSession(ctrl CtrlChannel, peer Connection, request *Request, bindHandler BindHandler, options *Options) *Response
func ReceiveResponse ¶
func ReceiveResponse(peer transport.Connection) (*Response, error)
func ResponseFromJSON ¶
type SessionInfo ¶
type SessionInfo struct { SessionId *identity.TokenId Address Address ResponseMsg *channel2.Message // contains filtered or unexported fields }
func GetSession ¶
func GetSession(ctrl CtrlChannel, ingressId string, serviceId string, timeout time.Duration, peerData map[uint32][]byte) (*SessionInfo, error)
type TransmitBuffer ¶
type TransmitBuffer struct {
// contains filtered or unexported fields
}
func NewTransmitBuffer ¶
func NewTransmitBuffer() *TransmitBuffer
func (*TransmitBuffer) ReadyForTransmit ¶
func (buffer *TransmitBuffer) ReadyForTransmit() []*Payload
func (*TransmitBuffer) ReceiveUnordered ¶
func (buffer *TransmitBuffer) ReceiveUnordered(payload *Payload)
type Xgress ¶
type Xgress struct { Options *Options // contains filtered or unexported fields }
func NewXgress ¶
func NewXgress(sessionId *identity.TokenId, address Address, peer Connection, originator Originator, options *Options) *Xgress
func (*Xgress) AddPeekHandler ¶
func (self *Xgress) AddPeekHandler(peekHandler PeekHandler)
func (*Xgress) CloseTimeout ¶
func (*Xgress) GetEndSession ¶
func (*Xgress) GetStartSession ¶ added in v0.12.0
func (*Xgress) IsTerminator ¶
func (*Xgress) Originator ¶
func (self *Xgress) Originator() Originator
func (*Xgress) SendAcknowledgement ¶
func (self *Xgress) SendAcknowledgement(acknowledgement *Acknowledgement) error
func (*Xgress) SendPayload ¶
func (*Xgress) SetCloseHandler ¶
func (self *Xgress) SetCloseHandler(closeHandler CloseHandler)
func (*Xgress) SetPayloadBuffer ¶
func (self *Xgress) SetPayloadBuffer(payloadBuffer *PayloadBuffer)
func (*Xgress) SetReceiveHandler ¶
func (self *Xgress) SetReceiveHandler(receiveHandler ReceiveHandler)
Click to show internal directories.
Click to hide internal directories.