Bayonne
|
Container class for applications implimenting the libexec process method of Bayonne interfacing. More...
#include <libexec.h>
Public Member Functions | |
Libexec () | |
Initialize libexec. More... | |
const char * | getEnv (const char *id) |
Get a header record item. More... | |
const char * | getArg (const char *id) |
Get a named libexec command line argument. More... | |
const char * | getPath (const char *filename, char *buffer, unsigned size) |
Get a fully qualified and resolved pathname. More... | |
const char * | getFile (const char *filename) |
Get and verify partial pathname for file oriented libexec commands. More... | |
void | setVoice (const char *voice) |
Set the effective voice library to use. More... | |
void | setLevel (Audio::Level level) |
Set the effective audio level for tones... More... | |
void | hangupSession (void) |
Hangup running session... More... | |
void | detachSession (unsigned code) |
Resume server session, libexec continues detached. More... | |
result_t | sendCommand (const char *text, char *buffer=NULL, unsigned size=0) |
Send a command through to server and capture result. More... | |
result_t | sendResult (const char *text) |
Send a result to the server. More... | |
void | sendError (const char *msg) |
Send an error to the server. More... | |
result_t | xferCall (const char *dest) |
Transfer a call. More... | |
result_t | replayFile (const char *file) |
Replay an audio file. More... | |
result_t | replayOffset (const char *file, const char *offset) |
Replay an audio file from a specified offset. More... | |
result_t | recordFile (const char *file, timeout_t duration, timeout_t silence=0) |
Record an audio file. More... | |
result_t | speak (const char *format,...) |
Play a phrase. More... | |
result_t | playTone (const char *name, timeout_t duration=0, unsigned level=0) |
Play a tone. More... | |
result_t | playSingleTone (short f1, timeout_t duration, unsigned level=0) |
result_t | playDualTone (short f1, short f2, timeout_t duration, unsigned level=0) |
result_t | recordOffset (const char *file, const char *offset, timeout_t duration, timeout_t silence=0) |
Record an audio file to a specified offset. More... | |
result_t | eraseFile (const char *file) |
Erase an audio file. More... | |
result_t | moveFile (const char *file1, const char *file2) |
Move an audio file. More... | |
result_t | clearInput (void) |
Flush input. More... | |
bool | waitInput (timeout_t timeout) |
Wait for input. More... | |
result_t | readInput (char *buffer, unsigned size, timeout_t timeout) |
Read a line of input. More... | |
char | readKey (timeout_t timeout) |
Read a single key of input. More... | |
result_t | sizeSym (const char *id, unsigned size) |
result_t | addSym (const char *id, const char *value) |
result_t | setSym (const char *id, const char *value) |
result_t | getSym (const char *id, char *buf, unsigned size) |
void | postSym (const char *id, const char *value) |
Post a symbol asychrononous event to server. More... | |
![]() | |
void | md5_hash (char *out, const char *source) |
Compute md5 hashes... More... | |
Public Attributes | |
result_t | result |
char | digits [64] |
char | query [512] |
char | position [32] |
unsigned | exitcode |
unsigned | reply |
Protected Attributes | |
Keydata | head |
Keydata | args |
const char * | tsid |
const char * | voice |
Audio::Level | level |
Additional Inherited Members | |
![]() | |
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_ANSWER, STATE_STEP, STATE_EXEC, STATE_THREAD, STATE_CLEAR, STATE_INKEY, STATE_INPUT, STATE_READ, STATE_COLLECT, STATE_DIAL, STATE_XFER, STATE_REFER, STATE_HOLD, STATE_RECALL, STATE_TONE, STATE_DTMF, STATE_PLAY, STATE_RECORD, STATE_JOIN, STATE_WAIT, STATE_CALLING, STATE_CONNECT, STATE_RECONNECT, STATE_HUNTING, STATE_SLEEP, STATE_START, STATE_HANGUP, STATE_LIBRESET, STATE_WAITKEY, STATE_LIBWAIT, STATE_IRESET, STATE_FINAL, STATE_SUSPEND = STATE_DOWN, 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, ENTER_RECONNECT, EXIT_RECONNECT, RECALL_RECONNECT, EXIT_SCRIPT, STEP_SCRIPT, START_DIRECT = 200, START_INCOMING, START_OUTGOING, START_RECALL, START_FORWARDED, START_RINGING, START_HUNTING, START_REFER, 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, START_TRANSFER = START_REFER, 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, RING_SYNC, 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, PEER_REFER, 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, STREAM_ACTIVE, STREAM_PASSIVE, JOIN_RECALL, DROP_RECALL, DROP_REFER, ENTER_RESUME = MAKE_UP, ENTER_SUSPEND = MAKE_DOWN, 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 int32_t | rpcint_t |
typedef rpcint_t | rpcbool_t |
typedef void(* | rpcmethod_t )(BayonneRPC *rpc) |
A rpc method handler. More... | |
typedef bool(BayonneSession::* | Handler )(Event *event) |
The current state handler in effect for a given channel to receive events. More... | |
![]() | |
static void | snmptrap (unsigned id, const char *descr=NULL) |
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. More... | |
static const char * | getRegistryId (const char *id) |
static BayonneDriver * | getDriverTag (const char *id) |
static Audio::Encoding | getEncoding (const char *cp) |
static void | allocateLocal (void) |
Allocate local script engine sessions, if needed. More... | |
static void | addConfig (const char *cfgfile) |
Add config file entry. More... | |
static void | waitLoaded (void) |
Wait for live flag... More... | |
static unsigned long | uptime (void) |
Get server uptime. More... | |
static ScriptCompiler * | reload (void) |
Request active scripts to be recompiled from the library. More... | |
static void | down (void) |
Used to down the server from the library. More... | |
static bool | service (const char *service) |
Sets server service level from the library. More... | |
static const char * | getRunLevel (void) |
Get service level. More... | |
static BayonneSession * | getSession (timeslot_t timeslot) |
Returns a session pointer for a server timeslot. More... | |
static ScriptImage ** | getLocalImage (timeslot_t timeslot) |
Returns a local image pointer for a server timeslot. More... | |
static BayonneSession * | startDialing (const char *dial, const char *name, const char *caller, const char *display, BayonneSession *parent=NULL, const char *manager=NULL, const char *secret=NULL) |
Start a dialing session. More... | |
static BayonneSession * | getSid (const char *id) |
Returns a session pointer for a string identifier. More... | |
static timeslot_t | toTimeslot (const char *id) |
Returns a server timeslot number for a string identifier. More... | |
static timeslot_t | getTimeslotsUsed (void) |
Return total library timeslots used (highest used). More... | |
static timeslot_t | getTimeslotCount (void) |
Return total timeslots allocated for the server. More... | |
static timeslot_t | getAvailTimeslots (void) |
Return remaining timeslots available to allocate driver ports into. More... | |
static Handler | getState (const char *name) |
Map a state name into a handler. More... | |
static int | getDigit (char dtmf) |
Convert a dtmf character into a 0-15 number reference. More... | |
static char | getChar (int dtmf) |
Convert a dtmf digit number into it's ascii code. More... | |
static bool | matchDigits (const char *digits, const char *match, bool partial=false) |
A function to support pattern matching and templates for digit strings. More... | |
static ScriptImage * | useImage (void) |
Use the current compiled script image; mark as in use. More... | |
static void | endImage (ScriptImage *image) |
Release a script image in use. More... | |
static bool | loadPlugin (const char *path) |
Load a plugin module. More... | |
static bool | loadMonitor (const char *path) |
Load a monitoring/management module. More... | |
static bool | loadAudio (const char *path) |
Load a bgm/audio processing module for continues audio. More... | |
static void | errlog (const char *level, const char *fmt,...) |
static bool | getUserdata (void) |
static void | addTrap4 (const char *addr) |
![]() | |
static char | dtmf_keymap [256] |
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 const char * | trap_community |
static AtomicCounter | libexec_count |
static statetab | states [] |
Table of states ordered by id. More... | |
static Mutex | serialize |
A mutex to serialize any direct console I/O operations. More... | |
static ThreadLock | reloading |
A mutex to serialize reload requests. More... | |
static Traffic | total_call_attempts |
master traffic counters for call attempts and call completions. More... | |
static Traffic | total_call_complete |
static volatile unsigned short | total_active_calls |
![]() | |
static BayonneSession ** | timeslots |
static ScriptImage ** | localimages |
static char * | status |
static ScriptCommand * | server |
static unsigned | ts_trk |
static unsigned | ts_ext |
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 [64] |
static time_t | start_time |
static time_t | reload_time |
Container class for applications implimenting the libexec process method of Bayonne interfacing.
This is intended for writing external apps and is neatly tucked away into libbayonne as well.
ost::Libexec::Libexec | ( | ) |
Initialize libexec.
result_t ost::Libexec::addSym | ( | const char * | id, |
const char * | value | ||
) |
result_t ost::Libexec::clearInput | ( | void | ) |
Flush input.
void ost::Libexec::detachSession | ( | unsigned | code | ) |
Resume server session, libexec continues detached.
result_t ost::Libexec::eraseFile | ( | const char * | file | ) |
Erase an audio file.
name | of file to erase. |
const char* ost::Libexec::getArg | ( | const char * | id | ) |
Get a named libexec command line argument.
id | of libexec argument. |
const char* ost::Libexec::getEnv | ( | const char * | id | ) |
Get a header record item.
id | of header or sys env item. |
const char* ost::Libexec::getFile | ( | const char * | filename | ) |
Get and verify partial pathname for file oriented libexec commands.
filename | path to evaluate. |
const char* ost::Libexec::getPath | ( | const char * | filename, |
char * | buffer, | ||
unsigned | size | ||
) |
Get a fully qualified and resolved pathname.
filename | path to evaluate. |
buffer | to save into. |
size | of buffer. |
result_t ost::Libexec::getSym | ( | const char * | id, |
char * | buf, | ||
unsigned | size | ||
) |
void ost::Libexec::hangupSession | ( | void | ) |
Hangup running session...
result_t ost::Libexec::moveFile | ( | const char * | file1, |
const char * | file2 | ||
) |
Move an audio file.
name | of file to move. |
destination | of move. |
result_t ost::Libexec::playDualTone | ( | short | f1, |
short | f2, | ||
timeout_t | duration, | ||
unsigned | level = 0 |
||
) |
result_t ost::Libexec::playSingleTone | ( | short | f1, |
timeout_t | duration, | ||
unsigned | level = 0 |
||
) |
result_t ost::Libexec::playTone | ( | const char * | name, |
timeout_t | duration = 0 , |
||
unsigned | level = 0 |
||
) |
Play a tone.
name | of tone to play. |
duration | for tone. |
audio | level of tone. |
void ost::Libexec::postSym | ( | const char * | id, |
const char * | value | ||
) |
Post a symbol asychrononous event to server.
This sets the symbol value, and also generates a :symname event.
id | of symbol to post. |
value | of symbol. |
result_t ost::Libexec::readInput | ( | char * | buffer, |
unsigned | size, | ||
timeout_t | timeout | ||
) |
Read a line of input.
input | buffer. |
size | of input buffer. |
timeout | for input. |
char ost::Libexec::readKey | ( | timeout_t | timeout | ) |
Read a single key of input.
timeout | for read. |
result_t ost::Libexec::recordFile | ( | const char * | file, |
timeout_t | duration, | ||
timeout_t | silence = 0 |
||
) |
Record an audio file.
name | of file to record. |
total | duration of file. |
optional | silence detect. |
result_t ost::Libexec::recordOffset | ( | const char * | file, |
const char * | offset, | ||
timeout_t | duration, | ||
timeout_t | silence = 0 |
||
) |
Record an audio file to a specified offset.
name | of file to record. |
offset | to record info. |
total | duration of file. |
optional | silence detect. |
result_t ost::Libexec::replayFile | ( | const char * | file | ) |
Replay an audio file.
name | of file to play. |
result_t ost::Libexec::replayOffset | ( | const char * | file, |
const char * | offset | ||
) |
Replay an audio file from a specified offset.
name | of file to play. |
offset | to play from. |
result_t ost::Libexec::sendCommand | ( | const char * | text, |
char * | buffer = NULL , |
||
unsigned | size = 0 |
||
) |
Send a command through to server and capture result.
command | to send. |
optional | query buffer. |
optional | query size. |
void ost::Libexec::sendError | ( | const char * | msg | ) |
Send an error to the server.
error | msg to send. |
result_t ost::Libexec::sendResult | ( | const char * | text | ) |
Send a result to the server.
result | to send. |
|
inline |
Set the effective audio level for tones...
level | to set. |
result_t ost::Libexec::setSym | ( | const char * | id, |
const char * | value | ||
) |
|
inline |
Set the effective voice library to use.
voice | to set or NULL for default. |
result_t ost::Libexec::sizeSym | ( | const char * | id, |
unsigned | size | ||
) |
result_t ost::Libexec::speak | ( | const char * | format, |
... | |||
) |
Play a phrase.
text | of phrase to play. |
bool ost::Libexec::waitInput | ( | timeout_t | timeout | ) |
Wait for input.
result_t ost::Libexec::xferCall | ( | const char * | dest | ) |
Transfer a call.
destination | to transfer. |
|
protected |
char ost::Libexec::digits[64] |
unsigned ost::Libexec::exitcode |
|
protected |
|
protected |
char ost::Libexec::position[32] |
char ost::Libexec::query[512] |
unsigned ost::Libexec::reply |
result_t ost::Libexec::result |
|
protected |
|
protected |