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
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
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
Process media from remote peer. Descendents must override this method
- Parameters:
-
| transaction | IAXTransaction that owns the call leg |
| data | Media data |
| tStamp | Media timestamp |
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
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
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 transactionTimeout |
( |
|
) |
const [inline] |
Get the timeout (in seconds) of transactions belonging to this engine
- Returns:
- Timeout (in seconds) of transactions belonging to this engine
u_int16_t maxFullFrameDataLen |
( |
|
) |
const [inline] |
Get the maximum allowed frame length
- Returns:
- The maximum allowed frame length
u_int32_t format |
( |
|
) |
const [inline] |
Get the default media format
- Returns:
- The default media format
u_int32_t capability |
( |
|
) |
const [inline] |
Get the media capability of this engine
- Returns:
- The media capability of this engine
Read data from socket
- Parameters:
-
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
Removes a transaction from queue. Free the allocated local call number Does not delete it
- Parameters:
-
| transaction | Transaction to remove |
u_int32_t transactionCount |
( |
|
) |
|
Return the transactions count This method is thread safe
- Returns:
- Transactions count
Send an INVAL with call numbers set to 0 to a remote peer to keep it alive
- Parameters:
-
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
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
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 |
Remove a trunk meta frame from the queue and deref it
- Parameters:
-
| trunkFrame | The trunk meta frame to remove |
void runProcessTrunkFrames |
( |
|
) |
|
Keep calling processTrunkFrames to send trunked media data
Get the socket used for engine operation
- Returns:
- Reference to the UDP socket
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 |
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
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:
-
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
u_int16_t generateCallNo |
( |
|
) |
[protected] |
Generate call number. Update used call numbers list
- Returns:
- Call number or 0 if none available
void releaseCallNo |
( |
u_int16_t |
lcallno |
) |
[protected] |
Release a call number
- Parameters:
-
| lcallno | Call number to release |
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.
The documentation for this class was generated from the following file: