IAXEngine Class Reference
IAX engine class.
More...
#include <yateiax.h>
List of all members.
|
Public Member Functions |
| IAXEngine (const char *iface, int port, u_int16_t transListCount, u_int16_t retransCount, u_int16_t retransInterval, u_int16_t authTimeout, u_int16_t transTimeout, u_int16_t maxFullFrameDataLen, u_int32_t format, u_int32_t capab, u_int32_t trunkSendInterval, bool authRequired) |
virtual | ~IAXEngine () |
IAXTransaction * | addFrame (const SocketAddr &addr, IAXFrame *frame) |
IAXTransaction * | addFrame (const SocketAddr &addr, const unsigned char *buf, unsigned int len) |
virtual void | processMedia (IAXTransaction *transaction, DataBlock &data, u_int32_t tStamp) |
bool | process () |
u_int16_t | retransCount () const |
u_int16_t | retransInterval () const |
bool | authRequired () const |
u_int16_t | authTimeout () const |
u_int32_t | transactionTimeout () const |
u_int16_t | maxFullFrameDataLen () const |
u_int32_t | format () const |
u_int32_t | capability () const |
void | readSocket (SocketAddr &addr) |
bool | writeSocket (const void *buf, int len, const SocketAddr &addr, IAXFullFrame *frame=0) |
void | runGetEvents () |
void | removeTransaction (IAXTransaction *transaction) |
u_int32_t | transactionCount () |
void | keepAlive (SocketAddr &addr) |
virtual bool | voiceFormatChanged (IAXTransaction *trans, u_int32_t format) |
bool | acceptFormatAndCapability (IAXTransaction *trans) |
virtual void | defaultEventHandler (IAXEvent *event) |
void | enableTrunking (IAXTransaction *trans) |
void | removeTrunkFrame (IAXMetaTrunkFrame *metaFrame) |
void | runProcessTrunkFrames () |
Socket & | socket () |
Static Public Member Functions |
static void | getMD5FromChallenge (String &md5data, const String &challenge, const String &password) |
static bool | isMD5ChallengeCorrect (const String &md5data, const String &challenge, const String &password) |
Protected Member Functions |
bool | processTrunkFrames (u_int32_t time=Time::msecNow()) |
virtual void | processEvent (IAXEvent *event) |
IAXEvent * | getEvent (u_int64_t time) |
u_int16_t | generateCallNo () |
void | releaseCallNo (u_int16_t lcallno) |
IAXTransaction * | startLocalTransaction (IAXTransaction::Type type, const SocketAddr &addr, IAXIEList &ieList, bool trunking=false) |
Detailed Description
IAX engine class.
This class holds all information needded to manipulate all IAX transactions and events
Constructor & Destructor Documentation
IAXEngine |
( |
const char * |
iface, |
|
|
int |
port, |
|
|
u_int16_t |
transListCount, |
|
|
u_int16_t |
retransCount, |
|
|
u_int16_t |
retransInterval, |
|
|
u_int16_t |
authTimeout, |
|
|
u_int16_t |
transTimeout, |
|
|
u_int16_t |
maxFullFrameDataLen, |
|
|
u_int32_t |
format, |
|
|
u_int32_t |
capab, |
|
|
u_int32_t |
trunkSendInterval, |
|
|
bool |
authRequired | |
|
) |
| | |
Constructor
- Parameters:
-
| iface | Address of the interface to use, default all (0.0.0.0) |
| port | UDP port to run the protocol on |
| transListCount | Number of entries in the transaction hash table |
| retransCount | Retransmission counter for each transaction belonging to this engine |
| retransInterval | Retransmission interval default value in miliseconds |
| authTimeout | Timeout (in seconds) of acknoledged auth frames sent |
| transTimeout | Timeout (in seconds) on remote request of transactions belonging to this engine |
| maxFullFrameDataLen | Max full frame IE list (buffer) length |
| format | Default media format |
| capab | Media capabilities of this engine |
| trunkSendInterval | Send trunk meta frame interval |
| authRequired | Automatically challenge all clients for authentication |
Destructor Closes all transactions belonging to this engine and flush all queues
Member Function Documentation
Process the initial received format and capability. If accepted on exit will set the transaction format and capability
- Parameters:
-
| trans | Transaction that received the new format |
- Returns:
- True if accepted
Add a raw frame to the transaction list
- Parameters:
-
| addr | Address from which the message was received |
| buf | Pointer to the start of the buffer holding the IAX frame |
| len | Length of the message buffer |
- Returns:
- Pointer to the transaction or 0
Add a parsed frame to the transaction list
- Parameters:
-
| addr | Address from which the frame was received |
| frame | A parsed IAX frame |
- Returns:
- Pointer to the transaction or 0 to deref the frame
bool authRequired |
( |
|
) |
const [inline] |
Check if a transaction should automatically request authentication
- Returns:
- True to automatically request authentication
u_int16_t authTimeout |
( |
|
) |
const [inline] |
Get the timeout (in seconds) of acknoledged auth frames sent
- Returns:
- Auth timeout in seconds
u_int32_t capability |
( |
|
) |
const [inline] |
Get the media capability of this engine
- Returns:
- The media capability of this engine
virtual void defaultEventHandler |
( |
IAXEvent * |
event |
) |
[virtual] |
Default event handler. event MUST NOT be deleted
- Parameters:
-
| event | The event to handle |
Enable trunking for the given transaction. Allocate a trunk meta frame if needded
- Parameters:
-
| trans | Transaction to enable trunking for |
u_int32_t format |
( |
|
) |
const [inline] |
Get the default media format
- Returns:
- The default media format
u_int16_t generateCallNo |
( |
|
) |
[protected] |
Generate call number. Update used call numbers list
- Returns:
- Call number or 0 if none available
IAXEvent* getEvent |
( |
u_int64_t |
time |
) |
[protected] |
Get an IAX event from the queue. This method is thread safe.
- Parameters:
-
- Returns:
- Pointer to an IAXEvent or 0 if none is available
static void getMD5FromChallenge |
( |
String & |
md5data, |
|
|
const String & |
challenge, |
|
|
const String & |
password | |
|
) |
| | [static] |
Get the MD5 data from a challenge and a password
- Parameters:
-
| md5data | Destination String |
| challenge | Challenge source |
| password | Password source |
static bool isMD5ChallengeCorrect |
( |
const String & |
md5data, |
|
|
const String & |
challenge, |
|
|
const String & |
password | |
|
) |
| | [static] |
Test if a received response to an authentication request is correct
- Parameters:
-
| md5data | Data to compare with |
| challenge | Received challenge |
| password | Password source |
Send an INVAL with call numbers set to 0 to a remote peer to keep it alive
- Parameters:
-
u_int16_t maxFullFrameDataLen |
( |
|
) |
const [inline] |
Get the maximum allowed frame length
- Returns:
- The maximum allowed frame length
Event processor method. Keeps calling getEvent() and passing any events to processEvent() until there are no more events
- Returns:
- True if at least one event was processed
virtual void processEvent |
( |
IAXEvent * |
event |
) |
[protected, virtual] |
Default event for connection transactions handler. This method may be overriden to perform custom processing This method is thread safe
- Parameters:
-
Process media from remote peer. Descendents must override this method
- Parameters:
-
| transaction | IAXTransaction that owns the call leg |
| data | Media data |
| tStamp | Media timestamp |
bool processTrunkFrames |
( |
u_int32_t |
time = Time::msecNow() |
) |
[protected] |
Process all trunk meta frames in the queue
- Parameters:
-
- Returns:
- True if at least one frame was sent
Read data from socket
- Parameters:
-
void releaseCallNo |
( |
u_int16_t |
lcallno |
) |
[protected] |
Release a call number
- Parameters:
-
| lcallno | Call number to release |
Removes a transaction from queue. Free the allocated local call number Does not delete it
- Parameters:
-
| transaction | Transaction to remove |
Remove a trunk meta frame from the queue and deref it
- Parameters:
-
| trunkFrame | The trunk meta frame to remove |
u_int16_t retransCount |
( |
|
) |
const [inline] |
Get default frame retransmission counter
- Returns:
- Frame retransmission counter
u_int16_t retransInterval |
( |
|
) |
const [inline] |
Get default frame retransmission starting interval
- Returns:
- Frame retransmission starting interval
void runProcessTrunkFrames |
( |
|
) |
|
Keep calling processTrunkFrames to send trunked media data
Get the socket used for engine operation
- Returns:
- Reference to the UDP socket
Start a transaction based on a local request
- Parameters:
-
| type | Transaction type |
| addr | Remote address to send the request |
| ieList | First frame IE list |
| trunking | Enable/disable trunking for this transaction |
- Returns:
- IAXTransaction pointer on success.
u_int32_t transactionCount |
( |
|
) |
|
Return the transactions count This method is thread safe
- Returns:
- Transactions count
u_int32_t transactionTimeout |
( |
|
) |
const [inline] |
Get the timeout (in seconds) of transactions belonging to this engine
- Returns:
- Timeout (in seconds) of transactions belonging to this engine
virtual bool voiceFormatChanged |
( |
IAXTransaction * |
trans, |
|
|
u_int32_t |
format | |
|
) |
| | [inline, virtual] |
Process a new format received with a Voice frame
- Parameters:
-
| trans | Transaction that received the new format |
| format | The received format |
- Returns:
- True if accepted
Write data to socket.
- Parameters:
-
| buf | Data to write |
| len | Data length |
| addr | Socket to write to |
| frame | Optional frame to be printed if debug is DebugAll |
- Returns:
- True on success
The documentation for this class was generated from the following file: