Yate
|
An abstract communication channel. More...
#include <yatephone.h>
Public Member Functions | |
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 | msgProgress (Message &msg) |
virtual bool | msgRinging (Message &msg) |
virtual bool | msgAnswered (Message &msg) |
virtual bool | msgTone (Message &msg, const char *tone) |
virtual bool | msgText (Message &msg, const char *text) |
virtual bool | msgDrop (Message &msg, const char *reason) |
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 bool | callRouted (Message &msg) |
virtual void | callAccept (Message &msg) |
virtual void | callRejected (const char *error, const char *reason=0, const Message *msg=0) |
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 void | destroyed () |
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 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 () |
Protected Member Functions | |
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 | connected (const char *reason) |
virtual void | disconnected (bool final, const char *reason) |
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 | |
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 | Driver |
class | Router |
An abstract communication channel.
A class that holds common channel related features (a.k.a. call leg)
|
virtual |
Destructor
Alternate constructor provided for convenience
|
inline |
Get the current link address of the channel
|
static |
Allocate an unique (per engine run) call ID
|
inline |
Get the billing identifier.
|
virtual |
Notification on success of incoming call
msg | Notification call.execute message just after being dispatched |
Reimplemented in ClientChannel.
|
virtual |
Common processing after connecting the outgoing call, should be called from Driver's msgExecute()
msg | Notification call.execute message while being dispatched |
|
virtual |
Notification on progress of prerouting incoming call
msg | Notification call.preroute message just after being dispatched |
handled | True if a handler claimed having handled prerouting |
|
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 in ClientChannel.
|
virtual |
Notification on progress of routing incoming call
msg | Notification call.route message just after being dispatched |
Reimplemented in ClientChannel.
Timer check method, by default handles channel timeouts
msg | Timer message |
tmr | Current time against which timers are compared |
|
protected |
Perform destruction time cleanup. You can call this method earlier if destruction is to be postponed.
|
virtual |
Put channel variables into a message
msg | Message to fill in |
minimal | True to fill in only a minimum of parameters |
|
protectedvirtual |
Connect notification method.
reason | Text that describes connect reason. |
Reimplemented from CallEndpoint.
Reimplemented in ClientChannel.
const char* direction | ( | ) | const |
Get the direction of the channel as string
|
protectedvirtual |
Disconnect notification method.
final | True if this disconnect was called from the destructor. |
reason | Text that describes disconnect reason. |
Reimplemented from CallEndpoint.
Reimplemented in ClientChannel.
|
virtual |
Notification for dispatched messages
msg | Message that was dispatched |
handled | Result of handling the message |
Implements MessageNotifier.
|
inline |
Get the driver of this channel
|
protected |
Remove the channel from the parent driver list
|
protected |
Add sequence number to chan.dtmf and enqueue it, delete if duplicate
msg | chan.dtmf message to sequence and enqueue |
|
protected |
Attempt to install an override data source to send DTMF inband. Needs a tone generator module capable to override with "tone/dtmfstr/xyz"
tone | Pointer to the tone sequence to send |
|
protected |
Add sequence number to chan.dtmf message, check for duplicates
msg | chan.dtmf message to apply sequence number |
|
protectedvirtual |
Notification after chan.disconnected handling
msg | The chan.disconnected message |
handled | True if the message was handled |
void filterDebug | ( | const String & | item | ) |
Enable or disable debugging according to driver's filter rules
item | Value of the item to match |
|
protectedvirtual |
Create a properly populated chan.disconnect message
reason | Channel disconnect reason if available |
|
virtual |
Get a pointer to a derived class given that class name
name | Name of the class we are asking for |
Reimplemented from CallEndpoint.
void initChan | ( | ) |
Add the channel to the parent driver list This method must be called exactly once after the object is fully constructed
|
inline |
Check if the call was answered or not
|
inline |
Get the direction of the channel
|
inline |
Get the direction of the channel
|
inline |
Get the time this channel will time out on outgoing calls
|
inline |
Set the time this channel will time out on outgoing calls
tout | New timeout time or zero to disable |
|
inline |
Get the time this channel will time out while waiting for some progress on outgoing calls
|
inline |
Set the time this channel will time out while waiting for some progress on outgoing calls
tout | New timeout time or zero to disable |
Message* message | ( | const char * | name, |
bool | minimal = false , |
||
bool | data = false |
||
) |
Create a filled notification message
name | Name of the message to create |
minimal | Set to true to fill in only a minimum of parameters |
data | Set the channel as message data |
Referenced by Channel::message().
Message* message | ( | const char * | name, |
const NamedList * | original, | ||
const char * | params = 0 , |
||
bool | minimal = false , |
||
bool | data = false |
||
) |
Create a filled notification message, copy some parameters from another message
name | Name of the message to create |
original | Parameters to copy from, can be NULL |
params | Comma separated list of parameters to copy, if NULL will be taken from the "copyparams" parameter of original |
minimal | Set to true to fill in only a minimum of parameters |
data | Set the channel as message data |
|
inline |
Create a filled notification message, copy some parameters from another message
name | Name of the message to create |
original | Parameters to copy from |
params | Comma separated list of parameters to copy, if NULL will be taken from the "copyparams" parameter of original |
minimal | Set to true to fill in only a minimum of parameters |
data | Set the channel as message data |
References Channel::message().
|
virtual |
Notification on remote answered. Note that the answered flag will be set
msg | Notification message |
Reimplemented in ClientChannel.
|
virtual |
Control message handler that is invoked only for messages to this channel
msg | Control message |
|
virtual |
Notification on current call drop request
msg | Notification message |
reason | Pointer to drop reason text or NULL if none provided |
Reimplemented in ClientChannel.
|
virtual |
Notification on message masquerade as channel request
msg | Message already modified to masquerade as this channel |
|
virtual |
Notification on remote call making some progress, not enabled by default
msg | Notification message |
Reimplemented in ClientChannel.
|
virtual |
Notification on remote ringing
msg | Notification message |
Reimplemented in ClientChannel.
|
virtual |
Status message handler that is invoked only for messages to this channel
msg | Status message |
|
virtual |
Notification on remote text messaging (sms)
msg | Notification message |
text | Pointer to the received text |
|
virtual |
Notification on remote tone(s)
msg | Notification message |
tone | Pointer to the received tone(s) |
|
virtual |
Notification on native transfer request
msg | Notification message |
|
virtual |
Notification on call parameters update request
msg | Notification message |
|
inline |
Get the disconnect parameters list
|
inlineprotected |
Get the disconnect parameters list
|
static |
Get the big mutex that serializes access to all disconnect parameter lists
|
virtual |
Set the local debugging level
msg | Debug setting message |
|
protectedvirtual |
Set disconnect parameters
params | Pointer to disconnect cause parameters, NULL to reset them |
Reimplemented from CallEndpoint.
|
protectedvirtual |
Set a new ID for this channel
newId | New ID to set to this channel |
Reimplemented from CallEndpoint.
|
inline |
Set the time this channel will time out on outgoing calls
msg | Reference of message possibly holding "maxcall" parameter |
defTout | Default timeout to apply, negative to not alter |
void setMaxcall | ( | const Message * | msg, |
int | defTout = -1 |
||
) |
Set the time this channel will time out on outgoing calls
msg | Pointer to message possibly holding "maxcall" parameter |
defTout | Default timeout to apply, negative to not alter |
void setMaxPDD | ( | const Message & | msg | ) |
Set the time this channel will time out while waiting for some progress on outgoing calls
msg | Reference of message possibly holding "maxpdd" parameter |
|
inlineprotected |
Set the current direction of the channel
outgoing | True if this is an outgoing call channel |
bool startRouter | ( | Message * | msg | ) |
Start a routing thread for this channel, dereference dynamic channels
msg | Pointer to message to route, typically a "call.route", will be destroyed after routing fails or completes |
|
inline |
Get the current status of the channel
|
protected |
Set the current status of the channel. Note that a value of "answered" will set the answered flag
newstat | The new status as String |
|
protectedvirtual |
Build the parameter reporting part of the status answer
str | String variable to fill up |
|
inline |
Get the connected channel identifier.
|
inline |
Get the time this channel will time out
|
inline |
Set the time this channel will time out
tout | New timeout time or zero to disable |
|
protected |
Attempt to install a data sniffer to detect inband tones Needs a tone detector module capable of attaching sniffer consumers.
sniffer | Name of the sniffer to install, default will detect all tones |
|
protectedvirtual |
This method is overriden to safely remove the channel from the parent driver list before actually destroying the channel.
Reimplemented from RefObject.