Yate
MGCPTransaction Class Reference

An MGCP transaction. More...

#include <yatemgcp.h>

Inheritance diagram for MGCPTransaction:
RefObject Mutex GenObject Lockable

Public Types

enum  State {
  Invalid = 0 , Initiated = 1 , Trying = 2 , Responded = 3 ,
  Ack = 4 , Destroying = 5
}
 

Public Member Functions

 MGCPTransaction (MGCPEngine *engine, MGCPMessage *msg, bool outgoing, const SocketAddr &address, bool engineProcess=true)
 
virtual ~MGCPTransaction ()
 
State state () const
 
unsigned int id () const
 
bool outgoing () const
 
const Stringep () const
 
const SocketAddraddr () const
 
MGCPEngineengine ()
 
const MGCPMessageinitial () const
 
const MGCPMessagemsgProvisional () const
 
const MGCPMessagemsgResponse () const
 
const MGCPMessagemsgAck () const
 
bool timeout () const
 
void ackRequest (bool request)
 
void * userData () const
 
void userData (void *data)
 
void setEngineProcess ()
 
MGCPEventgetEvent (u_int64_t time=Time())
 
bool sendProvisional (int code=100, const char *comment=0)
 
bool setResponse (int code, const char *comment=0)
 
bool setResponse (int code, const NamedList *params, MimeSdpBody *sdp1=0, MimeSdpBody *sdp2=0)
 
bool setResponse (MGCPMessage *msg)
 
- Public Member Functions inherited from RefObject
 RefObject ()
 
virtual ~RefObject ()
 
virtual void * getObject (const String &name) const
 
virtual bool alive () const
 
bool ref ()
 
bool deref ()
 
int refcount () const
 
virtual void destruct ()
 
- Public Member Functions inherited from GenObject
 GenObject ()
 
virtual ~GenObject ()
 
virtual const StringtoString () const
 
virtual const StringtraceId () const
 
NamedCountergetObjCounter () const
 
NamedCountersetObjCounter (NamedCounter *counter)
 
- Public Member Functions inherited from Mutex
 Mutex (bool recursive=false, const char *name=0)
 
 Mutex (const Mutex &original)
 
 ~Mutex ()
 
Mutexoperator= (const Mutex &original)
 
virtual bool lock (long maxwait=-1)
 
virtual bool unlock ()
 
virtual bool locked () const
 
const char * owner () const
 
bool recursive () const
 
- Public Member Functions inherited from Lockable
virtual ~Lockable ()
 
virtual bool check (long maxwait=-1)
 
virtual bool unlockAll ()
 

Protected Member Functions

virtual void destroyed ()
 
void processMessage (MGCPMessage *msg)
 
MGCPEventcheckTimeout (u_int64_t time)
 
void eventTerminated (MGCPEvent *event)
 
void changeState (State newState)
 
void setProvisional (int code=100)
 
void send (MGCPMessage *msg)
 
- Protected Member Functions inherited from RefObject
virtual void zeroRefs ()
 
bool resurrect ()
 

Friends

class MGCPEngine
 
class MGCPEvent
 

Additional Inherited Members

- Static Public Member Functions inherited from RefObject
static bool alive (const RefObject *obj)
 
static bool efficientIncDec ()
 
- Static Public Member Functions inherited from GenObject
static void * getObject (const String &name, const GenObject *obj)
 
static bool getObjCounting ()
 
static void setObjCounting (bool enable)
 
static NamedCountergetObjCounter (const String &name, bool create=true)
 
static ObjListgetObjCounters ()
 
- Static Public Member Functions inherited from Mutex
static int count ()
 
static int locks ()
 
static bool efficientTimedLock ()
 
- Static Public Member Functions inherited from Lockable
static void wait (unsigned long maxwait)
 
static unsigned long wait ()
 
static void startUsingNow ()
 
static void enableSafety (bool safe=true)
 
static bool safety ()
 

Detailed Description

An MGCP transaction.

This class implements an MGCP transaction

Member Enumeration Documentation

◆ State

enum State

Transaction state enumeration

Constructor & Destructor Documentation

◆ MGCPTransaction()

MGCPTransaction ( MGCPEngine * engine,
MGCPMessage * msg,
bool outgoing,
const SocketAddr & address,
bool engineProcess = true )

Constructor. Construct a transaction from its first message

Parameters
engineThe engine owning this transaction
msgThe command creating this transaction
outgoingThe direction of this transaction
addressRemote enpoint's address
engineProcessUse engine processor thread for this transaction

References engine(), and outgoing().

Referenced by send().

◆ ~MGCPTransaction()

virtual ~MGCPTransaction ( )
virtual

Destructor

Member Function Documentation

◆ ackRequest()

void ackRequest ( bool request)
inline

Set the remote ACK request flag

Parameters
requestFalse if remote is not required to send an ACK

◆ addr()

const SocketAddr & addr ( ) const
inline

Get the remote endpoint's IP address

Returns
The remote endpoint's IP address

◆ changeState()

void changeState ( State newState)
protected

Change transaction's state if the new state is a valid one

Parameters
newStateThe new state of this transaction

◆ checkTimeout()

MGCPEvent * checkTimeout ( u_int64_t time)
protected

Check timeouts. Manage retransmissions

Parameters
timeCurrent time in milliseconds
Returns
MGCPEvent pointer if timeout

◆ destroyed()

virtual void destroyed ( )
protectedvirtual

Gracefully terminate this transaction. Release memory

Reimplemented from RefObject.

◆ engine()

MGCPEngine * engine ( )
inline

Get the engine owning this transaction

Returns
The engine owning this transaction

Referenced by MGCPTransaction().

◆ ep()

const String & ep ( ) const
inline

Get the id of the endpoint owning this transaction

Returns
The id of the endpoint owning this transaction

◆ eventTerminated()

void eventTerminated ( MGCPEvent * event)
protected

Event termination notification

Parameters
eventThe notifier

◆ getEvent()

MGCPEvent * getEvent ( u_int64_t time = Time())

Get an event from this transaction. Check timeouts

Parameters
timeCurrent time in microseconds
Returns
MGCPEvent pointer or 0 if none

◆ id()

unsigned int id ( ) const
inline

Get the id of this transaction

Returns
The id of this transaction

◆ initial()

const MGCPMessage * initial ( ) const
inline

Get the initial command message sent or received by this transaction

Returns
The transaction's initial message

◆ msgAck()

const MGCPMessage * msgAck ( ) const
inline

Get the response aknowledgement message sent or received by this transaction

Returns
The transaction's response aknowledgement message

◆ msgProvisional()

const MGCPMessage * msgProvisional ( ) const
inline

Get the provisional response message sent or received by this transaction

Returns
The transaction's provisional response message

◆ msgResponse()

const MGCPMessage * msgResponse ( ) const
inline

Get the final response message sent or received by this transaction

Returns
The transaction's final response message

◆ outgoing()

bool outgoing ( ) const
inline

Get the direction of this transaction

Returns
True if this is an outgoing transaction

Referenced by MGCPTransaction().

◆ processMessage()

void processMessage ( MGCPMessage * msg)
protected

Consume (process) a received message, other then the initiating one

Parameters
msgThe received message

◆ send()

void send ( MGCPMessage * msg)
protected

(Re)send one the initial, provisional or final response. Change transaction's state

Parameters
msgThe message to send

References MGCPTransaction().

◆ sendProvisional()

bool sendProvisional ( int code = 100,
const char * comment = 0 )

Explicitely transmits a provisional code

Parameters
codeProvisional response code to send, must be in range 100-199
commentOptional response comment text
Returns
True if the provisional response was sent

◆ setEngineProcess()

void setEngineProcess ( )
inline

Set the engine process flag. Allow the engine to process this transaction (call getEvent() from engine process thread)

◆ setProvisional()

void setProvisional ( int code = 100)
protected

Set and send the provisional response (codes between 100 and 199)

Parameters
codeThe response code

◆ setResponse() [1/3]

bool setResponse ( int code,
const char * comment = 0 )
inline

Creates and transmits a final response (code must at least 200) message if this is an incoming transaction

Parameters
codeResponse code to send
commentOptional response comment text
Returns
True if the message was queued for transmission

References setResponse().

Referenced by setResponse().

◆ setResponse() [2/3]

bool setResponse ( int code,
const NamedList * params,
MimeSdpBody * sdp1 = 0,
MimeSdpBody * sdp2 = 0 )

Creates and transmits a final response (code must at least 200) message if this is an incoming transaction. The SDP(s) will be consumed (appended to the message or destroyed)

Parameters
codeResponse code to send
paramsParameters to set in response, name will be set as comment
sdp1Optional SDP to be added to the response
sdp2Optional second SDP to be added to the response if the first one is not 0
Returns
True if the message was queued for transmission

◆ setResponse() [3/3]

bool setResponse ( MGCPMessage * msg)

Transmits a final response (code must at least 200) message if this is an incoming transaction

Parameters
msgThe message to transmit
Returns
True if the message was queued for transmission

◆ state()

State state ( ) const
inline

Get the current transaction's state

Returns
The transaction state as enumeration

◆ timeout()

bool timeout ( ) const
inline

Check if this transaction timed out

Returns
True if this transaction timed out

◆ userData() [1/2]

void * userData ( ) const
inline

Get the private user data of this transaction

Returns
The private user data of this transaction

◆ userData() [2/2]

void userData ( void * data)
inline

Set the private user data of this transaction

Parameters
dataThe new private user data of this transaction

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