Yate
|
Channel used by client programs. More...
#include <yatecbase.h>
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 ¶ms, int st=SlaveNone, const String &masterChan=String::empty()) | |
ClientChannel (const String &soundId) | |
bool | start (const String &target, const NamedList ¶ms) |
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) |
const String & | status () 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 |
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 ¶ms) |
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 () |
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) |
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) |
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 |
enum Notification |
Channel notifications
ClientChannel | ( | const Message & | msg, |
const String & | peerid | ||
) |
Incoming (from engine) constructor
msg | The call.execute message |
peerid | The peer's id |
ClientChannel | ( | const String & | target, |
const NamedList & | params, | ||
int | st = SlaveNone , |
||
const String & | masterChan = String::empty() |
||
) |
Outgoing (to engine) constructor
target | The target to call |
params | Call parameters |
st | Optional slave |
masterChan | Master channel id if slave, ignored otherwise |
|
explicit |
Constructor for utility channels used to play notifications
soundId | The id of the sound to play |
|
inline |
Check if this channel is the active one
|
inline |
Add a slave id. This method is thread safe
sid | Slave id to add |
References ObjList::append(), and ObjList::find().
|
virtual |
Notification on success of incoming call
msg | Notification call.execute message just after being dispatched |
Reimplemented from Channel.
void callAnswer | ( | bool | setActive = true | ) |
Answer an incoming call. Set media channels. Enqueue a clientchan.update message
setActive | True to activate the channel |
|
virtual |
Notification on failure of incoming call
error | Standard error keyword |
reason | Textual failure reason |
msg | Pointer to message causing the rejection, if any |
Reimplemented from Channel.
|
virtual |
Notification on progress of routing incoming call
msg | Notification call.route message just after being dispatched |
Reimplemented from Channel.
|
inline |
Retrieve channel client parameters
|
inline |
Check if this channel is in conference
|
protectedvirtual |
Connect notification method.
reason | Text that describes connect reason. |
Reimplemented from Channel.
|
protectedvirtual |
Destruct notification, performs cleanups
Reimplemented from CallEndpoint.
|
protectedvirtual |
Disconnect notification method.
final | True if this disconnect was called from the destructor. |
reason | Text that describes disconnect reason. |
Reimplemented from Channel.
void dropReconnPeer | ( | const char * | reason = 0 | ) |
Drop peer used to reconnect
|
inline |
Retrieve peer used to reconnect. This method is thread safe
buf | Destination buffer |
Referenced by ClientChannel::hasReconnPeer().
CallEndpoint* getReconnPeer | ( | bool | ref = true | ) |
Get peer used to reconnect
ref | True to return a referenced pointer |
|
inline |
Check if the peer used to reconnect is alive
References ClientChannel::getReconnPeer().
|
inline |
Check if this channel was noticed
|
inline |
Get this channel's line
void line | ( | int | newLine | ) |
Set this channel's line
newLine | This channel's line |
|
inlinestatic |
Lookup for a notification id
notif | The notification's name |
def | Default value to return if not found |
References TelEngine::lookup(), and ClientChannel::s_notification.
|
inlinestatic |
Lookup for a notification name
notif | The notification's id |
def | Default value to return if not found |
References TelEngine::lookup(), and ClientChannel::s_notification.
|
inlinestatic |
Lookup for a slave type
notif | The slave type name |
def | Default value to return if not found |
References TelEngine::lookup(), and ClientChannel::s_slaveTypes.
|
inline |
Get the master channel id if any
|
virtual |
Notification on remote answered. Note that the answered flag will be set
msg | Notification message |
Reimplemented from Channel.
|
virtual |
Notification on current call drop request
msg | Notification message |
reason | Pointer to drop reason text or NULL if none provided |
Reimplemented from Channel.
|
virtual |
Notification on remote call making some progress, not enabled by default
msg | Notification message |
Reimplemented from Channel.
|
virtual |
Notification on remote ringing
msg | Notification message |
Reimplemented from Channel.
|
inline |
Check if this channel is muted
void noticed | ( | ) |
Notice this channel. Enqueue a clientchan.update message
|
inline |
Get the remote party of this channel
|
inline |
Get the remote party name of this channel
|
inline |
Get the peer source's data format
|
inline |
Get the peer consumer's data format
|
inline |
Remove a slave id. This method is thread safe
sid | Slave id to remove |
References ObjList::remove().
bool setActive | ( | bool | active, |
bool | update = true |
||
) |
Set/reset this channel's data source/consumer
active | True to set active, false to set inactive (mute) |
update | True to enqueue an update message |
|
inline |
Set/reset the client data. If a new client data is set its reference counter is increased
obj | The new client data |
References TelEngine::destruct().
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
target | The confeernce room's name. Leave it blank to reset |
bool setMedia | ( | bool | open = false , |
bool | replace = false |
||
) |
Attach/detach media channels
open | True to open, false to close |
replace | True to replace media if already open. Ignored if open is false |
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
on | True to reset outgoing media, false to set outgoing media |
update | True to enqueue an update message |
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
target | The transferred peer's id. Leave it blank to reset |
|
inline |
Get the slave type of this channel
|
inline |
Retrieve channel slaves. This method is not thread safe
|
inline |
Retrieve channel slaves number. This method is thread safe
References ObjList::count().
Init and start router for an outgoing (to engine), not utility, channel
target | The target to call |
params | Call parameters |
|
inline |
Get the transferred peer's id
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
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 |
|
static |
Channel notifications dictionary
Referenced by ClientChannel::lookup().
|
static |
Channel notifications dictionary
Referenced by ClientChannel::lookupSlaveType().