Bayonne
|
Generic Bayonne master class to reference various useful data types and core static members used for locating resources found in libbayonne. More...
#include <bayonne.h>
Classes | |
struct | Event |
The event data structure includes the event identifier and any paramaters. More... | |
struct | libaudio_t |
struct | regauth_t |
struct | State |
The primary state data structure. More... | |
struct | statetab |
A list of each state and a description. More... | |
class | Traffic |
This is a class used for collecting statistics for call traffic measurement, such as might be used by MRTG. More... | |
Public Types | |
enum | interface_t { IF_PSTN, IF_SPAN, IF_ISDN, IF_SS7, IF_INET, IF_NONE, IF_POTS = IF_PSTN } |
Telephony endpoint interface identifiers. More... | |
enum | calltype_t { NONE, INCOMING, OUTGOING, PICKUP, FORWARDED, RECALL, DIRECT, RINGING, VIRTUAL } |
Type of call session being processed. More... | |
enum | bridge_t { BR_TDM, BR_INET, BR_SOFT, BR_GATE, BR_NONE } |
Type of bridge used for joining ports. More... | |
enum | state_t { STATE_INITIAL = 0, STATE_IDLE, STATE_RESET, STATE_RELEASE, STATE_BUSY, STATE_DOWN, STATE_RING, STATE_PICKUP, STATE_SEIZE, STATE_STEP, STATE_EXEC, STATE_THREAD, STATE_CLEAR, STATE_INKEY, STATE_INPUT, STATE_READ, STATE_COLLECT, STATE_DIAL, STATE_XFER, STATE_HOLD, STATE_RECALL, STATE_TONE, STATE_DTMF, STATE_PLAY, STATE_RECORD, STATE_JOIN, STATE_WAIT, STATE_CONNECT, STATE_HUNTING, STATE_SLEEP, STATE_START, STATE_HANGUP, STATE_LIBRESET, STATE_WAITKEY, STATE_LIBWAIT, STATE_IRESET, STATE_FINAL, STATE_STANDBY = STATE_DOWN, STATE_LIBEXEC = STATE_EXEC, STATE_RINGING = STATE_RING, STATE_RUNNING = STATE_STEP, STATE_THREADING = STATE_THREAD } |
Call processing states offered in core library. More... | |
enum | signal_t { SIGNAL_EXIT = 0, SIGNAL_ERROR, SIGNAL_TIMEOUT, SIGNAL_DTMF, SIGNAL_0, SIGNAL_1, SIGNAL_2, SIGNAL_3, SIGNAL_4, SIGNAL_5, SIGNAL_6, SIGNAL_7, SIGNAL_8, SIGNAL_9, SIGNAL_STAR, SIGNAL_POUND, SIGNAL_A, SIGNAL_OVERRIDE = SIGNAL_A, SIGNAL_B, SIGNAL_FLASH = SIGNAL_B, SIGNAL_C, SIGNAL_IMMEDIATE = SIGNAL_C, SIGNAL_D, SIGNAL_PRIORITY = SIGNAL_D, SIGNAL_RING, SIGNAL_TONE, SIGNAL_EVENT, SIGNAL_WINK, SIGNAL_CHILD, SIGNAL_FAIL, SIGNAL_PICKUP, SIGNAL_PART, SIGNAL_INVALID, SIGNAL_PARENT, SIGNAL_WAIT, SIGNAL_HANGUP = SIGNAL_EXIT } |
Signaled interpreter events. More... | |
enum | event_t { MSGPORT_WAKEUP = 0, MSGPORT_SHUTDOWN, MSGPORT_LOGGING, MSGPORT_REGISTER, ENTER_STATE = 100, EXIT_STATE, EXIT_THREAD, EXIT_TIMER, EXIT_PARTING, NULL_EVENT, ERROR_STATE, ENTER_HUNTING, EXIT_HUNTING, START_DIRECT = 200, START_INCOMING, START_OUTGOING, START_RECALL, START_FORWARDED, START_RINGING, START_HUNTING, STOP_SCRIPT, STOP_DISCONNECT, STOP_PARENT, CANCEL_CHILD, DETACH_CHILD, CHILD_RUNNING, CHILD_FAILED, CHILD_INVALID, CHILD_EXPIRED, CHILD_BUSY, CHILD_FAX, CHILD_DND, CHILD_AWAY, CHILD_NOCODEC, CHILD_OFFLINE, START_SCRIPT = START_INCOMING, START_SELECTED = START_OUTGOING, ENTER_LIBEXEC = 300, EXIT_LIBEXEC, HEAD_LIBEXEC, ARGS_LIBEXEC, GOT_LIBEXEC, READ_LIBEXEC, DROP_LIBEXEC, STAT_LIBEXEC, PROMPT_LIBEXEC, CLEAR_LIBEXEC, WAIT_LIBEXEC, RECORD_LIBEXEC, REPLAY_LIBEXEC, RESTART_LIBEXEC, TONE_LIBEXEC, XFER_LIBEXEC, POST_LIBEXEC, ERROR_LIBEXEC, TIMER_EXPIRED = 400, LINE_WINK, LINE_PICKUP, LINE_HANGUP, LINE_DISCONNECT, LINE_ON_HOOK, LINE_OFF_HOOK, RING_ON, RING_OFF, RING_STOP, LINE_CALLER_ID, RINGING_DID, DEVICE_BLOCKED, DEVICE_UNBLOCKED, DEVICE_OPEN, DEVICE_CLOSE, DSP_READY, CALL_DETECT = 500, CALL_CONNECTED, CALL_RELEASED, CALL_ACCEPTED, CALL_ANSWERED, CALL_HOLD, CALL_HOLDING = CALL_HOLD, CALL_NOHOLD, CALL_DIGITS, CALL_OFFERED, CALL_ANI, CALL_ACTIVE, CALL_NOACTIVE, CALL_BILLING, CALL_RESTART, CALL_SETSTATE, CALL_FAILURE, CALL_ALERTING, CALL_INFO, CALL_BUSY, CALL_DIVERT, CALL_FACILITY, CALL_FRAME, CALL_NOTIFY, CALL_NSI, CALL_RINGING, CALL_DISCONNECT, CALL_CLEARED, CALL_PROCEEDING, RESTART_FAILED, RELEASE_FAILED, START_RING = 600, STOP_RING, CLEAR_TIMESLOT, START_FLASH, STOP_FLASH, DIAL_CONNECT, DIAL_TIMEOUT, DIAL_FAILED, DIAL_INVALID, DIAL_BUSY, DIAL_FAX, DIAL_PAM, DIAL_DND, DIAL_AWAY, DIAL_OFFLINE, DIAL_NOCODEC, DIAL_MACHINE = DIAL_PAM, AUDIO_IDLE = 700, AUDIO_ACTIVE, AUDIO_EXPIRED, INPUT_PENDING, OUTPUT_PENDING, AUDIO_BUFFER, TONE_IDLE, DTMF_KEYDOWN, DTMF_KEYSYNC, DTMF_KEYUP, TONE_START, TONE_STOP, AUDIO_START, AUDIO_STOP, DTMF_GENDOWN, DTMF_GENUP, AUDIO_SYNC, AUDIO_RECONNECT, AUDIO_DISCONNECT, PEER_RECONNECT, PEER_DISCONNECT, DTMF_GENTONE = DTMF_GENUP, MAKE_TEST = 800, MAKE_BUSY, MAKE_IDLE, MAKE_DOWN, MAKE_UP, MAKE_EXPIRED, ENABLE_LOGGING, DISABLE_LOGGING, PART_EXPIRED, PART_EXITING, PART_DISCONNECT, JOIN_PEER, PEER_WAITING, RELOCATE_REQUEST, RELOCATE_ACCEPT, RELOCATE_REJECT, START_RELOCATE, SYSTEM_DOWN = 900, DRIVER_SPECIFIC = 1000 } |
Primary event identifiers. More... | |
enum | result_t { RESULT_SUCCESS = 0, RESULT_TIMEOUT, RESULT_INVALID, RESULT_PENDING, RESULT_COMPLETE, RESULT_FAILED, RESULT_BADPATH = 254, RESULT_OFFLINE = 255 } |
typedef uint16_t | timeslot_t |
typedef bool(BayonneSession::* | Handler )(Event *event) |
The current state handler in effect for a given channel to receive events. | |
Public Member Functions | |
void | md5_hash (char *out, const char *source) |
Compute md5 hashes... | |
Static Public Member Functions | |
static void | allocate (timeslot_t timeslots, ScriptCommand *pointer=NULL, timeslot_t overdraft=0) |
Allocates the maximum number of timeslots the server will use as a whole and attaches a given server to the library. | |
static void | allocateLocal (void) |
Allocate local script engine sessions, if needed. | |
static void | waitLoaded (void) |
Wait for live flag... | |
static unsigned long | uptime (void) |
Get server uptime. | |
static ScriptCompiler * | reload (void) |
Request active scripts to be recompiled from the library. | |
static void | down (void) |
Used to down the server from the library. | |
static bool | service (const char *service) |
Sets server service level from the library. | |
static BayonneSession * | getSession (timeslot_t timeslot) |
Returns a session pointer for a server timeslot. | |
static ScriptImage ** | getLocalImage (timeslot_t timeslot) |
Returns a local image pointer for a server timeslot. | |
static BayonneSession * | startDialing (const char *dial, const char *name, const char *caller, const char *display, BayonneSession *parent=NULL) |
Start a dialing session. | |
static BayonneSession * | getSid (const char *id) |
Returns a session pointer for a string identifier. | |
static timeslot_t | toTimeslot (const char *id) |
Returns a server timeslot number for a string identifier. | |
static timeslot_t | getTimeslotsUsed (void) |
Return total library timeslots used (highest used). | |
static timeslot_t | getTimeslotCount (void) |
Return total timeslots allocated for the server. | |
static timeslot_t | getAvailTimeslots (void) |
Return remaining timeslots available to allocate driver ports into. | |
static Handler | getState (const char *name) |
Map a state name into a handler. | |
static int | getDigit (char dtmf) |
Convert a dtmf character into a 0-15 number reference. | |
static char | getChar (int dtmf) |
Convert a dtmf digit number into it's ascii code. | |
static bool | matchDigits (const char *digits, const char *match, bool partial=false) |
A function to support pattern matching and templates for digit strings. | |
static ScriptImage * | useImage (void) |
Use the current compiled script image; mark as in use. | |
static void | endImage (ScriptImage *image) |
Release a script image in use. | |
static bool | loadPlugin (const char *path) |
Load a plugin module. | |
static bool | loadMonitor (const char *path) |
Load a monitoring/management module. | |
static bool | loadAudio (const char *path) |
Load a bgm/audio processing module for continues audio. | |
static void | errlog (const char *level, const char *fmt,...) |
static bool | getUserdata (void) |
Static Public Attributes | |
static timeout_t | step_timer |
static timeout_t | reset_timer |
static timeout_t | exec_timer |
static unsigned | compile_count |
static volatile bool | image_loaded |
static BayonneTranslator * | init_translator |
static const char * | init_voicelib |
static AtomicCounter | libexec_count |
static statetab | states [] |
Table of states ordered by id. | |
static Mutex | serialize |
A mutex to serialize any direct console I/O operations. | |
static ThreadLock | reloading |
A mutex to serialize reload requests. | |
static Traffic | total_call_attempts |
master traffic counters for call attempts and call completions. | |
static Traffic | total_call_complete |
static volatile unsigned short | total_active_calls |
Static Protected Attributes | |
static BayonneSession ** | timeslots |
static ScriptImage ** | localimages |
static char * | status |
static ScriptCommand * | server |
static timeslot_t | ts_limit |
static timeslot_t | ts_count |
static timeslot_t | ts_used |
static std::ostream * | logging |
static const char * | path_prompts |
static const char * | path_tmpfs |
static const char * | path_tmp |
static unsigned | idle_count |
static unsigned | idle_limit |
static bool | shutdown_flag |
static char | sla [] |
static time_t | start_time |
Generic Bayonne master class to reference various useful data types and core static members used for locating resources found in libbayonne.
typedef bool(BayonneSession::* ost::Bayonne::Handler)(Event *event) |
The current state handler in effect for a given channel to receive events.
This is done by a direct method pointer for fast processing.
typedef uint16_t ost::Bayonne::timeslot_t |
Primary event identifiers.
These are the events that can be passed into the Bayonne state machine. They are broken into categories.
Signaled interpreter events.
These can be masked and accessed through ^xxx handlers in the scripting language.
Call processing states offered in core library.
This list must be ordered to match the entries in the state table (statetab).
static void ost::Bayonne::allocate | ( | timeslot_t | timeslots, |
ScriptCommand * | pointer = NULL , |
||
timeslot_t | overdraft = 0 |
||
) | [static] |
Allocates the maximum number of timeslots the server will use as a whole and attaches a given server to the library.
timeslots | to allocate. |
pointer | to server shell. |
static void ost::Bayonne::allocateLocal | ( | void | ) | [static] |
Allocate local script engine sessions, if needed.
static void ost::Bayonne::down | ( | void | ) | [static] |
Used to down the server from the library.
static void ost::Bayonne::endImage | ( | ScriptImage * | image | ) | [static] |
Release a script image in use.
If no active calls are using it and it's no longer the top active image, purge from memory.
image | to compiled script from useImage. |
static void ost::Bayonne::errlog | ( | const char * | level, |
const char * | fmt, | ||
... | |||
) | [static] |
static timeslot_t ost::Bayonne::getAvailTimeslots | ( | void | ) | [inline, static] |
Return remaining timeslots available to allocate driver ports into.
static char ost::Bayonne::getChar | ( | int | dtmf | ) | [static] |
Convert a dtmf digit number into it's ascii code.
dtmf | digit number. |
static int ost::Bayonne::getDigit | ( | char | dtmf | ) | [static] |
Convert a dtmf character into a 0-15 number reference.
dtmf | digit as ascii |
static ScriptImage** ost::Bayonne::getLocalImage | ( | timeslot_t | timeslot | ) | [static] |
Returns a local image pointer for a server timeslot.
timeslot | number in server. |
static BayonneSession* ost::Bayonne::getSession | ( | timeslot_t | timeslot | ) | [static] |
Returns a session pointer for a server timeslot.
Each server timeslot can map to a single session object.
timeslot | number in server. |
static BayonneSession* ost::Bayonne::getSid | ( | const char * | id | ) | [static] |
Returns a session pointer for a string identifier.
This can be for a transaction id, a call id, or other unique identifiers which can be mapped into a single timeslot.
id | session identifier string. |
static Handler ost::Bayonne::getState | ( | const char * | name | ) | [static] |
Map a state name into a handler.
Used for logging requests. Uses the statetab.
name | of state to lookup. |
static timeslot_t ost::Bayonne::getTimeslotCount | ( | void | ) | [inline, static] |
Return total timeslots allocated for the server.
static timeslot_t ost::Bayonne::getTimeslotsUsed | ( | void | ) | [inline, static] |
Return total library timeslots used (highest used).
static bool ost::Bayonne::getUserdata | ( | void | ) | [static] |
static bool ost::Bayonne::loadAudio | ( | const char * | path | ) | [static] |
Load a bgm/audio processing module for continues audio.
path | id of plugin. |
static bool ost::Bayonne::loadMonitor | ( | const char * | path | ) | [static] |
Load a monitoring/management module.
path | id of plugin. |
static bool ost::Bayonne::loadPlugin | ( | const char * | path | ) | [static] |
Load a plugin module.
path | id of plugin. |
static bool ost::Bayonne::matchDigits | ( | const char * | digits, |
const char * | match, | ||
bool | partial = false |
||
) | [static] |
A function to support pattern matching and templates for digit strings.
This is used for digit @xxx:... entries and the route command.
digits | to use. |
match | digit pattern to match against. |
partial | accept match if true. |
void ost::Bayonne::md5_hash | ( | char * | out, |
const char * | source | ||
) |
Compute md5 hashes...
md5 | output string |
string | to hash |
static ScriptCompiler* ost::Bayonne::reload | ( | void | ) | [static] |
Request active scripts to be recompiled from the library.
Reimplemented in ost::BayonneDriver.
static bool ost::Bayonne::service | ( | const char * | service | ) | [static] |
Sets server service level from the library.
service | level or NULL to clear. |
static BayonneSession* ost::Bayonne::startDialing | ( | const char * | dial, |
const char * | name, | ||
const char * | caller, | ||
const char * | display, | ||
BayonneSession * | parent = NULL |
||
) | [static] |
Start a dialing session.
WARNING: this function leaves the channel locked so it can be examined by the returning task.
dialing | string or uri. |
script | to run or start. |
caller | id for this call. |
display | name for this call. |
parent | to join to. |
static timeslot_t ost::Bayonne::toTimeslot | ( | const char * | id | ) | [static] |
Returns a server timeslot number for a string identifier.
id | for a session. |
static unsigned long ost::Bayonne::uptime | ( | void | ) | [static] |
Get server uptime.
static ScriptImage* ost::Bayonne::useImage | ( | void | ) | [static] |
Use the current compiled script image; mark as in use.
static void ost::Bayonne::waitLoaded | ( | void | ) | [static] |
Wait for live flag...
unsigned ost::Bayonne::compile_count [static] |
timeout_t ost::Bayonne::exec_timer [static] |
unsigned ost::Bayonne::idle_count [static, protected] |
unsigned ost::Bayonne::idle_limit [static, protected] |
volatile bool ost::Bayonne::image_loaded [static] |
const char* ost::Bayonne::init_voicelib [static] |
AtomicCounter ost::Bayonne::libexec_count [static] |
ScriptImage** ost::Bayonne::localimages [static, protected] |
std::ostream* ost::Bayonne::logging [static, protected] |
const char* ost::Bayonne::path_prompts [static, protected] |
const char* ost::Bayonne::path_tmp [static, protected] |
const char* ost::Bayonne::path_tmpfs [static, protected] |
ThreadLock ost::Bayonne::reloading [static] |
A mutex to serialize reload requests.
timeout_t ost::Bayonne::reset_timer [static] |
Reimplemented in ost::BayonneDriver.
Mutex ost::Bayonne::serialize [static] |
A mutex to serialize any direct console I/O operations.
Sometimes used to serialize other kinds of time insensitive requests.
ScriptCommand* ost::Bayonne::server [static, protected] |
bool ost::Bayonne::shutdown_flag [static, protected] |
char ost::Bayonne::sla[] [static, protected] |
time_t ost::Bayonne::start_time [static, protected] |
statetab ost::Bayonne::states[] [static] |
Table of states ordered by id.
char* ost::Bayonne::status [static, protected] |
timeout_t ost::Bayonne::step_timer [static] |
BayonneSession** ost::Bayonne::timeslots [static, protected] |
volatile unsigned short ost::Bayonne::total_active_calls [static] |
Traffic ost::Bayonne::total_call_attempts [static] |
master traffic counters for call attempts and call completions.
Traffic ost::Bayonne::total_call_complete [static] |
timeslot_t ost::Bayonne::ts_count [static, protected] |
timeslot_t ost::Bayonne::ts_limit [static, protected] |
timeslot_t ost::Bayonne::ts_used [static, protected] |