Bayonne
Public Member Functions | Public Attributes | Protected Attributes | List of all members
ost::Libexec Class Reference

Container class for applications implimenting the libexec process method of Bayonne interfacing. More...

#include <libexec.h>

Inheritance diagram for ost::Libexec:
ost::Bayonne

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...
 
- Public Member Functions inherited from ost::Bayonne
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

- Public Types inherited from ost::Bayonne
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 Public Member Functions inherited from ost::Bayonne
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 BayonneDrivergetDriverTag (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 BayonneSessiongetSession (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 BayonneSessionstartDialing (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 BayonneSessiongetSid (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 Public Attributes inherited from ost::Bayonne
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 BayonneTranslatorinit_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 Protected Attributes inherited from ost::Bayonne
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
 

Detailed Description

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.

Author
David Sugar dyfet.nosp@m.@gnu.nosp@m.telep.nosp@m.hony.nosp@m..org Libexec process interface class.

Constructor & Destructor Documentation

ost::Libexec::Libexec ( )

Initialize libexec.

Member Function Documentation

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.

Returns
result code.
Parameters
nameof file to erase.
const char* ost::Libexec::getArg ( const char *  id)

Get a named libexec command line argument.

Parameters
idof libexec argument.
Returns
string value of requested argument or NULL.
const char* ost::Libexec::getEnv ( const char *  id)

Get a header record item.

Parameters
idof header or sys env item.
Returns
string value of requested item or NULL.
const char* ost::Libexec::getFile ( const char *  filename)

Get and verify partial pathname for file oriented libexec commands.

Returns
pointer to buffer or NULL if invalid.
Parameters
filenamepath to evaluate.
const char* ost::Libexec::getPath ( const char *  filename,
char *  buffer,
unsigned  size 
)

Get a fully qualified and resolved pathname.

Returns
pointer to buffer or NULL if invalid.
Parameters
filenamepath to evaluate.
bufferto save into.
sizeof 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.

Returns
result code.
Parameters
nameof file to move.
destinationof 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.

Returns
result code.
Parameters
nameof tone to play.
durationfor tone.
audiolevel 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.

Parameters
idof symbol to post.
valueof symbol.
result_t ost::Libexec::readInput ( char *  buffer,
unsigned  size,
timeout_t  timeout 
)

Read a line of input.

Returns
result code.
Parameters
inputbuffer.
sizeof input buffer.
timeoutfor input.
char ost::Libexec::readKey ( timeout_t  timeout)

Read a single key of input.

Returns
key input or 0.
Parameters
timeoutfor read.
result_t ost::Libexec::recordFile ( const char *  file,
timeout_t  duration,
timeout_t  silence = 0 
)

Record an audio file.

Returns
result code.
Parameters
nameof file to record.
totalduration of file.
optionalsilence 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.

Returns
result code.
Parameters
nameof file to record.
offsetto record info.
totalduration of file.
optionalsilence detect.
result_t ost::Libexec::replayFile ( const char *  file)

Replay an audio file.

Returns
result code.
Parameters
nameof file to play.
result_t ost::Libexec::replayOffset ( const char *  file,
const char *  offset 
)

Replay an audio file from a specified offset.

Returns
result code.
Parameters
nameof file to play.
offsetto 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.

Returns
result code.
Parameters
commandto send.
optionalquery buffer.
optionalquery size.
void ost::Libexec::sendError ( const char *  msg)

Send an error to the server.

Parameters
errormsg to send.
result_t ost::Libexec::sendResult ( const char *  text)

Send a result to the server.

Returns
result code from server.
Parameters
resultto send.
void ost::Libexec::setLevel ( Audio::Level  level)
inline

Set the effective audio level for tones...

Parameters
levelto set.
result_t ost::Libexec::setSym ( const char *  id,
const char *  value 
)
void ost::Libexec::setVoice ( const char *  voice)
inline

Set the effective voice library to use.

Parameters
voiceto 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.

Returns
result code.
Parameters
textof phrase to play.
bool ost::Libexec::waitInput ( timeout_t  timeout)

Wait for input.

Returns
true if input waiting.
result_t ost::Libexec::xferCall ( const char *  dest)

Transfer a call.

Returns
result code from server.
Parameters
destinationto transfer.

Member Data Documentation

Keydata ost::Libexec::args
protected
char ost::Libexec::digits[64]
unsigned ost::Libexec::exitcode
Keydata ost::Libexec::head
protected
Audio::Level ost::Libexec::level
protected
char ost::Libexec::position[32]
char ost::Libexec::query[512]
unsigned ost::Libexec::reply
result_t ost::Libexec::result
const char* ost::Libexec::tsid
protected
const char* ost::Libexec::voice
protected

The documentation for this class was generated from the following file: