Yate
Public Types | Public Member Functions | Protected Member Functions | Friends

MGCPTransaction Class Reference

An MGCP transaction. More...

#include <yatemgcp.h>

Inheritance diagram for MGCPTransaction:
RefObject Mutex GenObject Lockable

List of all members.

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)
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)
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)

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)

Friends

class MGCPEngine
class MGCPEvent

Detailed Description

An MGCP transaction.

This class implements an MGCP transaction


Member Enumeration Documentation

enum State

Transaction state enumeration


Constructor & Destructor Documentation

MGCPTransaction ( MGCPEngine engine,
MGCPMessage msg,
bool  outgoing,
const SocketAddr address 
)

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
virtual ~MGCPTransaction ( ) [virtual]

Destructor


Member Function Documentation

void ackRequest ( bool  request) [inline]

Set the remote ACK request flag

Parameters:
requestFalse if remote is not required to send an ACK
const SocketAddr& addr ( ) const [inline]

Get the remote endpoint's IP address

Returns:
The remote endpoint's IP address
void changeState ( State  newState) [protected]

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

Parameters:
newStateThe new state of this transaction
MGCPEvent* checkTimeout ( u_int64_t  time) [protected]

Check timeouts. Manage retransmissions

Parameters:
timeCurrent time in milliseconds
Returns:
MGCPEvent pointer if timeout
virtual void destroyed ( ) [protected, virtual]

Gracefully terminate this transaction. Release memory

Reimplemented from RefObject.

MGCPEngine* engine ( ) [inline]

Get the engine owning this transaction

Returns:
The engine owning this transaction
const String& ep ( ) const [inline]

Get the id of the endpoint owning this transaction

Returns:
The id of the endpoint owning this transaction
void eventTerminated ( MGCPEvent event) [protected]

Event termination notification

Parameters:
eventThe notifier
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
unsigned int id ( ) const [inline]

Get the id of this transaction

Returns:
The id of this transaction
const MGCPMessage* initial ( ) const [inline]

Get the initial command message sent or received by this transaction

Returns:
The transaction's initial message
const MGCPMessage* msgAck ( ) const [inline]

Get the response aknowledgement message sent or received by this transaction

Returns:
The transaction's response aknowledgement message
const MGCPMessage* msgProvisional ( ) const [inline]

Get the provisional response message sent or received by this transaction

Returns:
The transaction's provisional response message
const MGCPMessage* msgResponse ( ) const [inline]

Get the final response message sent or received by this transaction

Returns:
The transaction's final response message
bool outgoing ( ) const [inline]

Get the direction of this transaction

Returns:
True if this is an outgoing transaction
void processMessage ( MGCPMessage msg) [protected]

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

Parameters:
msgThe received message
void send ( MGCPMessage msg) [protected]

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

Parameters:
msgThe message to send
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
void setProvisional ( int  code = 100) [protected]

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

Parameters:
codeThe response code
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 MGCPTransaction::setResponse().

Referenced by MGCPTransaction::setResponse().

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
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 ( ) const [inline]

Get the current transaction's state

Returns:
The transaction state as enumeration
bool timeout ( ) const [inline]

Check if this transaction timed out

Returns:
True if this transaction timed out
void userData ( void *  data) [inline]

Set the private user data of this transaction

Parameters:
dataThe new private user data of this transaction
void* userData ( ) const [inline]

Get the private user data of this transaction

Returns:
The private user data of this transaction

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