|
reSIProcate
SIP stack, Dialog Usage Manager and related libraries
|
#include <TcpBaseTransport.hxx>
Public Member Functions | |
| TcpBaseTransport (Fifo< TransactionMessage > &fifo, int portNum, IpVersion version, const Data &interfaceName, AfterSocketCreationFuncPtr socketFunc, Compression &compression, unsigned transportFlags=0, const Data &netNs=Data::Empty) | |
| virtual | ~TcpBaseTransport () |
| virtual void | processPollEvent (FdPollEventMask mask) |
| Called by PollGrp when activity is possible. | |
| virtual void | process (FdSet &fdset) |
| If there is work to do, this is the method that does it. | |
| virtual void | buildFdSet (FdSet &fdset) |
| Adds the Transport's socket FD to the appropriate read or write sets as applicable. | |
| virtual bool | isReliable () const |
| virtual bool | isDatagram () const |
| virtual void | process () |
| Version of process to be invoked periodically when using callback-based IO (via FdPollGrp). | |
| virtual void | setPollGrp (FdPollGrp *grp) |
| virtual void | setRcvBufLen (int buflen) |
| ConnectionManager & | getConnectionManager () |
| const ConnectionManager & | getConnectionManager () const |
| virtual void | invokeAfterSocketCreationFunc () const |
Public Member Functions inherited from resip::InternalTransport | |
| InternalTransport (Fifo< TransactionMessage > &rxFifo, int portNum, IpVersion version, const Data &interfaceObj, AfterSocketCreationFuncPtr socketFunc=0, Compression &compression=Compression::Disabled, unsigned transportFlags=0, const Data &netNs=Data::Empty) | |
| virtual | ~InternalTransport () |
| virtual bool | isFinished () const |
| virtual bool | hasDataToSend () const |
| only applies to transports that shareStackProcessAndSelect | |
| virtual bool | shareStackProcessAndSelect () const |
| Returns true if this Transport should be included in the FdSet processing loop, false if the Transport will provide its own cycles. | |
| virtual void | startOwnProcessing () |
| transports that returned false to shareStackProcessAndSelect() shouldn't put messages into the fifo until this is called | |
| void | bind () |
| virtual unsigned int | getFifoSize () const |
| virtual void | send (std::unique_ptr< SendData > data) |
| virtual void | poke () |
| Called when a writer is done adding messages to the TxFifo; this is used to interrupt the select call if the Transport is running in its own thread. | |
| virtual void | setCongestionManager (CongestionManager *manager) |
Public Member Functions inherited from resip::Transport | |
| void | setSipMessageLoggingHandler (std::shared_ptr< SipMessageLoggingHandler > handler) |
| void | addSipMessageLoggingHandler (std::shared_ptr< SipMessageLoggingHandler > handler) |
| void | setSipMessageLoggingHandlers (const SipMessageLoggingHandlerList &handlers) |
| void | unsetSipMessageLoggingHandler () noexcept |
| SipMessageLoggingHandlerList | getSipMessageLoggingHandlers () const noexcept |
| Transport (Fifo< TransactionMessage > &rxFifo, const GenericIPAddress &address, const Data &tlsDomain=Data::Empty, AfterSocketCreationFuncPtr socketFunc=nullptr, Compression &compression=Compression::Disabled) | |
| Transport (Fifo< TransactionMessage > &rxFifo, int portNum, IpVersion version, const Data &interfaceObj, const Data &tlsDomain=Data::Empty, AfterSocketCreationFuncPtr socketFunc=nullptr, Compression &compression=Compression::Disabled, unsigned transportFlags=0, const Data &netNs=Data::Empty) | |
| virtual | ~Transport () |
| virtual void | onReload () |
| std::unique_ptr< SendData > | makeSendData (const Tuple &tuple, const Data &data, const Data &tid, const Data &sigcompId=Data::Empty) |
| virtual unsigned int | getTimeTillNextProcessMS () |
| Returns the maximum timeout this object is willing to tolerate on the select call that is to be made, to prevent starvation of work that is not IO-based. | |
| void | flowTerminated (const Tuple &flow, TransportFailure::FailureReason failureReason, int failureSubCode, const Data &failureString, const std::list< Data > additionalFailureStrings) |
| Posts a ConnectionTerminated message to TransactionMessage Fifo. | |
| void | keepAlivePong (const Tuple &flow) |
| void | fail (const Data &tid, TransportFailure::FailureReason reason=TransportFailure::Failure, int subCode=0) |
| Posts a TransportFailure to the TransactionMessage Fifo. | |
| void | setTcpConnectState (const Data &tid, TcpConnectState::State state) |
| Posts a TcpConnectState to the TransactionMessage Fifo. | |
| const Data & | interfaceName () const |
| int | port () const |
| bool | isV4 () const |
| IpVersion | ipVersion () const |
| const Data & | tlsDomain () const |
| const sockaddr & | boundInterface () const |
| const Tuple & | getTuple () const |
| const TransportType | transport () const |
| const Data & | netNs () const |
| virtual bool | hasSpecificContact () const |
| bool | basicCheck (const SipMessage &msg) |
| Perform basic sanity checks on message. | |
| void | makeFailedResponse (const SipMessage &msg, int responseCode=400, const char *warning=nullptr) |
| std::unique_ptr< SendData > | make503 (SipMessage &msg, uint16_t retryAfter) |
| std::unique_ptr< SendData > | make100 (SipMessage &msg) |
| void | setRemoteSigcompId (SipMessage &msg, Data &id) |
| virtual void | shutdown () |
| This starts shutting-down procedures for this Transport. | |
| virtual bool | isShuttingDown () |
| bool | operator== (const Transport &rhs) const |
| void | callSocketFunc (Socket sock) const |
| bool | setDscp (int dscp) |
| Sets the DSCP class this transport puts on its sockets, and returns whether it was accepted. | |
| int | effectiveDscp () const |
| The class to write to a socket right now, or -1 to leave it alone. | |
| int | effectiveDscp (int wanted) const |
| effectiveDscp() for a value the caller has already read. | |
| void | applySocketOptions (Socket sock) const |
| The one place a socket of this transport is configured. | |
| void | applyDscpToOwnSockets () |
| Re-runs the per-socket set-up on every socket this transport holds – the listener, and each established connection. | |
| CongestionManager::RejectionBehavior | getRejectionBehaviorForIncoming () const |
| void | flushStateMacFifo () |
| uint32_t | getExpectedWaitForIncoming () const |
| virtual void | pushRxMsgUp (SipMessage *msg) |
| unsigned int | getKey () const |
| void | setKey (unsigned int pKey) |
Public Member Functions inherited from resip::FdSetIOObserver | |
| FdSetIOObserver () | |
| virtual | ~FdSetIOObserver () |
Public Member Functions inherited from resip::FdPollItemIf | |
| FdPollItemIf () | |
| virtual | ~FdPollItemIf () |
Protected Member Functions | |
| virtual void | init () |
| Performs constructor activities that depend on virtual functions specified by derived classes. | |
| virtual Connection * | createConnection (const Tuple &who, Socket fd, bool server=false)=0 |
| Makes new Connection using provided socket. | |
| void | processAllWriteRequests () |
| Forms a connection if one doesn't exist, moves requests to the appropriate connection's fifo. | |
| int | processListen () |
| This doesn't exist anywhere that I can find? !kw! void sendFromRoundRobin(FdSet& fdset);. | |
| Connection * | makeOutgoingConnection (const Tuple &dest, TransportFailure::FailureReason &failCode, int &subCode) |
Protected Member Functions inherited from resip::InternalTransport | |
| virtual Socket | getListenerSocket () const |
| The transport's own listening or bound socket, or INVALID_SOCKET for a transport that holds none. | |
Protected Member Functions inherited from resip::Transport | |
| void | drainDscpRefresh () |
| Serves a pending refresh and a pending report. | |
| void | setTlsDomain (const Data &domain) |
Static Protected Attributes | |
| static const size_t | MaxWriteSize = 4096 |
| static const size_t | MaxReadSize = 4096 |
Additional Inherited Members | |
Public Types inherited from resip::Transport | |
| using | SipMessageLoggingHandlerList = std::vector< std::shared_ptr< SipMessageLoggingHandler > > |
Static Public Member Functions inherited from resip::InternalTransport | |
| static Socket | socket (TransportType type, IpVersion ipVer) |
Static Public Member Functions inherited from resip::Transport | |
| static void | error (int e) |
| Generates a generic log for the platform specific socket error number. | |
| static Data | errorToString (int e) |
| static void | stampReceived (SipMessage *request) |
Protected Attributes inherited from resip::InternalTransport | |
| Socket | mFd |
| SelectInterruptor | mSelectInterruptor |
| FdPollItemHandle | mInterruptorHandle |
| Fifo< SendData > | mTxFifo |
| ConsumerFifoBuffer< SendData > | mTxFifoOutBuffer |
| FdPollGrp * | mPollGrp |
| FdPollItemHandle | mPollItemHandle |
Protected Attributes inherited from resip::Transport | |
| Data | mInterface |
| Tuple | mTuple |
| CongestionManager * | mCongestionManager |
| ProducerFifoBuffer< TransactionMessage > | mStateMachineFifo |
| bool | mShuttingDown |
| AfterSocketCreationFuncPtr | mSocketFunc |
| Compression & | mCompression |
| unsigned | mTransportFlags |
| std::atomic< int > | mDscp { -1 } |
| the class to write, -1 for "do not mark" | |
| std::atomic< bool > | mDscpRefreshPending { false } |
| Set by setDscp() when the value changes, cleared by the owning thread's refresh. | |
| std::atomic< bool > | mDscpReportPending { false } |
| Set by every setDscp() call, cleared by the owning thread's report, so a reload that changed nothing still says what the listener carries. | |
| std::atomic< bool > | mWasMarkRequested { false } |
| Whether this transport has asked a socket to carry a class that a clear would have to undo. | |
Definition at line 13 of file TcpBaseTransport.hxx.
| TcpBaseTransport::TcpBaseTransport | ( | Fifo< TransactionMessage > & | fifo, |
| int | portNum, | ||
| IpVersion | version, | ||
| const Data & | interfaceName, | ||
| AfterSocketCreationFuncPtr | socketFunc, | ||
| Compression & | compression, | ||
| unsigned | transportFlags = 0, |
||
| const Data & | netNs = Data::Empty |
||
| ) |
Definition at line 23 of file TcpBaseTransport.cxx.
|
virtual |
Definition at line 44 of file TcpBaseTransport.cxx.
|
virtual |
Adds the Transport's socket FD to the appropriate read or write sets as applicable.
Implements resip::Transport.
Definition at line 142 of file TcpBaseTransport.cxx.
|
protectedpure virtual |
Makes new Connection using provided socket.
Implemented in resip::TlsBaseTransport, resip::TcpTransport, resip::WssTransport, and resip::WsTransport.
|
inline |
Definition at line 35 of file TcpBaseTransport.hxx.
|
inline |
Definition at line 36 of file TcpBaseTransport.hxx.
|
protectedvirtual |
Performs constructor activities that depend on virtual functions specified by derived classes.
Derived classes should call this in their constructors.
Definition at line 68 of file TcpBaseTransport.cxx.
|
virtual |
Reimplemented from resip::InternalTransport.
Definition at line 499 of file TcpBaseTransport.cxx.
|
inlinevirtual |
Implements resip::Transport.
Definition at line 30 of file TcpBaseTransport.hxx.
|
inlinevirtual |
Implements resip::Transport.
Definition at line 29 of file TcpBaseTransport.hxx.
|
protected |
Definition at line 279 of file TcpBaseTransport.cxx.
|
virtual |
Version of process to be invoked periodically when using callback-based IO (via FdPollGrp).
Implements resip::Transport.
Definition at line 446 of file TcpBaseTransport.cxx.
|
virtual |
If there is work to do, this is the method that does it.
If the socket is readable, it is read. If the socket is writable and there are outgoing messages to be sent, they are sent.
Incoming messages are parsed and dispatched to the relevant entity. SIP messages will be posted to the TransactionMessage Fifo.
| fdset | is the FdSet after select() has been called. |
Implements resip::Transport.
Definition at line 462 of file TcpBaseTransport.cxx.
|
protected |
Forms a connection if one doesn't exist, moves requests to the appropriate connection's fifo.
Definition at line 371 of file TcpBaseTransport.cxx.
|
protected |
This doesn't exist anywhere that I can find? !kw! void sendFromRoundRobin(FdSet& fdset);.
Returns 1 if created new connection, -1 if "bad" error, and 0 if nothing to do (EWOULDBLOCK)
Definition at line 161 of file TcpBaseTransport.cxx.
|
virtual |
Called by PollGrp when activity is possible.
Implements resip::FdPollItemIf.
Definition at line 483 of file TcpBaseTransport.cxx.
|
virtual |
Reimplemented from resip::InternalTransport.
Definition at line 120 of file TcpBaseTransport.cxx.
|
virtual |
Reimplemented from resip::Transport.
Definition at line 492 of file TcpBaseTransport.cxx.
|
staticprotected |
Definition at line 68 of file TcpBaseTransport.hxx.
|
staticprotected |
Definition at line 67 of file TcpBaseTransport.hxx.