Bayonne
Protected Member Functions | Friends | List of all members
ost::BayonneTSession Class Reference

#include <libexec.h>

Inheritance diagram for ost::BayonneTSession:
ost::BayonneSession ost::Bayonne

Protected Member Functions

void sysPost (const char *sid, char *id, const char *value)
 
void sysVar (const char *tsid, char *id, const char *value, int size)
 
void sysHeader (const char *tsid)
 
void sysArgs (const char *tsid)
 
void sysStatus (const char *tsid)
 
void sysRecord (const char *tsid, char *token)
 
void sysReplay (const char *tsid, char *token)
 
void sysFlush (const char *tsid)
 
void sysWait (const char *tsid, char *token)
 
void sysTone (const char *tsid, char *token)
 
void sysSTone (const char *tsid, char *token)
 
void sysDTone (const char *tsid, char *token)
 
void sysPrompt (const char *tsid, const char *voice, const char *text)
 
void sysInput (const char *tsid, char *token)
 
void sysHangup (const char *tsid)
 
void sysExit (const char *tsid, char *token)
 
void sysError (const char *tsid, char *token)
 
void sysReturn (const char *tsid, const char *text)
 
void sysXfer (const char *tsid, const char *dest)
 
- Protected Member Functions inherited from ost::BayonneSession
bool requiresDTMF (void)
 Used to indicate commands which require dtmf handling to be enabled.
 
void enterCall (void)
 Enter a co-joined call session; used to notify other services.
 
void exitCall (const char *reason)
 Exit a co-joined call session; used to notify other services.
 
virtual bool enableDTMF (void)
 Enable dtmf detection for this channel.
 
virtual void disableDTMF (void)
 Disable dtmf detection for this channel.
 
virtual const char * checkAudio (bool live)
 Check audio properties for file and channel audio processing based on the driver specific capabilities of this channel through it's virtual.
 
virtual bool filterPosting (Event *event)
 virtual to filter incoming events.
 
virtual bool enterCommon (Event *event)
 
virtual bool enterInitial (Event *event)
 
virtual bool enterFinal (Event *event)
 
virtual bool enterIdle (Event *event)
 
virtual bool enterReset (Event *event)
 
virtual bool enterRelease (Event *event)
 
virtual bool enterRinging (Event *event)
 
virtual bool enterPickup (Event *event)
 
virtual bool enterAnswer (Event *event)
 
virtual bool enterSeize (Event *event)
 
virtual bool enterHunting (Event *event)
 
virtual bool enterHangup (Event *event)
 
virtual bool enterTone (Event *event)
 
virtual bool enterReconnect (Event *event)
 
virtual bool enterDTMF (Event *event)
 
virtual bool enterPlay (Event *event)
 
virtual bool enterRecord (Event *event)
 
virtual bool enterJoin (Event *event)
 
virtual bool enterWait (Event *event)
 
virtual bool enterDial (Event *event)
 
virtual bool enterBusy (Event *event)
 
virtual bool enterStandby (Event *event)
 
virtual bool enterXfer (Event *event)
 
virtual bool enterRefer (Event *event)
 
virtual bool enterHold (Event *event)
 
virtual bool enterRecall (Event *event)
 
void check (void)
 Check dtmf handling and other nessisities for the interpreter after an event has changed interpreter state.
 
void renameRecord (void)
 
bool stateInitial (Event *event)
 
bool stateFinal (Event *event)
 
bool stateIdle (Event *event)
 
bool stateIdleReset (Event *event)
 
bool stateReset (Event *event)
 
bool stateRelease (Event *event)
 
bool stateBusy (Event *event)
 
bool stateStandby (Event *event)
 
bool stateRinging (Event *event)
 
bool statePickup (Event *event)
 
bool stateAnswer (Event *event)
 
bool stateSeize (Event *event)
 
bool stateHunting (Event *event)
 
bool stateRunning (Event *event)
 
bool stateLibexec (Event *event)
 
bool stateLibreset (Event *event)
 
bool stateLibwait (Event *event)
 
bool stateWaitkey (Event *event)
 
bool stateThreading (Event *event)
 
bool stateHangup (Event *event)
 
bool stateCollect (Event *event)
 
bool stateSleep (Event *event)
 
bool stateStart (Event *event)
 
bool stateClear (Event *event)
 
bool stateInkey (Event *event)
 
bool stateInput (Event *event)
 
bool stateRead (Event *event)
 
bool stateDial (Event *event)
 
bool stateXfer (Event *event)
 
bool stateRefer (Event *event)
 
bool stateHold (Event *event)
 
bool stateRecall (Event *event)
 
bool stateTone (Event *event)
 
bool stateDTMF (Event *event)
 
bool statePlay (Event *event)
 
bool stateRecord (Event *event)
 
bool stateJoin (Event *event)
 
bool stateWait (Event *event)
 
bool stateConnect (Event *event)
 
bool stateReconnect (Event *event)
 
bool stateCalling (Event *event)
 
bool putEvent (Event *event)
 Direct method to post an event to a channel.
 
void libWrite (const char *string)
 Write libexec...
 
void libClose (const char *string)
 
bool isLibexec (const char *tsid)
 
timeout_t getLibexecTimeout (void)
 
const char * getWritepath (char *buf=NULL, size_t len=0)
 
void incIncomingAttempts (void)
 
void incOutgoingAttempts (void)
 
void incIncomingComplete (void)
 
void incOutgoingComplete (void)
 
void incActiveCalls (void)
 
void decActiveCalls (void)
 
ScriptInterp * getInterp (const char *id)
 Return session id for interpreter session command.
 
ScriptSymbols * getSymbols (const char *id)
 Return ccengine symbol page map.
 
Name * attachStart (Event *event)
 Start a script from idle or ringing.
 
unsigned getId (void)
 Used by ccengine.
 
void setSid (void)
 Compute a uneque call session id for the current call on the current session object.
 
void setState (state_t)
 Set the session to a new state.
 
void setRunning (void)
 Set the session to the running state, resume interpreter or libexec.
 
bool setReconnect (const char *enc, timeout_t framing)
 Attempt to readjust encoding of active session if supported.
 
bool recallReconnect (void)
 Attempt to readjust encoding of active session for recall.
 
void setConnecting (const char *evname=NULL)
 Set the session to the connecting (join) state or run state based on flags and circumstances from seize/pickup.
 
bool setLibexec (result_t result)
 Set the result of a libexec initiated process and change state to libexec.
 
bool setLibreset (result_t result)
 Set the result of a libexec initiated process and execute a reset timer interval.
 
libaudio_tgetLibaudio (void)
 Get the libaudio object.
 
void finalize (void)
 ccengine.
 
bool exit (void)
 Exit processing for interpreter.
 

Friends

class __EXPORT BayonneSysexec
 

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.
 
typedef bool(BayonneSession::* Handler )(Event *event)
 The current state handler in effect for a given channel to receive events.
 
- Public Member Functions inherited from ost::BayonneSession
bool isDTMF (void)
 
bool isPeering (void)
 
BayonneSpangetSpan (void)
 
timeslot_t getTimeslot (void)
 
ScriptEnginegetEngine (void)
 
const char * getExternal (const char *option)
 Process interpreter session symbols.
 
bool addSymbol (const char *id, const char *value)
 Add to an existing symbol.
 
bool clearSymbol (const char *id)
 Clear an existing symbol.
 
uint16 getEventSequence (void)
 Get event sequence id.
 
BayonneTranslatorgetTranslator (void)
 Get the current language translator.
 
void startConnecting (void)
 Start connecting child...
 
 BayonneSession (BayonneDriver *driver, timeslot_t timeslot, BayonneSpan *span=NULL)
 Create a new session.
 
virtual ~BayonneSession ()
 Destroy a session.
 
const char * getDigits (void)
 
const char * defVoicelib (void)
 
const char * getSessionId (void)
 
const char * getSessionParent (void)
 
const char * getSessionJoined (void)
 
time_t getSessionStart (void)
 
void initialevent (void)
 Initial kickoff event.
 
void initialize (void)
 Initialine ccengine script environment.
 
void detach (void)
 Detach interpreter.
 
time_t getJoined (void)
 Return time this call is joined or 0 if not child node.
 
BayonneDrivergetDriver (void)
 Return driver associated with this session.
 
virtual timeout_t getRemaining (void)=0
 Return time remaining until timer expires.
 
virtual void startTimer (timeout_t timer)=0
 Start a timer on the session.
 
virtual void stopTimer (void)=0
 Stop the timer for the session.
 
virtual void setOffhook (bool state)
 Set the port hook state.
 
virtual void makeIdle (void)
 Handles driver specific stuff when going idle.
 
void part (event_t reason)
 Disconnect notify peer...
 
virtual bool postEvent (Event *event)
 Post an event to the session state engine.
 
bool matchLine (Line *line)
 
virtual void queEvent (Event *event)
 queue an event through the msgport.
 
virtual void startThread (void)
 ccengine thread handling.
 
virtual void enterThread (ScriptThread *thr)
 ccengine thread handling.
 
virtual void exitThread (const char *msg)
 ccengine thread handling.
 
virtual void clrAudio (void)
 Clear/cleanup audio processing for the session.
 
virtual timeout_t getToneFraming (void)
 Get frame rate used for creating tone generators.
 
virtual const char * audioEncoding (void)
 Get driver default encoding.
 
virtual const char * audioExtension (void)
 Get driver default extension.
 
virtual timeout_t audioFraming (void)
 Get driver default framing.
 
const char * getAudio (bool live=true)
 Check script keywords for audio processing.
 
void branching (void)
 ccengine branch event notification.
 
bool isOffhook (void)
 Return hook state.
 
interface_t getInterface (void)
 Return interface type of this session.
 
bridge_t getBridge (void)
 Return bridge type for joins.
 
calltype_t getType (void)
 Return call type on session.
 
timeslot_t getSlot (void)
 Return server timeslot this session uses.
 
bool isIdle (void)
 Return if the session is currently idle.
 
bool isRefer (void)
 Return if currently referring.
 
bool isJoined (void)
 Return state of join.
 
bool isAssociated (void)
 Return state of association with parent in call.
 
void associate (BayonneSession *s)
 Set new call association.
 
bool isHolding (void)
 
bool isDisconnecting (void)
 Return state disconnecting or idle...
 
timeout_t getJoinTimer (void)
 Return parent answer timer, if joining.
 
bool signalScript (signal_t signal)
 Signal notification to script.
 
virtual bool peerLinear (void)
 Indicate whether session peers audio as linear frames.
 
virtual bool peerAudio (Audio::Encoded encoded)
 Post a peer audio frame into the driver.
 
virtual bool setPeering (Audio::Encoding encoding, timeout_t framing)
 Set peer audio encoding to the encoding type and framing specified by peer on drivers which can switch encoding.
 
const char * getKeyString (const char *id)
 
bool getKeyBool (const char *id)
 
long getKeyValue (const char *id)
 
timeout_t getSecTimeout (const char *id)
 
timeout_t getMSecTimeout (const char *id)
 
timeout_t getTimeoutValue (const char *opt=NULL)
 
timeout_t getTimeoutKeyword (const char *kw)
 
const char * getExitKeyword (const char *def)
 
const char * getMenuKeyword (const char *def)
 
unsigned getInputCount (const char *digits, unsigned max)
 
uint32 newTid (void)
 Compute a new unique transaction id.
 
const char * getTid (void)
 Get the current transaction identifier string for the session.
 
bool digitEvent (const char *event)
 Throw a digit pattern matching event message to the interprer.
 
bool stringEvent (const char *evt)
 
