Documentation ¶
Index ¶
- Constants
- Variables
- func DefaultOnMessageReceived(c *ExchangeContext, id protocols.Id, messageType uint8, messageCounter uint32, ...)
- func GetRetransmissionTimeout(activeRetransTimeout time.Duration, idleRetransTimeout time.Duration, ...) time.Duration
- func InitDataModelHandler(mgr ExchangeManagerBase)
- func SendMessage(dispatch ExchangeMessageDispatch, sessionManager *transport.SessionManager, ...) error
- type AnyMessage
- type ApplicationExchangeDispatch
- func (a *ApplicationExchangeDispatch) IsEncryptionRequired() bool
- func (a *ApplicationExchangeDispatch) IsReliableTransmissionAllowed() bool
- func (a *ApplicationExchangeDispatch) MessagePermitted(protocol protocols.Id, messageType uint8) bool
- func (a *ApplicationExchangeDispatch) SendMessage(mgr *transport.SessionManager, handle *transport.SessionHandle, ...) error
- type EphemeralExchangeDispatch
- func (e *EphemeralExchangeDispatch) IsEncryptionRequired() bool
- func (e *EphemeralExchangeDispatch) IsReliableTransmissionAllowed() bool
- func (e *EphemeralExchangeDispatch) MessagePermitted(protocol protocols.Id, messageType uint8) bool
- func (e *EphemeralExchangeDispatch) SendMessage(mgr *transport.SessionManager, handle *transport.SessionHandle, ...) error
- type ExchangeContext
- func (c *ExchangeContext) Delegate() ExchangeDelegate
- func (c *ExchangeContext) DoClose(clearRetransTable bool)
- func (c *ExchangeContext) ExchangeId() uint16
- func (c *ExchangeContext) ExchangeMgr() *ExchangeManager
- func (c *ExchangeContext) GetMessageDispatch(isEphemeralExchange bool, delegate ExchangeDelegate) ExchangeMessageDispatch
- func (c *ExchangeContext) HandleMessage(messageCounter uint32, payloadHeader *raw.PayloadHeader, f uint32, ...) error
- func (c *ExchangeContext) HasSessionHandle() bool
- func (c *ExchangeContext) LogValue() log.Value
- func (c *ExchangeContext) MatchExchange(session *transport.SessionHandle, packetHeader *raw.PacketHeader, ...) bool
- func (c *ExchangeContext) OnSessionReleased()
- func (c *ExchangeContext) Released()
- func (c *ExchangeContext) SendMessage(msgType MessageType, msg []byte, sendFlags bitflags.Flags[uint16]) (err error)
- func (c *ExchangeContext) SessionHandle() *transport.SessionHandle
- func (c *ExchangeContext) SetDelegate(delegate ExchangeDelegate)
- func (c *ExchangeContext) SetResponseTimeout(timeout time.Duration)
- func (c *ExchangeContext) UseSuggestedResponseTimeout(applicationProcessingTimeout time.Duration)
- func (c *ExchangeContext) WillSendMessage()
- type ExchangeContextPool
- func (c *ExchangeContextPool) Allocated() int
- func (c *ExchangeContextPool) CloseContextForDelegate(delegate ExchangeDelegate)
- func (c *ExchangeContextPool) Get(id uint16) *ExchangeContext
- func (c *ExchangeContextPool) MatchExchange(session *transport.SessionHandle, packetHeader *raw.PacketHeader, ...) *ExchangeContext
- func (c *ExchangeContextPool) Release(ctx *ExchangeContext)
- type ExchangeDelegate
- type ExchangeHandle
- type ExchangeManager
- func (e *ExchangeManager) CloseAllContextForDelegate(delegate ExchangeDelegate)
- func (e *ExchangeManager) GetMessageDispatch() ExchangeMessageDispatch
- func (e *ExchangeManager) GetNumActiveExchanges() int
- func (e *ExchangeManager) Init(sessionManager *transport.SessionManager) error
- func (e *ExchangeManager) NewContext(session *transport.SessionHandle, delegate ExchangeDelegate, isInitiator bool) *ExchangeContext
- func (e *ExchangeManager) OnExchangeClosing(ec *ExchangeContext)
- func (e *ExchangeManager) OnMessageReceived(packetHeader *raw.PacketHeader, payloadHeader *raw.PayloadHeader, ...)
- func (e *ExchangeManager) OnResponseTimeout(ec *ExchangeContext)
- func (e *ExchangeManager) RegisterUnsolicitedMessageHandlerForProtocol(protocolId protocols.Id, handler UnsolicitedMessageHandler) error
- func (e *ExchangeManager) RegisterUnsolicitedMessageHandlerForType(id protocols.Id, msgType MessageType, handler UnsolicitedMessageHandler) error
- func (e *ExchangeManager) ReleaseContext(ctx *ExchangeContext)
- func (e *ExchangeManager) ReliableMessageMgr() *ReliableMessageMgr
- func (e *ExchangeManager) SessionManager() *transport.SessionManager
- func (e *ExchangeManager) Shutdown()
- func (e *ExchangeManager) UnregisterUnsolicitedMessageHandlerForProtocol(id protocols.Id) error
- func (e *ExchangeManager) UnregisterUnsolicitedMessageHandlerForType(id protocols.Id, messageType MessageType) error
- type ExchangeManagerBase
- type ExchangeMessageDispatch
- type ExchangeSessionHolder
- type MessageType
- type ReliableMessageContext
- func (c *ReliableMessageContext) AutoRequestAck() bool
- func (c *ReliableMessageContext) FlushAcks() error
- func (c *ReliableMessageContext) HandleNeedsAck(messageCounter, flags uint32)
- func (c *ReliableMessageContext) HandleRcvdAck(ackMessageCounter uint32)
- func (c *ReliableMessageContext) HasPiggybackAckPending() bool
- func (c *ReliableMessageContext) IsEphemeralExchange() bool
- func (c *ReliableMessageContext) IsRequestingActiveMode() bool
- func (c *ReliableMessageContext) ReliableMessageMgr() *ReliableMessageMgr
- func (c *ReliableMessageContext) SetAckPending(inAckPending bool)
- func (c *ReliableMessageContext) SetAutoRequestAck(autoReqAck bool)
- func (c *ReliableMessageContext) SetMessageNotAcked(messageNotAcked bool)
- func (c *ReliableMessageContext) SetRequestingActiveMode(activeMode bool)
- func (c *ReliableMessageContext) ShouldIgnoreSessionRelease() bool
- func (c *ReliableMessageContext) TakePendingPeerAckMessageCounter() uint32
- type ReliableMessageMgr
- func (m *ReliableMessageMgr) AddToRetransTable(rc *ReliableMessageContext) (entry *RetransTableEntry, err error)
- func (m *ReliableMessageMgr) CheckAndRemRetransTable(rc *ReliableMessageContext, ackMessageCounter uint32) bool
- func (m *ReliableMessageMgr) ClearRetransTable(rc *ReliableMessageContext)
- func (m *ReliableMessageMgr) ClearRetransTableEntry(re *RetransTableEntry) *RetransTableEntry
- type ReliableMessageProtocolConfig
- type RetransTableEntry
- type UnsolicitedMessageHandler
- type UnsolicitedMessageHandlerSlot
Constants ¶
View Source
const ( ExpectResponse uint16 = 0b0001 NoAutoRequestAck uint16 = 0b0010 None uint16 = 0b0000 )
Variables ¶
View Source
var ConfigMrpDefaultActiveRetryInterval int64 = 300
View Source
var ConfigMrpDefaultIdleRetryInterval int64 = 5000
Functions ¶
func DefaultOnMessageReceived ¶
func DefaultOnMessageReceived(c *ExchangeContext, id protocols.Id, messageType uint8, messageCounter uint32, payload *system.PacketBufferHandle)
func InitDataModelHandler ¶
func InitDataModelHandler(mgr ExchangeManagerBase)
func SendMessage ¶
func SendMessage(dispatch ExchangeMessageDispatch, sessionManager *transport.SessionManager, sessionHandle *transport.SessionHandle, exchangeId uint16, isInitiator bool, reliableMessageContext *ReliableMessageContext, isReliableTransmission bool, protocolsId protocols.Id, msgType uint8, message []byte) error
Types ¶
type AnyMessage ¶
type AnyMessage uint8
const KAnyMessageType AnyMessage = 0xFF
func (AnyMessage) Matches ¶
func (a AnyMessage) Matches(m uint8) bool
func (AnyMessage) MessageType ¶
func (a AnyMessage) MessageType() uint8
func (AnyMessage) Name ¶
func (a AnyMessage) Name() string
type ApplicationExchangeDispatch ¶
type ApplicationExchangeDispatch struct { }
func DefaultApplicationExchangeDispatch ¶
func DefaultApplicationExchangeDispatch() *ApplicationExchangeDispatch
func (*ApplicationExchangeDispatch) IsEncryptionRequired ¶
func (a *ApplicationExchangeDispatch) IsEncryptionRequired() bool
func (*ApplicationExchangeDispatch) IsReliableTransmissionAllowed ¶
func (a *ApplicationExchangeDispatch) IsReliableTransmissionAllowed() bool
func (*ApplicationExchangeDispatch) MessagePermitted ¶
func (a *ApplicationExchangeDispatch) MessagePermitted(protocol protocols.Id, messageType uint8) bool
func (*ApplicationExchangeDispatch) SendMessage ¶
func (a *ApplicationExchangeDispatch) SendMessage( mgr *transport.SessionManager, handle *transport.SessionHandle, exchangeId uint16, isInitiator bool, rmc *ReliableMessageContext, isReliableTransmission bool, protocol protocols.Id, msgType uint8, message []byte) error
type EphemeralExchangeDispatch ¶
type EphemeralExchangeDispatch struct {
// contains filtered or unexported fields
}
func DefaultEphemeralDispatch ¶
func DefaultEphemeralDispatch() *EphemeralExchangeDispatch
func (*EphemeralExchangeDispatch) IsEncryptionRequired ¶
func (e *EphemeralExchangeDispatch) IsEncryptionRequired() bool
func (*EphemeralExchangeDispatch) IsReliableTransmissionAllowed ¶
func (e *EphemeralExchangeDispatch) IsReliableTransmissionAllowed() bool
func (*EphemeralExchangeDispatch) MessagePermitted ¶
func (e *EphemeralExchangeDispatch) MessagePermitted(protocol protocols.Id, messageType uint8) bool
func (*EphemeralExchangeDispatch) SendMessage ¶
func (e *EphemeralExchangeDispatch) SendMessage( mgr *transport.SessionManager, handle *transport.SessionHandle, exchangeId uint16, isInitiator bool, rmc *ReliableMessageContext, isReliableTransmission bool, protocol protocols.Id, msgType uint8, message []byte) error
type ExchangeContext ¶
type ExchangeContext struct { *ReliableMessageContext *lib.ReferenceCounted // contains filtered or unexported fields }
func NewExchangeContext ¶
func NewExchangeContext( em *ExchangeManager, exchangeId uint16, session *transport.SessionHandle, initiator bool, delegate ExchangeDelegate, isEphemeralExchange bool, ) *ExchangeContext
func (*ExchangeContext) Delegate ¶
func (c *ExchangeContext) Delegate() ExchangeDelegate
func (*ExchangeContext) DoClose ¶
func (c *ExchangeContext) DoClose(clearRetransTable bool)
func (*ExchangeContext) ExchangeId ¶
func (c *ExchangeContext) ExchangeId() uint16
func (*ExchangeContext) ExchangeMgr ¶
func (c *ExchangeContext) ExchangeMgr() *ExchangeManager
func (*ExchangeContext) GetMessageDispatch ¶
func (c *ExchangeContext) GetMessageDispatch(isEphemeralExchange bool, delegate ExchangeDelegate) ExchangeMessageDispatch
func (*ExchangeContext) HandleMessage ¶
func (c *ExchangeContext) HandleMessage(messageCounter uint32, payloadHeader *raw.PayloadHeader, f uint32, buf *system.PacketBufferHandle) error
func (*ExchangeContext) HasSessionHandle ¶
func (c *ExchangeContext) HasSessionHandle() bool
func (*ExchangeContext) LogValue ¶
func (c *ExchangeContext) LogValue() log.Value
func (*ExchangeContext) MatchExchange ¶
func (c *ExchangeContext) MatchExchange(session *transport.SessionHandle, packetHeader *raw.PacketHeader, payloadHeader *raw.PayloadHeader) bool
func (*ExchangeContext) OnSessionReleased ¶
func (c *ExchangeContext) OnSessionReleased()
func (*ExchangeContext) Released ¶
func (c *ExchangeContext) Released()
func (*ExchangeContext) SendMessage ¶
func (c *ExchangeContext) SendMessage(msgType MessageType, msg []byte, sendFlags bitflags.Flags[uint16]) (err error)
func (*ExchangeContext) SessionHandle ¶
func (c *ExchangeContext) SessionHandle() *transport.SessionHandle
func (*ExchangeContext) SetDelegate ¶
func (c *ExchangeContext) SetDelegate(delegate ExchangeDelegate)
func (*ExchangeContext) SetResponseTimeout ¶
func (c *ExchangeContext) SetResponseTimeout(timeout time.Duration)
func (*ExchangeContext) UseSuggestedResponseTimeout ¶
func (c *ExchangeContext) UseSuggestedResponseTimeout(applicationProcessingTimeout time.Duration)
func (*ExchangeContext) WillSendMessage ¶
func (c *ExchangeContext) WillSendMessage()
type ExchangeContextPool ¶
type ExchangeContextPool struct {
// contains filtered or unexported fields
}
func NewExchangeContextContainer ¶
func NewExchangeContextContainer() *ExchangeContextPool
func (*ExchangeContextPool) Allocated ¶
func (c *ExchangeContextPool) Allocated() int
func (*ExchangeContextPool) CloseContextForDelegate ¶
func (c *ExchangeContextPool) CloseContextForDelegate(delegate ExchangeDelegate)
func (*ExchangeContextPool) Get ¶
func (c *ExchangeContextPool) Get(id uint16) *ExchangeContext
func (*ExchangeContextPool) MatchExchange ¶
func (c *ExchangeContextPool) MatchExchange( session *transport.SessionHandle, packetHeader *raw.PacketHeader, payloadHeader *raw.PayloadHeader, ) *ExchangeContext
func (*ExchangeContextPool) Release ¶
func (c *ExchangeContextPool) Release(ctx *ExchangeContext)
type ExchangeDelegate ¶
type ExchangeDelegate interface { OnMessageReceived(context *ExchangeContext, header *raw.PayloadHeader, data *system.PacketBufferHandle) error OnResponseTimeout(ec *ExchangeContext) OnExchangeClosing(ec *ExchangeContext) GetMessageDispatch() ExchangeMessageDispatch }
type ExchangeHandle ¶
type ExchangeHandle struct {
*ExchangeContext
}
type ExchangeManager ¶
type ExchangeManager struct {
// contains filtered or unexported fields
}
func NewExchangeManager ¶
func NewExchangeManager() *ExchangeManager
func (*ExchangeManager) CloseAllContextForDelegate ¶
func (e *ExchangeManager) CloseAllContextForDelegate(delegate ExchangeDelegate)
func (*ExchangeManager) GetMessageDispatch ¶
func (e *ExchangeManager) GetMessageDispatch() ExchangeMessageDispatch
func (*ExchangeManager) GetNumActiveExchanges ¶
func (e *ExchangeManager) GetNumActiveExchanges() int
func (*ExchangeManager) Init ¶
func (e *ExchangeManager) Init(sessionManager *transport.SessionManager) error
func (*ExchangeManager) NewContext ¶
func (e *ExchangeManager) NewContext(session *transport.SessionHandle, delegate ExchangeDelegate, isInitiator bool) *ExchangeContext
func (*ExchangeManager) OnExchangeClosing ¶
func (e *ExchangeManager) OnExchangeClosing(ec *ExchangeContext)
func (*ExchangeManager) OnMessageReceived ¶
func (e *ExchangeManager) OnMessageReceived( packetHeader *raw.PacketHeader, payloadHeader *raw.PayloadHeader, ss *transport.SessionHandle, isDuplicate bool, msg *system.PacketBufferHandle, )
func (*ExchangeManager) OnResponseTimeout ¶
func (e *ExchangeManager) OnResponseTimeout(ec *ExchangeContext)
func (*ExchangeManager) RegisterUnsolicitedMessageHandlerForProtocol ¶
func (e *ExchangeManager) RegisterUnsolicitedMessageHandlerForProtocol( protocolId protocols.Id, handler UnsolicitedMessageHandler, ) error
func (*ExchangeManager) RegisterUnsolicitedMessageHandlerForType ¶
func (e *ExchangeManager) RegisterUnsolicitedMessageHandlerForType(id protocols.Id, msgType MessageType, handler UnsolicitedMessageHandler) error
func (*ExchangeManager) ReleaseContext ¶
func (e *ExchangeManager) ReleaseContext(ctx *ExchangeContext)
func (*ExchangeManager) ReliableMessageMgr ¶
func (e *ExchangeManager) ReliableMessageMgr() *ReliableMessageMgr
func (*ExchangeManager) SessionManager ¶
func (e *ExchangeManager) SessionManager() *transport.SessionManager
func (*ExchangeManager) Shutdown ¶
func (e *ExchangeManager) Shutdown()
func (*ExchangeManager) UnregisterUnsolicitedMessageHandlerForProtocol ¶
func (e *ExchangeManager) UnregisterUnsolicitedMessageHandlerForProtocol(id protocols.Id) error
func (*ExchangeManager) UnregisterUnsolicitedMessageHandlerForType ¶
func (e *ExchangeManager) UnregisterUnsolicitedMessageHandlerForType(id protocols.Id, messageType MessageType) error
type ExchangeManagerBase ¶
type ExchangeManagerBase interface { // SessionMessageDelegate the delegate for transport session manager transport.SessionMessageDelegate SessionManager() *transport.SessionManager RegisterUnsolicitedMessageHandlerForProtocol(protocolId protocols.Id, handler UnsolicitedMessageHandler) error RegisterUnsolicitedMessageHandlerForType(protocolId protocols.Id, msgType MessageType, handler UnsolicitedMessageHandler) error UnregisterUnsolicitedMessageHandlerForType(id protocols.Id, messageType MessageType) error UnregisterUnsolicitedMessageHandlerForProtocol(id protocols.Id) error OnResponseTimeout(ec *ExchangeContext) OnExchangeClosing(ec *ExchangeContext) GetMessageDispatch() ExchangeMessageDispatch ReleaseContext(ctx *ExchangeContext) Shutdown() }
type ExchangeMessageDispatch ¶
type ExchangeMessageDispatch interface { IsEncryptionRequired() bool SendMessage(mgr *transport.SessionManager, handle *transport.SessionHandle, exchangeId uint16, isInitiator bool, rmc *ReliableMessageContext, isReliableTransmission bool, protocol protocols.Id, msgType uint8, message []byte) error IsReliableTransmissionAllowed() bool MessagePermitted(id protocols.Id, messageType uint8) bool }
type ExchangeSessionHolder ¶
type ExchangeSessionHolder struct {
*transport.SessionHolderWithDelegate
}
func NewExchangeSessionHolder ¶
func NewExchangeSessionHolder(delegate *ExchangeContext) *ExchangeSessionHolder
func (*ExchangeSessionHolder) GrabExpiredSession ¶
func (s *ExchangeSessionHolder) GrabExpiredSession(ss *transport.SessionHandle)
GrabExpiredSession 抓取过期会话
type MessageType ¶
type ReliableMessageContext ¶
type ReliableMessageContext struct {
// contains filtered or unexported fields
}
func NewReliableMessageContext ¶
func NewReliableMessageContext(ec *ExchangeContext) *ReliableMessageContext
func (*ReliableMessageContext) AutoRequestAck ¶
func (c *ReliableMessageContext) AutoRequestAck() bool
func (*ReliableMessageContext) FlushAcks ¶
func (c *ReliableMessageContext) FlushAcks() error
func (*ReliableMessageContext) HandleNeedsAck ¶
func (c *ReliableMessageContext) HandleNeedsAck(messageCounter, flags uint32)
func (*ReliableMessageContext) HandleRcvdAck ¶
func (c *ReliableMessageContext) HandleRcvdAck(ackMessageCounter uint32)
func (*ReliableMessageContext) HasPiggybackAckPending ¶
func (c *ReliableMessageContext) HasPiggybackAckPending() bool
func (*ReliableMessageContext) IsEphemeralExchange ¶
func (c *ReliableMessageContext) IsEphemeralExchange() bool
func (*ReliableMessageContext) IsRequestingActiveMode ¶
func (c *ReliableMessageContext) IsRequestingActiveMode() bool
func (*ReliableMessageContext) ReliableMessageMgr ¶
func (c *ReliableMessageContext) ReliableMessageMgr() *ReliableMessageMgr
func (*ReliableMessageContext) SetAckPending ¶
func (c *ReliableMessageContext) SetAckPending(inAckPending bool)
func (*ReliableMessageContext) SetAutoRequestAck ¶
func (c *ReliableMessageContext) SetAutoRequestAck(autoReqAck bool)
func (*ReliableMessageContext) SetMessageNotAcked ¶
func (c *ReliableMessageContext) SetMessageNotAcked(messageNotAcked bool)
func (*ReliableMessageContext) SetRequestingActiveMode ¶
func (c *ReliableMessageContext) SetRequestingActiveMode(activeMode bool)
func (*ReliableMessageContext) ShouldIgnoreSessionRelease ¶
func (c *ReliableMessageContext) ShouldIgnoreSessionRelease() bool
func (*ReliableMessageContext) TakePendingPeerAckMessageCounter ¶
func (c *ReliableMessageContext) TakePendingPeerAckMessageCounter() uint32
type ReliableMessageMgr ¶
type ReliableMessageMgr struct {
// contains filtered or unexported fields
}
func (*ReliableMessageMgr) AddToRetransTable ¶
func (m *ReliableMessageMgr) AddToRetransTable(rc *ReliableMessageContext) (entry *RetransTableEntry, err error)
func (*ReliableMessageMgr) CheckAndRemRetransTable ¶
func (m *ReliableMessageMgr) CheckAndRemRetransTable(rc *ReliableMessageContext, ackMessageCounter uint32) bool
func (*ReliableMessageMgr) ClearRetransTable ¶
func (m *ReliableMessageMgr) ClearRetransTable(rc *ReliableMessageContext)
func (*ReliableMessageMgr) ClearRetransTableEntry ¶
func (m *ReliableMessageMgr) ClearRetransTableEntry(re *RetransTableEntry) *RetransTableEntry
type ReliableMessageProtocolConfig ¶
type ReliableMessageProtocolConfig struct { IdleRetransTimeout time.Duration ActiveRetransTimeout time.Duration }
func DefaultMRPConfig ¶
func DefaultMRPConfig() *ReliableMessageProtocolConfig
func GetLocalMRPConfig ¶
func GetLocalMRPConfig() *ReliableMessageProtocolConfig
func (ReliableMessageProtocolConfig) Init ¶
func (c ReliableMessageProtocolConfig) Init() *ReliableMessageProtocolConfig
type RetransTableEntry ¶
type RetransTableEntry struct {
// contains filtered or unexported fields
}
func NewRetransTableEntry ¶
func NewRetransTableEntry(rc *ReliableMessageContext) *RetransTableEntry
type UnsolicitedMessageHandler ¶
type UnsolicitedMessageHandler interface { OnUnsolicitedMessageReceived(header *raw.PayloadHeader) (ExchangeDelegate, error) OnExchangeCreationFailed(delegate ExchangeDelegate) }
type UnsolicitedMessageHandlerSlot ¶
type UnsolicitedMessageHandlerSlot struct {
// contains filtered or unexported fields
}
func (*UnsolicitedMessageHandlerSlot) IsInUse ¶
func (slot *UnsolicitedMessageHandlerSlot) IsInUse() bool
func (*UnsolicitedMessageHandlerSlot) Matches ¶
func (slot *UnsolicitedMessageHandlerSlot) Matches(aProtocolId protocols.Id, aMessageType uint8) bool
func (*UnsolicitedMessageHandlerSlot) Reset ¶
func (slot *UnsolicitedMessageHandlerSlot) Reset()
Source Files ¶
- application_exchange_dispatch.go
- constants.go
- context_pool.go
- data_model_handler.go
- ephemeral_exchange_dispatch.go
- exchange_context.go
- exchange_delegate.go
- exchange_manager.go
- exchange_message_dispatch.go
- flags.go
- reliable_message_context.go
- reliable_message_mgr.go
- reliable_message_protocol_config.go
Click to show internal directories.
Click to hide internal directories.