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 InitAcker(forwarder PayloadBufferForwarder, metrics metrics.Registry)
- func InitMetrics(registry metrics.UsageRegistry)
- func InitPayloadIngester()
- func InitRetransmitter(forwarder PayloadBufferForwarder, metrics metrics.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 Acker
- type Acknowledgement
- type Address
- type BindHandler
- type CloseHandler
- type CloseHelper
- type Connection
- type CtrlChannel
- type Decoder
- type Dialer
- type Factory
- type Header
- type LinkReceiveBuffer
- type LinkSendBuffer
- type Listener
- type Options
- type OptionsData
- type Originator
- type Payload
- type PayloadBufferForwarder
- type PayloadFlag
- type PayloadIngester
- type PeekHandler
- type ReceiveHandler
- type Request
- type Response
- type Retransmitter
- type SessionInfo
- 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) PayloadReceived(payload *Payload)
- func (self *Xgress) SendAcknowledgement(acknowledgement *Acknowledgement) error
- func (self *Xgress) SendEmptyAck()
- func (self *Xgress) SendPayload(payload *Payload) error
- func (self *Xgress) SessionId() string
- func (self *Xgress) SetCloseHandler(closeHandler CloseHandler)
- 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 HeaderKeyRecvBufferSize = 2259 HeaderKeyRTT = 2260 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 InitAcker ¶ added in v0.15.0
func InitAcker(forwarder PayloadBufferForwarder, metrics metrics.Registry)
func InitMetrics ¶ added in v0.15.0
func InitMetrics(registry metrics.UsageRegistry)
func InitPayloadIngester ¶ added in v0.15.0
func InitPayloadIngester()
func InitRetransmitter ¶ added in v0.15.0
func InitRetransmitter(forwarder PayloadBufferForwarder, metrics metrics.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) GetLoggerFields ¶ added in v0.15.0
func (ack *Acknowledgement) GetLoggerFields() logrus.Fields
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 LinkReceiveBuffer ¶ added in v0.15.0
type LinkReceiveBuffer struct {
// contains filtered or unexported fields
}
func NewLinkReceiveBuffer ¶ added in v0.15.0
func NewLinkReceiveBuffer() *LinkReceiveBuffer
func (*LinkReceiveBuffer) PeekHead ¶ added in v0.15.0
func (buffer *LinkReceiveBuffer) PeekHead() *Payload
func (*LinkReceiveBuffer) ReceiveUnordered ¶ added in v0.15.0
func (buffer *LinkReceiveBuffer) ReceiveUnordered(payload *Payload, maxSize uint32) bool
func (*LinkReceiveBuffer) Remove ¶ added in v0.15.0
func (buffer *LinkReceiveBuffer) Remove(payload *Payload)
func (*LinkReceiveBuffer) Size ¶ added in v0.15.0
func (buffer *LinkReceiveBuffer) Size() uint32
type LinkSendBuffer ¶ added in v0.15.0
type LinkSendBuffer struct {
// contains filtered or unexported fields
}
func NewLinkSendBuffer ¶ added in v0.15.0
func NewLinkSendBuffer(x *Xgress) *LinkSendBuffer
func (*LinkSendBuffer) BufferPayload ¶ added in v0.15.0
func (buffer *LinkSendBuffer) BufferPayload(payload *Payload) (func(), error)
func (*LinkSendBuffer) Close ¶ added in v0.15.0
func (buffer *LinkSendBuffer) Close()
func (*LinkSendBuffer) CloseWhenEmpty ¶ added in v0.15.2
func (buffer *LinkSendBuffer) CloseWhenEmpty()
func (*LinkSendBuffer) ReceiveAcknowledgement ¶ added in v0.15.0
func (buffer *LinkSendBuffer) ReceiveAcknowledgement(ack *Acknowledgement)
type Listener ¶
type Listener interface { Listen(address string, bindHandler BindHandler) error Close() error }
type Options ¶
type Options struct { Mtu int32 RandomDrops bool Drop1InN int32 TxQueueSize int32 TxPortalStartSize uint32 TxPortalMaxSize uint32 TxPortalMinSize uint32 TxPortalIncreaseThresh uint32 TxPortalIncreaseScale float64 TxPortalRetxThresh uint32 TxPortalRetxScale float64 TxPortalDupAckThresh uint32 TxPortalDupAckScale float64 RxBufferSize uint32 RetxInitial uint32 RetxScale float64 RetxAddMs uint32 MaxCloseWait time.Duration }
Options contains common Xgress configuration options
func DefaultOptions ¶
func DefaultOptions() *Options
func LoadOptions ¶
func LoadOptions(data OptionsData) *Options
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 PayloadBufferForwarder ¶
type PayloadFlag ¶
type PayloadFlag uint32
const ( PayloadFlagSessionEnd PayloadFlag = 1 PayloadFlagEgress PayloadFlag = 2 PayloadFlagSessionStart PayloadFlag = 4 )
type PayloadIngester ¶ added in v0.15.0
type PayloadIngester struct {
// contains filtered or unexported fields
}
func NewPayloadIngester ¶ added in v0.15.0
func NewPayloadIngester() *PayloadIngester
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 Retransmitter ¶ added in v0.15.0
type Retransmitter struct {
// contains filtered or unexported fields
}
func NewRetransmitter ¶ added in v0.15.0
func NewRetransmitter(forwarder PayloadBufferForwarder, metrics metrics.Registry) *Retransmitter
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, peerData map[uint32][]byte) (*SessionInfo, error)
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) PayloadReceived ¶ added in v0.15.0
func (*Xgress) SendAcknowledgement ¶
func (self *Xgress) SendAcknowledgement(acknowledgement *Acknowledgement) error
func (*Xgress) SendEmptyAck ¶ added in v0.15.0
func (self *Xgress) SendEmptyAck()
func (*Xgress) SendPayload ¶
func (*Xgress) SetCloseHandler ¶
func (self *Xgress) SetCloseHandler(closeHandler CloseHandler)
func (*Xgress) SetReceiveHandler ¶
func (self *Xgress) SetReceiveHandler(receiveHandler ReceiveHandler)
Click to show internal directories.
Click to hide internal directories.