reSIProcate
SIP stack, Dialog Usage Manager and related libraries
Loading...
Searching...
No Matches
resip::Transport Class Referenceabstract

The base class for Transport classes. More...

#include <Transport.hxx>

Inheritance diagram for resip::Transport:
[legend]

Classes

class  Exception
 General exception class for Transport. More...
 
class  SipMessageLoggingHandler
 

Public Types

using SipMessageLoggingHandlerList = std::vector< std::shared_ptr< SipMessageLoggingHandler > >
 

Public Member Functions

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 ()
 
virtual bool isFinished () const =0
 
std::unique_ptr< SendData > makeSendData (const Tuple &tuple, const Data &data, const Data &tid, const Data &sigcompId=Data::Empty)
 
virtual void send (std::unique_ptr< SendData > data)=0
 
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 process (FdSet &fdset)=0
 If there is work to do, this is the method that does it.
 
virtual void buildFdSet (FdSet &fdset)=0
 Adds the Transport's socket FD to the appropriate read or write sets as applicable.
 
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.
 
virtual void process ()=0
 Version of process to be invoked periodically when using callback-based IO (via FdPollGrp).
 
virtual void setPollGrp (FdPollGrp *grp)=0
 
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
 
virtual bool isReliable () const =0
 
virtual bool isDatagram () const =0
 
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 bool shareStackProcessAndSelect () const =0
 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 ()=0
 transports that returned false to shareStackProcessAndSelect() shouldn't put messages into the fifo until this is called
 
virtual bool hasDataToSend () const =0
 only applies to transports that shareStackProcessAndSelect
 
virtual void shutdown ()
 This starts shutting-down procedures for this Transport.
 
virtual bool isShuttingDown ()
 
bool operator== (const Transport &rhs) const
 
virtual unsigned int getFifoSize () const =0
 
void callSocketFunc (Socket sock) const
 
virtual void invokeAfterSocketCreationFunc () const =0
 
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.
 
virtual void setCongestionManager (CongestionManager *manager)
 
CongestionManager::RejectionBehavior getRejectionBehaviorForIncoming () const
 
void flushStateMacFifo ()
 
uint32_t getExpectedWaitForIncoming () const
 
virtual void pushRxMsgUp (SipMessage *msg)
 
virtual void setRcvBufLen (int buflen)
 
unsigned int getKey () const
 
void setKey (unsigned int pKey)
 
- Public Member Functions inherited from resip::FdSetIOObserver
 FdSetIOObserver ()
 
virtual ~FdSetIOObserver ()
 

Static Public Member Functions

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 Member Functions

void drainDscpRefresh ()
 Serves a pending refresh and a pending report.
 
virtual Socket getListenerSocket () const
 The transport's own listening or bound socket, or INVALID_SOCKET for a transport that holds none.
 
void setTlsDomain (const Data &domain)
 

Protected Attributes

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.
 

Friends

EncodeStream & operator<< (EncodeStream &strm, const Transport &rhs)
 

Detailed Description

The base class for Transport classes.

A Transport presents layer 4 of the OSI model, the transport layer. For IP-based protocols, this means that a Transport object has an IP address (v4 or v6), a transport layer protocol (UDP or TCP/TLS), and a port number. These are managed through the Transport's Tuple member.

Definition at line 82 of file Transport.hxx.

Member Typedef Documentation

◆ SipMessageLoggingHandlerList

Definition at line 105 of file Transport.hxx.

Constructor & Destructor Documentation

◆ Transport() [1/2]

Transport::Transport ( Fifo< TransactionMessage > &  rxFifo,
const GenericIPAddress &  address,
const Data &  tlsDomain = Data::Empty,
AfterSocketCreationFuncPtr  socketFunc = nullptr,
Compression &  compression = Compression::Disabled 
)
Parameters
rxFifothe TransactionMessage Fifo that will receive any ConnectionTerminated or TransportFailure messages.
tlsDomainthe domain name of the Transport
socketFuncsubclassers can call this function after the socket is created. This is not currently used by Transport.

Definition at line 73 of file Transport.cxx.

◆ Transport() [2/2]

Transport::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 
)
Parameters
rxFifothe TransactionMessage Fifo that will receive any ConnectionTerminated or TransportFailure messages.
interfaceObja "presentation format" representation of the IP address of this transport
See also
Tuple::inet_ntop() for information about "presentation format"
Parameters
portNumis the port to receive and/or send on
tlsDomainthe domain name of the Transport
Todo:
Note that because of InternalTransport's constructor, tlsDomain is always set to Data::Empty at construction time, in practice.
Parameters
socketFuncsubclassers can call this function after the socket is created. This is not currently used by Transport.

Definition at line 94 of file Transport.cxx.

◆ ~Transport()

Transport::~Transport ( )
virtual

Definition at line 115 of file Transport.cxx.

Member Function Documentation

◆ addSipMessageLoggingHandler()

void Transport::addSipMessageLoggingHandler ( std::shared_ptr< SipMessageLoggingHandler >  handler)

Definition at line 42 of file Transport.cxx.

◆ applyDscpToOwnSockets()

void Transport::applyDscpToOwnSockets ( )

Re-runs the per-socket set-up on every socket this transport holds – the listener, and each established connection.

Call this directly only while the transport is still single-threaded, before its processing thread starts. Once it is running, ask through setDscp() instead: the traversal walks the list of connections that thread owns.

Definition at line 144 of file Transport.cxx.

◆ applySocketOptions()

void Transport::applySocketOptions ( Socket  sock) const

The one place a socket of this transport is configured.

Puts the effective DSCP class on {sock}, then hands it to the user's AfterSocketCreationFunc. Every site that configures a socket – the listener, an accepted connection, an outgoing connection – routes through here, so a socket cannot be created without passing it.

Definition at line 607 of file Transport.cxx.

◆ basicCheck()

bool Transport::basicCheck ( const SipMessage &  msg)

Perform basic sanity checks on message.

Return false if there is a problem eg) no Vias.

Note
–SIDE EFFECT– This will queue a response if it CAN for a via-less request. Response will go straight into the TxFifo

Definition at line 531 of file Transport.cxx.

◆ boundInterface()

const sockaddr & resip::Transport::boundInterface ( ) const
inline

Definition at line 287 of file Transport.hxx.

◆ buildFdSet()

virtual void resip::Transport::buildFdSet ( FdSet &  fdset)
pure virtual

Adds the Transport's socket FD to the appropriate read or write sets as applicable.

Implements resip::FdSetIOObserver.

Implemented in resip::DtlsTransport, resip::TcpBaseTransport, and resip::UdpTransport.

◆ callSocketFunc()

void Transport::callSocketFunc ( Socket  sock) const

Definition at line 622 of file Transport.cxx.

◆ drainDscpRefresh()

void Transport::drainDscpRefresh ( )
protected

Serves a pending refresh and a pending report.

Called by the owning thread at the top of its processing cycle.

Definition at line 125 of file Transport.cxx.

◆ effectiveDscp() [1/2]

int Transport::effectiveDscp ( ) const

The class to write to a socket right now, or -1 to leave it alone.

mDscp mWasMarkRequested result
>= 0 any mDscp
-1 true 0, undo the mark we made
-1 false -1, never marked, leave the socket alone

The last two rows are why a mark is tracked at all: undoing one and never having made one are different actions.

Definition at line 590 of file Transport.cxx.

◆ effectiveDscp() [2/2]

int Transport::effectiveDscp ( int  wanted) const

effectiveDscp() for a value the caller has already read.

A traversal has to read mDscp exactly once – a value that changes while it runs raises its own request, and reading again would mix the two passes.

Definition at line 596 of file Transport.cxx.

◆ error()

void Transport::error ( int  e)
static

Generates a generic log for the platform specific socket error number.

Parameters
ethe socket error number

Definition at line 203 of file Transport.cxx.

◆ errorToString()

Data Transport::errorToString ( int  e)
static

Definition at line 212 of file Transport.cxx.

◆ fail()

void Transport::fail ( const Data &  tid,
TransportFailure::FailureReason  reason = TransportFailure::Failure,
int  subCode = 0 
)

Posts a TransportFailure to the TransactionMessage Fifo.

Definition at line 352 of file Transport.cxx.

◆ flowTerminated()

void Transport::flowTerminated ( const Tuple &  flow,
TransportFailure::FailureReason  failureReason,
int  failureSubCode,
const Data &  failureString,
const std::list< Data >  additionalFailureStrings 
)

Posts a ConnectionTerminated message to TransactionMessage Fifo.

Definition at line 340 of file Transport.cxx.

◆ flushStateMacFifo()

void resip::Transport::flushStateMacFifo ( )
inline

Definition at line 470 of file Transport.hxx.

◆ getExpectedWaitForIncoming()

uint32_t resip::Transport::getExpectedWaitForIncoming ( ) const
inline

Definition at line 475 of file Transport.hxx.

◆ getFifoSize()

virtual unsigned int resip::Transport::getFifoSize ( ) const
pure virtual

Implemented in resip::InternalTransport.

◆ getKey()

unsigned int resip::Transport::getKey ( ) const
inline

Definition at line 486 of file Transport.hxx.

◆ getListenerSocket()

virtual Socket resip::Transport::getListenerSocket ( ) const
inlineprotectedvirtual

The transport's own listening or bound socket, or INVALID_SOCKET for a transport that holds none.

Reimplemented in resip::InternalTransport.

Definition at line 495 of file Transport.hxx.

◆ getRejectionBehaviorForIncoming()

CongestionManager::RejectionBehavior resip::Transport::getRejectionBehaviorForIncoming ( ) const
inline

Definition at line 461 of file Transport.hxx.

◆ getSipMessageLoggingHandlers()

Transport::SipMessageLoggingHandlerList Transport::getSipMessageLoggingHandlers ( ) const
noexcept

Definition at line 63 of file Transport.cxx.

◆ getTimeTillNextProcessMS()

virtual unsigned int resip::Transport::getTimeTillNextProcessMS ( )
inlinevirtual

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.

Returns
The maximum select() timeout to be used, in milliseconds. To indicate that this object does not care, return UINT_MAX. 0 indicates that a poll select() should be performed.

Implements resip::FdSetIOObserver.

Definition at line 229 of file Transport.hxx.

◆ getTuple()

const Tuple & resip::Transport::getTuple ( ) const
inline

Definition at line 288 of file Transport.hxx.

◆ hasDataToSend()

virtual bool resip::Transport::hasDataToSend ( ) const
pure virtual

only applies to transports that shareStackProcessAndSelect

Implemented in resip::InternalTransport, and resip::UdpTransport.

◆ hasSpecificContact()

virtual bool resip::Transport::hasSpecificContact ( ) const
inlinevirtual
Returns
true here if the subclass has a specific contact value that it wishes the TransportSelector to use.

Definition at line 302 of file Transport.hxx.

◆ interfaceName()

const Data & resip::Transport::interfaceName ( ) const
inline

Definition at line 272 of file Transport.hxx.

◆ invokeAfterSocketCreationFunc()

virtual void resip::Transport::invokeAfterSocketCreationFunc ( ) const
pure virtual

◆ ipVersion()

IpVersion resip::Transport::ipVersion ( ) const
inline

Definition at line 279 of file Transport.hxx.

◆ isDatagram()

virtual bool resip::Transport::isDatagram ( ) const
pure virtual

◆ isFinished()

virtual bool resip::Transport::isFinished ( ) const
pure virtual
Note
Subclasses override this method by checking whether there are unprocessed messages on the TransactionMessage Fifo (that was passed in to the constructor).

Implemented in resip::InternalTransport.

◆ isReliable()

virtual bool resip::Transport::isReliable ( ) const
pure virtual

◆ isShuttingDown()

virtual bool resip::Transport::isShuttingDown ( )
inlinevirtual

Definition at line 366 of file Transport.hxx.

◆ isV4()

bool resip::Transport::isV4 ( ) const
inline
Deprecated:
use ipVersion()

Definition at line 277 of file Transport.hxx.

◆ keepAlivePong()

void Transport::keepAlivePong ( const Tuple &  flow)

Definition at line 346 of file Transport.cxx.

◆ make100()

std::unique_ptr< SendData > Transport::make100 ( SipMessage &  msg)

Definition at line 442 of file Transport.cxx.

◆ make503()

std::unique_ptr< SendData > Transport::make503 ( SipMessage &  msg,
uint16_t  retryAfter 
)

Definition at line 408 of file Transport.cxx.

◆ makeFailedResponse()

void Transport::makeFailedResponse ( const SipMessage &  msg,
int  responseCode = 400,
const char *  warning = nullptr 
)

Definition at line 378 of file Transport.cxx.

◆ makeSendData()

std::unique_ptr< SendData > Transport::makeSendData ( const Tuple &  tuple,
const Data &  data,
const Data &  tid,
const Data &  sigcompId = Data::Empty 
)

Definition at line 370 of file Transport.cxx.

◆ netNs()

const Data & resip::Transport::netNs ( ) const
inline
Returns
net namespace in which Transport is bound

Definition at line 296 of file Transport.hxx.

◆ onReload()

void Transport::onReload ( )
virtual

Reimplemented in resip::TlsBaseTransport.

Definition at line 120 of file Transport.cxx.

◆ operator==()

bool Transport::operator== ( const Transport &  rhs) const

Definition at line 642 of file Transport.cxx.

◆ poke()

virtual void resip::Transport::poke ( )
inlinevirtual

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.

This does nothing if select is not currently blocking, so don't bother calling this from the same thread that selects on this Transport's fds. Default impl is a no-op.

Reimplemented in resip::InternalTransport.

Definition at line 204 of file Transport.hxx.

◆ port()

int resip::Transport::port ( ) const
inline

Definition at line 274 of file Transport.hxx.

◆ process() [1/2]

virtual void resip::Transport::process ( )
pure virtual

Version of process to be invoked periodically when using callback-based IO (via FdPollGrp).

Implemented in resip::TcpBaseTransport, and resip::UdpTransport.

◆ process() [2/2]

virtual void resip::Transport::process ( FdSet &  fdset)
pure 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.

See also
sendData()
Parameters
fdsetis the FdSet after select() has been called.
See also
FdSet::select()

Implements resip::FdSetIOObserver.

Implemented in resip::DtlsTransport, resip::TcpBaseTransport, and resip::UdpTransport.

◆ pushRxMsgUp()

void Transport::pushRxMsgUp ( SipMessage *  msg)
virtual

Definition at line 631 of file Transport.cxx.

◆ send()

virtual void resip::Transport::send ( std::unique_ptr< SendData >  data)
pure virtual
Todo:
!bwc! What we do with a SendData is flexible. It might make a copy, or send synchronously, or convert to another type, etc.
Todo:
!bch! Should this be protected and not public? !bwc! TransportSelector uses this directly for retransmissions.

Implemented in resip::InternalTransport.

◆ setCongestionManager()

virtual void resip::Transport::setCongestionManager ( CongestionManager *  manager)
inlinevirtual

Reimplemented in resip::InternalTransport.

Definition at line 456 of file Transport.hxx.

◆ setDscp()

bool Transport::setDscp ( int  dscp)

Sets the DSCP class this transport puts on its sockets, and returns whether it was accepted.

The range is 0 to 63; -1 asks for no marking, and is the state of a transport this was never called on. Callable from any thread.

A value outside -1..63 is refused and the transport keeps the one it had. A value that differs schedules a refresh of the sockets this transport already holds, which it serves from its own processing cycle – and with it, the AfterSocketCreationFunc a user installed. Setting the same value again schedules no refresh, so a service may call this on every configuration reload.

Definition at line 568 of file Transport.cxx.

◆ setKey()

void resip::Transport::setKey ( unsigned int  pKey)
inline

Definition at line 487 of file Transport.hxx.

◆ setPollGrp()

virtual void resip::Transport::setPollGrp ( FdPollGrp *  grp)
pure virtual

◆ setRcvBufLen()

virtual void resip::Transport::setRcvBufLen ( int  buflen)
inlinevirtual

Reimplemented in resip::TcpBaseTransport, and resip::UdpTransport.

Definition at line 484 of file Transport.hxx.

◆ setRemoteSigcompId()

void Transport::setRemoteSigcompId ( SipMessage &  msg,
Data &  id 
)

Definition at line 474 of file Transport.cxx.

◆ setSipMessageLoggingHandler()

void Transport::setSipMessageLoggingHandler ( std::shared_ptr< SipMessageLoggingHandler >  handler)

Definition at line 31 of file Transport.cxx.

◆ setSipMessageLoggingHandlers()

void Transport::setSipMessageLoggingHandlers ( const SipMessageLoggingHandlerList &  handlers)

Definition at line 51 of file Transport.cxx.

◆ setTcpConnectState()

void Transport::setTcpConnectState ( const Data &  tid,
TcpConnectState::State  state 
)

Posts a TcpConnectState to the TransactionMessage Fifo.

Definition at line 361 of file Transport.cxx.

◆ setTlsDomain()

void resip::Transport::setTlsDomain ( const Data &  domain)
inlineprotected

Definition at line 504 of file Transport.hxx.

◆ shareStackProcessAndSelect()

virtual bool resip::Transport::shareStackProcessAndSelect ( ) const
pure virtual

Returns true if this Transport should be included in the FdSet processing loop, false if the Transport will provide its own cycles.

If the Transport is going to provide its own cycles, the startOwnProcessing() and shutdown() will be called to tell the Transport when to process.

Return values
truewill run in the SipStack's processing context
falseprovides own cycles, just puts messages in rxFifo

Implemented in resip::InternalTransport.

◆ shutdown()

virtual void resip::Transport::shutdown ( )
inlinevirtual

This starts shutting-down procedures for this Transport.

New requests may be denied while "mShuttingDown" is true.

Overriding implementations should chain through to this.

Todo:
?dcm? pure virtual protected method to enforce this?
See also
basicCheck()
isFinished()

Definition at line 361 of file Transport.hxx.

◆ stampReceived()

void Transport::stampReceived ( SipMessage *  request)
static

Definition at line 509 of file Transport.cxx.

◆ startOwnProcessing()

virtual void resip::Transport::startOwnProcessing ( )
pure virtual

transports that returned false to shareStackProcessAndSelect() shouldn't put messages into the fifo until this is called

Todo:
?dcm? avoid the received a message but haven't added a transport to the TransportSelector race, but this might not be necessary.

Implemented in resip::InternalTransport.

◆ tlsDomain()

const Data & resip::Transport::tlsDomain ( ) const
inline
Returns
the domain name that will be used for TLS, to, for example, find the certificate to present in the TLS handshake.

Definition at line 286 of file Transport.hxx.

◆ transport()

const TransportType resip::Transport::transport ( ) const
inline
Returns
This transport's TransportType.

Definition at line 291 of file Transport.hxx.

◆ unsetSipMessageLoggingHandler()

void Transport::unsetSipMessageLoggingHandler ( )
noexcept

Definition at line 57 of file Transport.cxx.

Friends And Related Symbol Documentation

◆ operator<<

EncodeStream & operator<< ( EncodeStream &  strm,
const Transport &  rhs 
)
friend

Member Data Documentation

◆ mCompression

Compression& resip::Transport::mCompression
protected

Definition at line 514 of file Transport.hxx.

◆ mCongestionManager

CongestionManager* resip::Transport::mCongestionManager
protected

Definition at line 500 of file Transport.hxx.

◆ mDscp

std::atomic<int> resip::Transport::mDscp { -1 }
protected

the class to write, -1 for "do not mark"

Definition at line 518 of file Transport.hxx.

◆ mDscpRefreshPending

std::atomic<bool> resip::Transport::mDscpRefreshPending { false }
protected

Set by setDscp() when the value changes, cleared by the owning thread's refresh.

Sequentially consistent on purpose: under a relaxed order that refresh could see the request and still read the previous mDscp.

Definition at line 522 of file Transport.hxx.

◆ mDscpReportPending

std::atomic<bool> resip::Transport::mDscpReportPending { false }
protected

Set by every setDscp() call, cleared by the owning thread's report, so a reload that changed nothing still says what the listener carries.

Definition at line 525 of file Transport.hxx.

◆ mInterface

Data resip::Transport::mInterface
protected

Definition at line 497 of file Transport.hxx.

◆ mShuttingDown

bool resip::Transport::mShuttingDown
protected

Definition at line 502 of file Transport.hxx.

◆ mSocketFunc

AfterSocketCreationFuncPtr resip::Transport::mSocketFunc
protected

Definition at line 513 of file Transport.hxx.

◆ mStateMachineFifo

ProducerFifoBuffer<TransactionMessage> resip::Transport::mStateMachineFifo
protected

Definition at line 501 of file Transport.hxx.

◆ mTransportFlags

unsigned resip::Transport::mTransportFlags
protected

Definition at line 515 of file Transport.hxx.

◆ mTuple

Tuple resip::Transport::mTuple
protected

Definition at line 498 of file Transport.hxx.

◆ mWasMarkRequested

std::atomic<bool> resip::Transport::mWasMarkRequested { false }
mutableprotected

Whether this transport has asked a socket to carry a class that a clear would have to undo.

Definition at line 528 of file Transport.hxx.


The documentation for this class was generated from the following files: