Yate: ClientChannel Class Reference

Yate

Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Friends | List of all members
ClientChannel Class Reference

Channel used by client programs. More...

`#include <yatecbase.h>`

Inheritance diagram for ClientChannel:

## Public Types
enum | Notification { Startup , Destroyed , Active , OnHold , Mute , Noticed , AddrChanged , Routed , Accepted , Rejected , Progressing , Ringing , Answered , Transfer , Conference , AudioSet , Unknown }
enum | SlaveType { SlaveNone = 0 , SlaveTransfer , SlaveConference }

## Public Member Functions
| ClientChannel (const Message &msg, const String &peerid)
| ClientChannel (const String &target, const NamedList &params, int st=SlaveNone, const String &masterChan=String::empty())
| ClientChannel (const String &soundId)
bool | start (const String &target, const NamedList &params)
virtual bool | msgProgress (Message &msg)
virtual bool | msgRinging (Message &msg)
virtual bool | msgAnswered (Message &msg)
virtual bool | msgDrop (Message &msg, const char *reason)
virtual bool | callRouted (Message &msg)
virtual void | callAccept (Message &msg)
virtual void | callRejected (const char *error, const char *reason, const Message *msg)
void | callAnswer (bool setActive=true)
int | slave () const
ObjList & | slaves ()
unsigned int | slavesCount () const
void | addSlave (const String &sid)
void | removeSlave (const String &sid)
const String & | master () const
const NamedList & | clientParams () const
const String & | party () const
const String & | partyName () const
bool | conference () const
const String & | transferId () const
RefObject * | clientData () const
void | setClientData (RefObject *obj=0)
bool | setMedia (bool open=false, bool replace=false)
bool | setActive (bool active, bool update=true)
bool | setMuted (bool on, bool update=true)
void | setTransfer (const String &target=String::empty())
void | setConference (const String &target=String::empty())
const String & | peerOutFormat () const
const String & | peerInFormat () const
bool | active () const
bool | muted () const
bool | isNoticed () const
void | noticed ()
int | line () const
void | line (int newLine)
void | update (int notif, bool chan=true, bool updatePeer=true, const char *engineMsg=0, bool minimal=false, bool data=false)
void | getReconnPeer (String &buf)
bool | hasReconnPeer ()
CallEndpoint * | getReconnPeer (bool ref=true)
void | dropReconnPeer (const char *reason=0)
Public Member Functions inherited from Channel
virtual | ~Channel ()
virtual void * | getObject (const String &name) const
virtual void | complete (Message &msg, bool minimal=false) const
Message * | message (const char *name, bool minimal=false, bool data=false)
Message * | message (const char *name, const NamedList *original, const char *params=0, bool minimal=false, bool data=false)
Message * | message (const char *name, const NamedList &original, const char *params=0, bool minimal=false, bool data=false)
virtual bool | msgTone (Message &msg, const char *tone)
virtual bool | msgText (Message &msg, const char *text)
virtual bool | msgTransfer (Message &msg)
virtual bool | msgUpdate (Message &msg)
virtual bool | msgMasquerade (Message &msg)
virtual void | msgStatus (Message &msg)
virtual bool | msgControl (Message &msg)
virtual void | checkTimers (Message &msg, const Time &tmr)
virtual bool | callPrerouted (Message &msg, bool handled)
virtual void | callConnect (Message &msg)
virtual bool | setDebug (Message &msg)
String & | getStatus (String &buf, bool append=true) const
void | putStatus (NamedList &list, const char *param="status", bool append=true) const
const String & | address () const
bool | isOutgoing () const
bool | isIncoming () const
bool | isAnswered () const
const char * | direction () const
Driver * | driver () const
u_int64_t | timeout () const
void | timeout (u_int64_t tout)
u_int64_t | maxcall () const
void | maxcall (u_int64_t tout)
void | setMaxcall (const Message &msg, int defTout=-1)
void | setMaxcall (const Message *msg, int defTout=-1)
u_int64_t | maxPDD () const
void | maxPDD (u_int64_t tout)
void | setMaxPDD (const Message &msg)
const String & | targetid () const
const String & | billid () const
void | initChan ()
bool | startRouter (Message *msg)
void | filterDebug (const String &item)
const NamedList & | parameters () const
void | setChanParams (const NamedList &list, bool in=false)
void | copyChanParams (NamedList &list) const
virtual void | dispatched (const Message &msg, bool handled)
Public Member Functions inherited from CallEndpoint
virtual const String & | toString () const
const String & | id () const
CallEndpoint * | getPeer () const
bool | getPeerId (String &id) const
String | getPeerId () const
bool | getLastPeerId (String &id) const
void | setLastPeerId ()
Mutex * | mutex () const
bool | connect (CallEndpoint *peer, const char *reason=0, bool notify=true)
bool | disconnect (const char *reason=0, bool notify=true, const NamedList *params=0)
bool | disconnect (const char *reason, const NamedList &params)
DataEndpoint * | getEndpoint (const String &type=CallEndpoint::audioType()) const
DataEndpoint * | setEndpoint (const String &type=CallEndpoint::audioType())
void | clearEndpoint (const String &type=String::empty())
void | setSource (DataSource *source=0, const String &type=CallEndpoint::audioType())
DataSource * | getSource (const String &type=CallEndpoint::audioType()) const
void | setConsumer (DataConsumer *consumer=0, const String &type=CallEndpoint::audioType())
DataConsumer * | getConsumer (const String &type=CallEndpoint::audioType()) const
bool | clearData (DataNode *node, const String &type=CallEndpoint::audioType())
Public Member Functions inherited from RefObject
| RefObject ()
virtual | ~RefObject ()
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 String & | traceId () const
NamedCounter * | getObjCounter () const
NamedCounter * | setObjCounter (NamedCounter *counter)
Public Member Functions inherited from DebugEnabler
| DebugEnabler (int level=TelEngine::debugLevel(), bool enabled=true)
int | debugLevel () const
int | debugLevel (int level)
bool | debugEnabled () const
void | debugEnabled (bool enable)
const char * | debugName () const
bool | debugAt (int level) const
bool | debugChained () const
void | debugChain (const DebugEnabler *chain=0)
void | debugCopy (const DebugEnabler *original=0)
void | debugSet (const char *desc)
Public Member Functions inherited from MessageNotifier
virtual | ~MessageNotifier ()

## Static Public Member Functions
static int | lookup (const char *notif, int def=Unknown)
static const char * | lookup (int notif, const char *def=0)
static int | lookupSlaveType (const char *notif, int def=SlaveNone)
Static Public Member Functions inherited from Channel
static Mutex & | paramMutex ()
static unsigned int | allocId ()
Static Public Member Functions inherited from CallEndpoint
static Mutex & | commonMutex ()
static const String & | audioType ()
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 NamedCounter * | getObjCounter (const String &name, bool create=true)
static ObjList & | getObjCounters ()

## Static Public Attributes
static const TokenDict | s_notification []
static const TokenDict | s_slaveTypes []

## Protected Member Functions
virtual void | destroyed ()
virtual void | connected (const char *reason)
virtual void | disconnected (bool final, const char *reason)
bool | peerHasSource (Message &msg)
void | checkSilence ()
Protected Member Functions inherited from Channel
| Channel (Driver *driver, const char *id=0, bool outgoing=false)
| Channel (Driver &driver, const char *id=0, bool outgoing=false)
void | cleanup ()
void | dropChan ()
virtual void | zeroRefs ()
virtual void | setDisconnect (const NamedList *params)
virtual void | endDisconnect (const Message &msg, bool handled)
virtual void | setId (const char *newId)
virtual Message * | getDisconnect (const char *reason)
void | status (const char *newstat)
const String & | getStatus () const
virtual void | statusParams (String &str)
void | setOutgoing (bool outgoing=true)
bool | dtmfSequence (Message &msg)
bool | dtmfEnqueue (Message *msg)
bool | dtmfInband (const char *tone)
bool | toneDetect (const char *sniffer=0)
NamedList & | parameters ()
Protected Member Functions inherited from CallEndpoint
| CallEndpoint (const char *id=0)
void | setPeer (CallEndpoint *peer, const char *reason=0, bool notify=true, const NamedList *params=0)
void | setEndpoint (DataEndpoint *endPoint)
Protected Member Functions inherited from RefObject
bool | resurrect ()
Protected Member Functions inherited from DebugEnabler
void | debugName (const char *name)

## Protected Attributes
int | m_slave
String | m_master
String | m_party
String | m_partyName
String | m_peerOutFormat
String | m_peerInFormat
String | m_reason
String | m_peerId
bool | m_noticed
int | m_line
bool | m_active
bool | m_silence
bool | m_conference
bool | m_muted
String | m_transferId
RefObject * | m_clientData
bool | m_utility
String | m_soundId
ObjList | m_slaves
NamedList | m_clientParams
Protected Attributes inherited from Channel
String | m_status
String | m_address
String | m_targetid
String | m_billid
bool | m_answered
Protected Attributes inherited from CallEndpoint
ObjList | m_data
Mutex * | m_mutex

## Friends
class | ClientDriver

## Detailed Description

Channel used by client programs.

This class implements a Channel used by client programs

## Member Enumeration Documentation

## ◆ Notification

enum Notification

Channel notifications

## ◆ SlaveType

enum SlaveType

Channel slave type

## Constructor & Destructor Documentation

## ◆ ClientChannel() [1/3]

ClientChannel | ( | const Message & | msg,
|  | const String & | peerid )

Incoming (from engine) constructor

Parameters

  msg | The call.execute message
  peerid | The peer's id

## ◆ ClientChannel() [2/3]

ClientChannel | ( | const String & | target,
|  | const NamedList & | params,
|  | int | st = SlaveNone,
|  | const String & | masterChan = String::empty() )

Outgoing (to engine) constructor

Parameters

  target | The target to call
  params | Call parameters
  st | Optional slave
  masterChan | Master channel id if slave, ignored otherwise

## ◆ ClientChannel() [3/3]

ClientChannel | ( | const String & | soundId | ) |
| explicit

Constructor for utility channels used to play notifications

Parameters

  soundId | The id of the sound to play

## Member Function Documentation

## ◆ active()

bool active | ( |  | ) | const
| inline

Check if this channel is the active one

Returns
  True if this channel is the active one

## ◆ addSlave()

void addSlave | ( | const String & | sid | ) |
| inline

Add a slave id. This method is thread safe

Parameters

  sid | Slave id to add

References ObjList::append(), and ObjList::find().

## ◆ callAccept()

virtual void callAccept | ( | Message & | msg | ) |
| virtual

Notification on success of incoming call

Parameters

  msg | Notification call.execute message just after being dispatched

Reimplemented from Channel.

## ◆ callAnswer()

void callAnswer | ( | bool | setActive = true | ) |

Answer an incoming call. Set media channels. Enqueue a clientchan.update message

Parameters

  setActive | True to activate the channel

## ◆ callRejected()

virtual void callRejected | ( | const char * | error,
|  | const char * | reason,
|  | const Message * | msg )
| virtual

Notification on failure of incoming call

Parameters

  error | Standard error keyword
  reason | Textual failure reason
  msg | Pointer to message causing the rejection, if any

Reimplemented from Channel.

## ◆ callRouted()

virtual bool callRouted | ( | Message & | msg | ) |
| virtual

Notification on progress of routing incoming call

Parameters

  msg | Notification call.route message just after being dispatched

Returns
  True to continue with the call, false to abort the route

Reimplemented from Channel.

## ◆ clientData()

RefObject * clientData | ( |  | ) | const
| inline

Get the client data

Returns
  RefObject pointer or 0

## ◆ clientParams()

const NamedList & clientParams | ( |  | ) | const
| inline

Retrieve channel client parameters

Returns
  Channel client parameters list

## ◆ conference()

bool conference | ( |  | ) | const
| inline

Check if this channel is in conference

Returns
  True if this channel is in conference

## ◆ connected()

virtual void connected | ( | const char * | reason | ) |
| protectedvirtual

Connect notification method.

Parameters

  reason | Text that describes connect reason.

Reimplemented from Channel.

## ◆ destroyed()

virtual void destroyed | ( |  | ) |
| protectedvirtual

Destruct notification, performs cleanups

Reimplemented from CallEndpoint.

## ◆ disconnected()

virtual void disconnected | ( | bool | final,
|  | const char * | reason )
| protectedvirtual

Disconnect notification method.

Parameters

  final | True if this disconnect was called from the destructor.
  reason | Text that describes disconnect reason.

Reimplemented from Channel.

## ◆ dropReconnPeer()

void dropReconnPeer | ( | const char * | reason = 0 | ) |

Drop peer used to reconnect

## ◆ getReconnPeer() [1/2]

CallEndpoint * getReconnPeer | ( | bool | ref = true | ) |

Get peer used to reconnect

Parameters

  ref | True to return a referenced pointer

Returns
  CallEndpoint pointer or 0 if not found

## ◆ getReconnPeer() [2/2]

void getReconnPeer | ( | String & | buf | ) |
| inline

Retrieve peer used to reconnect. This method is thread safe

Parameters

  buf | Destination buffer

Referenced by ClientChannel::hasReconnPeer().

## ◆ hasReconnPeer()

bool hasReconnPeer | ( |  | ) |
| inline

Check if the peer used to reconnect is alive

Returns
  True if the peer used to reconnect is alive

References ClientChannel::getReconnPeer().

## ◆ isNoticed()

bool isNoticed | ( |  | ) | const
| inline

Check if this channel was noticed

Returns
  True if this channel was noticed

## ◆ line() [1/2]

int line | ( |  | ) | const
| inline

Get this channel's line

Returns
  This channel's line

## ◆ line() [2/2]

void line | ( | int | newLine | ) |

Set this channel's line

Parameters

  newLine | This channel's line

## ◆ lookup() [1/2]

static int lookup | ( | const char * | notif,
|  | int | def = Unknown )
| inlinestatic

Lookup for a notification id

Parameters

  notif | The notification's name
  def | Default value to return if not found

Returns
  The result

References ClientChannel::s_notification.

## ◆ lookup() [2/2]

static const char * lookup | ( | int | notif,
|  | const char * | def = 0 )
| inlinestatic

Lookup for a notification name

Parameters

  notif | The notification's id
  def | Default value to return if not found

Returns
  The result

References ClientChannel::s_notification.

## ◆ lookupSlaveType()

static int lookupSlaveType | ( | const char * | notif,
|  | int | def = SlaveNone )
| inlinestatic

Lookup for a slave type

Parameters

  notif | The slave type name
  def | Default value to return if not found

Returns
  The result

References ClientChannel::s_slaveTypes.

## ◆ master()

const String & master | ( |  | ) | const
| inline

Get the master channel id if any

Returns
  The master channel id of this channel

## ◆ msgAnswered()

virtual bool msgAnswered | ( | Message & | msg | ) |
| virtual

Notification on remote answered. Note that the answered flag will be set

Parameters

  msg | Notification message

Returns
  True to stop processing the message, false to let it flow

Reimplemented from Channel.

## ◆ msgDrop()

virtual bool msgDrop | ( | Message & | msg,
|  | const char * | reason )
| virtual

Notification on current call drop request

Parameters

  msg | Notification message
  reason | Pointer to drop reason text or NULL if none provided

Returns
  True if initiated call drop, false if failed

Reimplemented from Channel.

## ◆ msgProgress()

virtual bool msgProgress | ( | Message & | msg | ) |
| virtual

Notification on remote call making some progress, not enabled by default

Parameters

  msg | Notification message

Returns
  True to stop processing the message, false to let it flow

Reimplemented from Channel.

## ◆ msgRinging()

virtual bool msgRinging | ( | Message & | msg | ) |
| virtual

Notification on remote ringing

Parameters

  msg | Notification message

Returns
  True to stop processing the message, false to let it flow

Reimplemented from Channel.

## ◆ muted()

bool muted | ( |  | ) | const
| inline

Check if this channel is muted

Returns
  True if this channel is muted

## ◆ noticed()

void noticed | ( |  | ) |

Notice this channel. Enqueue a clientchan.update message

## ◆ party()

const String & party | ( |  | ) | const
| inline

Get the remote party of this channel

Returns
  The remote party of this channel

## ◆ partyName()

const String & partyName | ( |  | ) | const
| inline

Get the remote party name of this channel

Returns
  The remote party name of this channel

## ◆ peerInFormat()

const String & peerInFormat | ( |  | ) | const
| inline

Get the peer source's data format

Returns
  The peer source's data format

## ◆ peerOutFormat()

const String & peerOutFormat | ( |  | ) | const
| inline

Get the peer consumer's data format

Returns
  The peer consumer's data format

## ◆ removeSlave()

void removeSlave | ( | const String & | sid | ) |
| inline

Remove a slave id. This method is thread safe

Parameters

  sid | Slave id to remove

References ObjList::remove().

## ◆ setActive()

bool setActive | ( | bool | active,
|  | bool | update = true )

Set/reset this channel's data source/consumer

Parameters

  active | True to set active, false to set inactive (mute)
  update | True to enqueue an update message

Returns
  True on success

## ◆ setClientData()

void setClientData | ( | RefObject * | obj = 0 | ) |
| inline

Set/reset the client data. If a new client data is set its reference counter is increased

Parameters

  obj | The new client data

## ◆ setConference()

void setConference | ( | const String & | target = String::empty() | ) |

Set/reset the conference data. Enqueue clientchan.update if changed. Open media when reset if the channel is active and answered

Parameters

  target | The confeernce room's name. Leave it blank to reset

## ◆ setMedia()

bool setMedia | ( | bool | open = false,
|  | bool | replace = false )

Attach/detach media channels

Parameters

  open | True to open, false to close
  replace | True to replace media if already open. Ignored if open is false

Returns
  True on success

## ◆ setMuted()

bool setMuted | ( | bool | on,
|  | bool | update = true )

Set/reset this channel's muted flag. Set media if 'on' is false and the channel is active

Parameters

  on | True to reset outgoing media, false to set outgoing media
  update | True to enqueue an update message

Returns
  True on success

## ◆ setTransfer()

void setTransfer | ( | const String & | target = String::empty() | ) |

Set/reset the transferred peer's id. Enqueue clientchan.update if changed. Open media when reset if the channel is active and answered

Parameters

  target | The transferred peer's id. Leave it blank to reset

## ◆ slave()

int slave | ( |  | ) | const
| inline

Get the slave type of this channel

Returns
  The slave type of this channel

## ◆ slaves()

ObjList & slaves | ( |  | ) |
| inline

Retrieve channel slaves. This method is not thread safe

Returns
  Channel slaves list

## ◆ slavesCount()

unsigned int slavesCount | ( |  | ) | const
| inline

Retrieve channel slaves number. This method is thread safe

Returns
  Channel slaves list

References ObjList::count().

## ◆ start()

bool start | ( | const String & | target,
|  | const NamedList & | params )

Init and start router for an outgoing (to engine), not utility, channel

Parameters

  target | The target to call
  params | Call parameters

Returns
  True on success

## ◆ transferId()

const String & transferId | ( |  | ) | const
| inline

Get the transferred peer's id

Returns
  The transferred peer's id

## ◆ update()

void update | ( | int | notif,
|  | bool | chan = true,
|  | bool | updatePeer = true,
|  | const char * | engineMsg = 0,
|  | bool | minimal = false,
|  | bool | data = false )

Update channel. Enqueue a clientchan.update message with the given operation. Enqueue other channel status messages if required

Parameters

  notif | The value of the notify parameter
  chan | Set the channel as message's user data
  updatePeer | True to update peer's data formats
  engineMsg | Optional message to enqueue in the engine
  minimal | Set to true to fill in only a minimum of engine message's parameters
  data | Set the channel as engine message's user data

## Member Data Documentation

## ◆ s_notification

const TokenDict s_notification[]
| static

Channel notifications dictionary

Referenced by ClientChannel::lookup(), and ClientChannel::lookup().

## ◆ s_slaveTypes

const TokenDict s_slaveTypes[]
| static

Channel notifications dictionary

Referenced by ClientChannel::lookupSlaveType().

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

- yatecbase.h