char getDigit (void)
 Get the next pending digit in the DTMF input buffer.
 
- Static Public Member Functions inherited from ost::BayonneSession
static const char * getGlobal (const char *id)
 
static bool setGlobal (const char *id, const char *value)
 
static bool sizeGlobal (const char *id, unsigned size)
 
static bool addGlobal (const char *id, const char *value)
 
static bool clearGlobal (const char *id)
 
- Public Attributes inherited from ost::BayonneSession
Traffic call_attempts
 
Traffic call_complete
 
BayonneAudio audio
 
- 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.
 
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
 
- Protected Attributes inherited from ost::BayonneSession
std::ostream * logevents
 
std::ostream * logtrace
 
Ring * ring
 
BayonneDriverdriver
 
BayonneMsgportmsgport
 
BayonneSessionpeer
 
BayonneSpanspan
 
timeslot_t timeslot
 
uint8 seq
 
uint16 evseq
 
uint32 tseq
 
bool offhook
 
bool dtmf
 
bool answered
 
bool starting
 
bool holding
 
bool connecting
 
bool referring
 
time_t audiotimer
 
time_t starttime
 
interface_t iface
 
bridge_t bridge
 
calltype_t type
 
event_t seizure
 
ScriptEnginevm
 
BayonneTranslatortranslator
 Translator in effect for this session.
 
char var_date [12]
 
char var_time [12]
 
char var_duration [12]
 
char var_callid [12]
 
char var_tid [14]
 
char var_sid [16]
 
char var_pid [16]
 
char var_recall [16]
 
char var_joined [16]
 
char var_rings [4]
 
char var_timeslot [8]
 
char var_spanid [8]
 
char var_bankid [4]
 
char var_spantsid [12]
 
const char * voicelib
 
char * dtmf_digits
 
unsigned digit_count
 
unsigned ring_count
 
time_t time_joined
 
State state
 
- Static Protected Attributes inherited from ost::BayonneSession
static BayonneTranslator langNone
 
static ScriptSymbols * globalSyms
 
static Mutex globalLock
 

Member Function Documentation

void ost::BayonneTSession::sysArgs ( const char *  tsid)
protected
void ost::BayonneTSession::sysDTone ( const char *  tsid,
char *  token 
)
protected
void ost::BayonneTSession::sysError ( const char *  tsid,
char *  token 
)
protected
void ost::BayonneTSession::sysExit ( const char *  tsid,
char *  token 
)
protected
void ost::BayonneTSession::sysFlush ( const char *  tsid)
protected
void ost::BayonneTSession::sysHangup ( const char *  tsid)
protected
void ost::BayonneTSession::sysHeader ( const char *  tsid)
protected
void ost::BayonneTSession::sysInput ( const char *  tsid,
char *  token 
)
protected
void ost::BayonneTSession::sysPost ( const char *  sid,
char *  id,
const char *  value 
)
protected
void ost::BayonneTSession::sysPrompt ( const char *  tsid,
const char *  voice,
const char *  text 
)
protected
void ost::BayonneTSession::sysRecord ( const char *  tsid,
char *  token 
)
protected
void ost::BayonneTSession::sysReplay ( const char *  tsid,
char *  token 
)
protected
void ost::BayonneTSession::sysReturn ( const char *  tsid,
const char *  text 
)
protected
void ost::BayonneTSession::sysStatus ( const char *  tsid)
protected
void ost::BayonneTSession::sysSTone ( const char *  tsid,
char *  token 
)
protected
void ost::BayonneTSession::sysTone ( const char *  tsid,
char *  token 
)
protected
void ost::BayonneTSession::sysVar ( const char *  tsid,
char *  id,
const char *  value,
int  size 
)
protected
void ost::BayonneTSession::sysWait ( const char *  tsid,
char *  token 
)
protected
void ost::BayonneTSession::sysXfer ( const char *  tsid,
const char *  dest 
)
protected

Friends And Related Function Documentation

friend class __EXPORT BayonneSysexec
friend

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