Bayonne
Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Static Protected Attributes | Friends | List of all members
ost::BayonneSession Class Referenceabstract

The primary session object representing a server timeslot and active communication endpoint in Bayonne. More...

#include <bayonne.h>

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

Public Member Functions

bool isDTMF (void)
 
bool isPeering (void)
 
BayonneSpangetSpan (void)
 
timeslot_t getTimeslot (void)
 
ScriptEnginegetEngine (void)
 
const char * getExternal (const char *option)
 Process interpreter session symbols. More...
 
bool addSymbol (const char *id, const char *value)
 Add to an existing symbol. More...
 
bool clearSymbol (const char *id)
 Clear an existing symbol. More...
 
uint16 getEventSequence (void)
 Get event sequence id. More...
 
BayonneTranslatorgetTranslator (void)
 Get the current language translator. More...
 
void startConnecting (void)
 Start connecting child... More...
 
 BayonneSession (BayonneDriver *driver, timeslot_t timeslot, BayonneSpan *span=NULL)
 Create a new session. More...
 
virtual ~BayonneSession ()
 Destroy a session. More...
 
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. More...
 
void initialize (void)
 Initialine ccengine script environment. More...
 
void detach (void)
 Detach interpreter. More...
 
time_t getJoined (void)
 Return time this call is joined or 0 if not child node. More...
 
BayonneDrivergetDriver (void)
 Return driver associated with this session. More...
 
virtual timeout_t getRemaining (void)=0
 Return time remaining until timer expires. More...
 
virtual void startTimer (timeout_t timer)=0
 Start a timer on the session. More...
 
virtual void stopTimer (void)=0
 Stop the timer for the session. More...
 
virtual void setOffhook (bool state)
 Set the port hook state. More...
 
virtual void makeIdle (void)
 Handles driver specific stuff when going idle. More...
 
void part (event_t reason)
 Disconnect notify peer... More...
 
virtual bool postEvent (Event *event)
 Post an event to the session state engine. More...
 
bool matchLine (Line *line)
 
virtual void queEvent (Event *event)
 queue an event through the msgport. More...
 
virtual void startThread (void)
 ccengine thread handling. More...
 
virtual void enterThread (ScriptThread *thr)
 ccengine thread handling. More...
 
virtual void exitThread (const char *msg)
 ccengine thread handling. More...
 
virtual void clrAudio (void)
 Clear/cleanup audio processing for the session. More...
 
virtual timeout_t getToneFraming (void)
 Get frame rate used for creating tone generators. More...
 
virtual const char * audioEncoding (void)
 Get driver default encoding. More...
 
virtual const char * audioExtension (void)
 Get driver default extension. More...
 
virtual timeout_t audioFraming (void)
 Get driver default framing. More...
 
const char * getAudio (bool live=true)
 Check script keywords for audio processing. More...
 
void branching (void)
 ccengine branch event notification. More...
 
bool isOffhook (void)
 Return hook state. More...
 
interface_t getInterface (void)
 Return interface type of this session. More...
 
bridge_t getBridge (void)
 Return bridge type for joins. More...
 
calltype_t getType (void)
 Return call type on session. More...
 
timeslot_t getSlot (void)
 Return server timeslot this session uses. More...
 
bool isIdle (void)
 Return if the session is currently idle. More...
 
bool isRefer (void)
 Return if currently referring. More...
 
bool isJoined (void)
 Return state of join. More...
 
bool isAssociated (void)
 Return state of association with parent in call. More...
 
void associate (BayonneSession *s)
 Set new call association. More...
 
bool isHolding (void)
 
bool isDisconnecting (void)
 Return state disconnecting or idle... More...
 
timeout_t getJoinTimer (void)
 Return parent answer timer, if joining. More...
 
bool signalScript (signal_t signal)
 Signal notification to script. More...
 
virtual bool peerLinear (void)
 Indicate whether session peers audio as linear frames. More...
 
virtual bool peerAudio (Audio::Encoded encoded)
 Post a peer audio frame into the driver. More...
 
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. More...
 
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. More...
 
const char * getTid (void)
 Get the current transaction identifier string for the session. More...
 
bool digitEvent (const char *event)
 Throw a digit pattern matching event message to the interprer. More...
 
bool stringEvent (const char *evt)
 
char getDigit (void)
 Get the next pending digit in the DTMF input buffer. More...
 
- Public Member Functions inherited from ost::Bayonne
void md5_hash (char *out, const char *source)
 Compute md5 hashes... More...
 

Static Public Member Functions

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)
 
- 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)
 

Public Attributes

Traffic call_attempts
 
Traffic call_complete
 
BayonneAudio audio
 

Protected Member Functions

bool requiresDTMF (void)
 Used to indicate commands which require dtmf handling to be enabled. More...
 
void enterCall (void)
 Enter a co-joined call session; used to notify other services. More...
 
void exitCall (const char *reason)
 Exit a co-joined call session; used to notify other services. More...
 
virtual bool enableDTMF (void)
 Enable dtmf detection for this channel. More...
 
virtual void disableDTMF (void)
 Disable dtmf detection for this channel. More...
 
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. More...
 
virtual bool filterPosting (Event *event)
 virtual to filter incoming events. More...
 
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. More...
 
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. More...
 
void libWrite (const char *string)
 Write libexec... More...
 
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. More...
 
ScriptSymbols * getSymbols (const char *id)
 Return ccengine symbol page map. More...
 
Name * attachStart (Event *event)
 Start a script from idle or ringing. More...
 
unsigned getId (void)
 Used by ccengine. More...
 
void setSid (void)
 Compute a uneque call session id for the current call on the current session object. More...
 
void setState (state_t)
 Set the session to a new state. More...
 
void setRunning (void)
 Set the session to the running state, resume interpreter or libexec. More...
 
bool setReconnect (const char *enc, timeout_t framing)
 Attempt to readjust encoding of active session if supported. More...
 
bool recallReconnect (void)
 Attempt to readjust encoding of active session for recall. More...
 
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. More...
 
bool setLibexec (result_t result)
 Set the result of a libexec initiated process and change state to libexec. More...
 
bool setLibreset (result_t result)
 Set the result of a libexec initiated process and execute a reset timer interval. More...
 
libaudio_tgetLibaudio (void)
 Get the libaudio object. More...
 
void finalize (void)
 ccengine. More...
 
bool exit (void)
 Exit processing for interpreter. More...
 

Protected Attributes

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. More...
 
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

static BayonneTranslator langNone
 
static ScriptSymbols * globalSyms
 
static Mutex globalLock
 
- 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
 

Friends

class __EXPORT ScriptEngine
 
class __EXPORT BayonneMsgport
 
class __EXPORT BayonneTranslator
 
class __EXPORT BayonneDriver
 
class __EXPORT Bayonne
 

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 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
 

Detailed Description

The primary session object representing a server timeslot and active communication endpoint in Bayonne.

Author
David Sugar dyfet.nosp@m.@gnu.nosp@m.telep.nosp@m.hony.nosp@m..org Session timeslot object.

Constructor & Destructor Documentation

ost::BayonneSession::BayonneSession ( BayonneDriver driver,
timeslot_t  timeslot,
BayonneSpan span = NULL 
)

Create a new session.

Parameters
driverto bind.
timeslotto bind.
spanto bind, or NULL if no span associated.
virtual ost::BayonneSession::~BayonneSession ( )
virtual

Destroy a session.

Member Function Documentation

static bool ost::BayonneSession::addGlobal ( const char *  id,
const char *  value 
)
static
bool ost::BayonneSession::addSymbol ( const char *  id,
const char *  value 
)

Add to an existing symbol.

Parameters
idof symbol.
valueto add.
Returns
false if not exists.
void ost::BayonneSession::associate ( BayonneSession s)

Set new call association.

Used by ACD.

Parameters
sessionto associate with.
Name* ost::BayonneSession::attachStart ( Event event)
protected

Start a script from idle or ringing.

This may use the assign statements to find the script name if none is passed.

Parameters
eventpassed to kick off the script.
Returns
script to run or NULL.
virtual const char* ost::BayonneSession::audioEncoding ( void  )
virtual

Get driver default encoding.

virtual const char* ost::BayonneSession::audioExtension ( void  )
virtual

Get driver default extension.

virtual timeout_t ost::BayonneSession::audioFraming ( void  )
virtual

Get driver default framing.

void ost::BayonneSession::branching ( void  )

ccengine branch event notification.

Used for menudef processing.

void ost::BayonneSession::check ( void  )
protected

Check dtmf handling and other nessisities for the interpreter after an event has changed interpreter state.

virtual const char* ost::BayonneSession::checkAudio ( bool  live)
protectedvirtual

Check audio properties for file and channel audio processing based on the driver specific capabilities of this channel through it's virtual.

Returns
error message if audio format unacceptable, NULL if ok.
Parameters
trueif for live audio, false if for file only.
static bool ost::BayonneSession::clearGlobal ( const char *  id)
static
bool ost::BayonneSession::clearSymbol ( const char *  id)

Clear an existing symbol.

Parameters
idof symbol.
Returns
false if not exists.
virtual void ost::BayonneSession::clrAudio ( void  )
virtual

Clear/cleanup audio processing for the session.

void ost::BayonneSession::decActiveCalls ( void  )
protected
const char* ost::BayonneSession::defVoicelib ( void  )
inline
void ost::BayonneSession::detach ( void  )

Detach interpreter.

bool ost::BayonneSession::digitEvent ( const char *  event)

Throw a digit pattern matching event message to the interprer.

Returns
true if throw caught.
Parameters
eventmessage.
virtual void ost::BayonneSession::disableDTMF ( void  )
protectedvirtual

Disable dtmf detection for this channel.

virtual bool ost::BayonneSession::enableDTMF ( void  )
protectedvirtual

Enable dtmf detection for this channel.

Returns
true if successful.
virtual bool ost::BayonneSession::enterAnswer ( Event event)
protectedvirtual
virtual bool ost::BayonneSession::enterBusy ( Event event)
protectedvirtual
void ost::BayonneSession::enterCall ( void  )
protected

Enter a co-joined call session; used to notify other services.

Always performed by child node.

virtual bool ost::BayonneSession::enterCommon ( Event event)
protectedvirtual
virtual bool ost::BayonneSession::enterDial ( Event event)
protectedvirtual
virtual bool ost::BayonneSession::enterDTMF ( Event event)
protectedvirtual
virtual bool ost::BayonneSession::enterFinal ( Event event)
protectedvirtual
virtual bool ost::BayonneSession::enterHangup ( Event event)
protectedvirtual
virtual bool ost::BayonneSession::enterHold ( Event event)
protectedvirtual
virtual bool ost::BayonneSession::enterHunting ( Event event)
protectedvirtual
virtual bool ost::BayonneSession::enterIdle ( Event event)
protectedvirtual
virtual bool ost::BayonneSession::enterInitial ( Event event)
protectedvirtual
virtual bool ost::BayonneSession::enterJoin ( Event event)
protectedvirtual
virtual bool ost::BayonneSession::enterPickup ( Event event)
protectedvirtual
virtual bool ost::BayonneSession::enterPlay ( Event event)
protectedvirtual
virtual bool ost::BayonneSession::enterRecall ( Event event)
protectedvirtual
virtual bool ost::BayonneSession::enterReconnect ( Event event)
protectedvirtual
virtual bool ost::BayonneSession::enterRecord ( Event event)
protectedvirtual
virtual bool ost::BayonneSession::enterRefer ( Event event)
protectedvirtual
virtual bool ost::BayonneSession::enterRelease ( Event event)
protectedvirtual
virtual bool ost::BayonneSession::enterReset ( Event event)
protectedvirtual
virtual bool ost::BayonneSession::enterRinging ( Event event)
protectedvirtual
virtual bool ost::BayonneSession::enterSeize ( Event event)
protectedvirtual
virtual bool ost::BayonneSession::enterStandby ( Event event)
protectedvirtual
virtual void ost::BayonneSession::enterThread ( ScriptThread *  thr)
virtual

ccengine thread handling.

virtual bool ost::BayonneSession::enterTone ( Event event)
protectedvirtual
virtual bool ost::BayonneSession::enterWait ( Event event)
protectedvirtual
virtual bool ost::BayonneSession::enterXfer ( Event event)
protectedvirtual
bool ost::BayonneSession::exit ( void  )
protected

Exit processing for interpreter.

Returns
true of exiting.
void ost::BayonneSession::exitCall ( const char *  reason)
protected

Exit a co-joined call session; used to notify other services.

May happen when a child node exits, drops a recall, or is dropped by a parent.

Parameters
reasoncall is terminated.
virtual void ost::BayonneSession::exitThread ( const char *  msg)
virtual

ccengine thread handling.

virtual bool ost::BayonneSession::filterPosting ( Event event)
protectedvirtual

virtual to filter incoming events.

Parameters
eventbeing sent to channel.
Returns
true if accepting event.
void ost::BayonneSession::finalize ( void  )
protected

ccengine.

const char* ost::BayonneSession::getAudio ( bool  live = true)

Check script keywords for audio processing.

Returns
NULL if ok, else error message.
Parameters
livetrue if for live, else for file processing.
bridge_t ost::BayonneSession::getBridge ( void  )
inline

Return bridge type for joins.

Returns
bridge type.
char ost::BayonneSession::getDigit ( void  )

Get the next pending digit in the DTMF input buffer.

Returns
digit.
const char* ost::BayonneSession::getDigits ( void  )
BayonneDriver* ost::BayonneSession::getDriver ( void  )
inline

Return driver associated with this session.

Returns
driver object.
ScriptEngine* ost::BayonneSession::getEngine ( void  )
inline
uint16 ost::BayonneSession::getEventSequence ( void  )
inline

Get event sequence id.

Returns
event sequence id.
const char* ost::BayonneSession::getExitKeyword ( const char *  def)
const char* ost::BayonneSession::getExternal ( const char *  option)

Process interpreter session symbols.

Parameters
optionsymbol being requested.
Returns
NULL if not external, else value.
static const char* ost::BayonneSession::getGlobal ( const char *  id)
static
unsigned ost::BayonneSession::getId ( void  )
protected

Used by ccengine.

unsigned ost::BayonneSession::getInputCount ( const char *  digits,
unsigned  max 
)
interface_t ost::BayonneSession::getInterface ( void  )
inline

Return interface type of this session.

Returns
interface type.
ScriptInterp* ost::BayonneSession::getInterp ( const char *  id)
protected

Return session id for interpreter session command.

Parameters
idof session request.
Returns
ccengine object to return for the id.
time_t ost::BayonneSession::getJoined ( void  )
inline

Return time this call is joined or 0 if not child node.

timeout_t ost::BayonneSession::getJoinTimer ( void  )

Return parent answer timer, if joining.

Returns
timeout for joining.
bool ost::BayonneSession::getKeyBool ( const char *  id)
const char* ost::BayonneSession::getKeyString ( const char *  id)
long ost::BayonneSession::getKeyValue ( const char *  id)
libaudio_t* ost::BayonneSession::getLibaudio ( void  )
inlineprotected

Get the libaudio object.

Used by server libexec to prepare a libaudio/phrasebook session.

Returns
libaudio object for this session.
timeout_t ost::BayonneSession::getLibexecTimeout ( void  )
protected
const char* ost::BayonneSession::getMenuKeyword ( const char *  def)
timeout_t ost::BayonneSession::getMSecTimeout ( const char *  id)
virtual timeout_t ost::BayonneSession::getRemaining ( void  )
pure virtual

Return time remaining until timer expires.

Commonly used for msgport scheduling.

Returns
time remaining in milliseconds.
timeout_t ost::BayonneSession::getSecTimeout ( const char *  id)
const char* ost::BayonneSession::getSessionId ( void  )
inline
const char* ost::BayonneSession::getSessionJoined ( void  )
inline
const char* ost::BayonneSession::getSessionParent ( void  )
inline
time_t ost::BayonneSession::getSessionStart ( void  )
inline
timeslot_t ost::BayonneSession::getSlot ( void  )
inline

Return server timeslot this session uses.

Returns
server timeslot.
BayonneSpan* ost::BayonneSession::getSpan ( void  )
inline
ScriptSymbols* ost::BayonneSession::getSymbols ( const char *  id)
protected

Return ccengine symbol page map.

Gives access to globals.

Parameters
idtable of symbols.
Returns
table map to use.
const char* ost::BayonneSession::getTid ( void  )
inline

Get the current transaction identifier string for the session.

Returns
transaction identifier.
timeout_t ost::BayonneSession::getTimeoutKeyword ( const char *  kw)
timeout_t ost::BayonneSession::getTimeoutValue ( const char *  opt = NULL)
timeslot_t ost::BayonneSession::getTimeslot ( void  )
inline
virtual timeout_t ost::BayonneSession::getToneFraming ( void  )
virtual

Get frame rate used for creating tone generators.

BayonneTranslator* ost::BayonneSession::getTranslator ( void  )
inline

Get the current language translator.

Returns
translator.
calltype_t ost::BayonneSession::getType ( void  )
inline

Return call type on session.

Returns
call type.
const char* ost::BayonneSession::getWritepath ( char *  buf = NULL,
size_t  len = 0 
)
protected
void ost::BayonneSession::incActiveCalls ( void  )
protected
void ost::BayonneSession::incIncomingAttempts ( void  )
protected
void ost::BayonneSession::incIncomingComplete ( void  )
protected
void ost::BayonneSession::incOutgoingAttempts ( void  )
protected
void ost::BayonneSession::incOutgoingComplete ( void  )
protected
void ost::BayonneSession::initialevent ( void  )

Initial kickoff event.

void ost::BayonneSession::initialize ( void  )

Initialine ccengine script environment.

bool ost::BayonneSession::isAssociated ( void  )

Return state of association with parent in call.

Returns
true if currently associated.
bool ost::BayonneSession::isDisconnecting ( void  )

Return state disconnecting or idle...

bool ost::BayonneSession::isDTMF ( void  )
inline
bool ost::BayonneSession::isHolding ( void  )
inline
bool ost::BayonneSession::isIdle ( void  )
inline

Return if the session is currently idle.

Returns
true if currently idle.
bool ost::BayonneSession::isJoined ( void  )

Return state of join.

Returns
true if currently joined.
bool ost::BayonneSession::isLibexec ( const char *  tsid)
protected
bool ost::BayonneSession::isOffhook ( void  )
inline

Return hook state.

Returns
true if offhook.
bool ost::BayonneSession::isPeering ( void  )
inline
bool ost::BayonneSession::isRefer ( void  )

Return if currently referring.

Returns
true if referring.
void ost::BayonneSession::libClose ( const char *  string)
protected
void ost::BayonneSession::libWrite ( const char *  string)
protected

Write libexec...

Parameters
stringto write.
virtual void ost::BayonneSession::makeIdle ( void  )
virtual

Handles driver specific stuff when going idle.

bool ost::BayonneSession::matchLine ( Line *  line)
uint32 ost::BayonneSession::newTid ( void  )

Compute a new unique transaction id.

These are like pids and are often used to assure transaction coherence, such as in the libexec system.

Returns
generated integer transaction identifier.
void ost::BayonneSession::part ( event_t  reason)

Disconnect notify peer...

Parameters
reasonevent id to pass
virtual bool ost::BayonneSession::peerAudio ( Audio::Encoded  encoded)
virtual

Post a peer audio frame into the driver.

The frame is assumed to either be in the format used for global peering, or, if the driver supports setPeering, perhaps in the session selected format.

Returns
true if peer frame was posted.
Parameters
encodedaudio frame to peer.
virtual bool ost::BayonneSession::peerLinear ( void  )
virtual

Indicate whether session peers audio as linear frames.

Returns
true if peering linear.
virtual bool ost::BayonneSession::postEvent ( Event event)
virtual

Post an event to the session state engine.

Returns
true if event claimed.
Parameters
eventbeing posted.
bool ost::BayonneSession::putEvent ( Event event)
protected

Direct method to post an event to a channel.

Returns
true if event is claimed by channel.
Parameters
eventbeing posted.
virtual void ost::BayonneSession::queEvent ( Event event)
virtual

queue an event through the msgport.

Parameters
eventto queue.
bool ost::BayonneSession::recallReconnect ( void  )
protected

Attempt to readjust encoding of active session for recall.

void ost::BayonneSession::renameRecord ( void  )
protected
bool ost::BayonneSession::requiresDTMF ( void  )
protected

Used to indicate commands which require dtmf handling to be enabled.

Returns
true if dtmf was enabled. If false, error processing occured for the interpreter.
void ost::BayonneSession::setConnecting ( const char *  evname = NULL)
protected

Set the session to the connecting (join) state or run state based on flags and circumstances from seize/pickup.

static bool ost::BayonneSession::setGlobal ( const char *  id,
const char *  value 
)
static
bool ost::BayonneSession::setLibexec ( result_t  result)
protected

Set the result of a libexec initiated process and change state to libexec.

Return false if no libexec support, or if not currently libexecing...

Returns
true if in libexec
Parameters
resultcode to set.
bool ost::BayonneSession::setLibreset ( result_t  result)
protected

Set the result of a libexec initiated process and execute a reset timer interval.

This is used to schedule reset hang time before resuming libexec.

Returns
true if in libexec
Parameters
resultcode to set.
virtual void ost::BayonneSession::setOffhook ( bool  state)
virtual

Set the port hook state.

Mostly for analog devices.

Parameters
statetrue to set offhook, false onhook.
virtual bool ost::BayonneSession::setPeering ( Audio::Encoding  encoding,
timeout_t  framing 
)
virtual

Set peer audio encoding to the encoding type and framing specified by peer on drivers which can switch encoding.

This can enable audio conversions to be bypassed.

Returns
true if set.
Parameters
encodingformat requested.
framingtimer to use.
bool ost::BayonneSession::setReconnect ( const char *  enc,
timeout_t  framing 
)
protected

Attempt to readjust encoding of active session if supported.

Parameters
encodingto try
timeoutto use
void ost::BayonneSession::setRunning ( void  )
protected

Set the session to the running state, resume interpreter or libexec.

void ost::BayonneSession::setSid ( void  )
protected

Compute a uneque call session id for the current call on the current session object.

Also a great key for cdr records.

void ost::BayonneSession::setState ( state_t  )
protected

Set the session to a new state.

bool ost::BayonneSession::signalScript ( signal_t  signal)

Signal notification to script.

Parameters
signalto send to script engine.
Returns
true if signal claimed.
static bool ost::BayonneSession::sizeGlobal ( const char *  id,
unsigned  size 
)
static
void ost::BayonneSession::startConnecting ( void  )
inline

Start connecting child...

virtual void ost::BayonneSession::startThread ( void  )
virtual

ccengine thread handling.

virtual void ost::BayonneSession::startTimer ( timeout_t  timer)
pure virtual

Start a timer on the session.

Used extensivily in state handler code.

Parameters
timerto start for specified milliseconds.
bool ost::BayonneSession::stateAnswer ( Event event)
protected
bool ost::BayonneSession::stateBusy ( Event event)
protected
bool ost::BayonneSession::stateCalling ( Event event)
protected
bool ost::BayonneSession::stateClear ( Event event)
protected
bool ost::BayonneSession::stateCollect ( Event event)
protected
bool ost::BayonneSession::stateConnect ( Event event)
protected
bool ost::BayonneSession::stateDial ( Event event)
protected
bool ost::BayonneSession::stateDTMF ( Event event)
protected
bool ost::BayonneSession::stateFinal ( Event event)
protected
bool ost::BayonneSession::stateHangup ( Event event)
protected
bool ost::BayonneSession::stateHold ( Event event)
protected
bool ost::BayonneSession::stateHunting ( Event event)
protected
bool ost::BayonneSession::stateIdle ( Event event)
protected
bool ost::BayonneSession::stateIdleReset ( Event event)
protected
bool ost::BayonneSession::stateInitial ( Event event)
protected
bool ost::BayonneSession::stateInkey ( Event event)
protected
bool ost::BayonneSession::stateInput ( Event event)
protected
bool ost::BayonneSession::stateJoin ( Event event)
protected
bool ost::BayonneSession::stateLibexec ( Event event)
protected
bool ost::BayonneSession::stateLibreset ( Event event)
protected
bool ost::BayonneSession::stateLibwait ( Event event)
protected
bool ost::BayonneSession::statePickup ( Event event)
protected
bool ost::BayonneSession::statePlay ( Event event)
protected
bool ost::BayonneSession::stateRead ( Event event)
protected
bool ost::BayonneSession::stateRecall ( Event event)
protected
bool ost::BayonneSession::stateReconnect ( Event event)
protected
bool ost::BayonneSession::stateRecord ( Event event)
protected
bool ost::BayonneSession::stateRefer ( Event event)
protected
bool ost::BayonneSession::stateRelease ( Event event)
protected
bool ost::BayonneSession::stateReset ( Event event)
protected
bool ost::BayonneSession::stateRinging ( Event event)
protected
bool ost::BayonneSession::stateRunning ( Event event)
protected
bool ost::BayonneSession::stateSeize ( Event event)
protected
bool ost::BayonneSession::stateSleep ( Event event)
protected
bool ost::BayonneSession::stateStandby ( Event event)
protected
bool ost::BayonneSession::stateStart ( Event event)
protected
bool ost::BayonneSession::stateThreading ( Event event)
protected
bool ost::BayonneSession::stateTone ( Event event)
protected
bool ost::BayonneSession::stateWait ( Event event)
protected
bool ost::BayonneSession::stateWaitkey ( Event event)
protected
bool ost::BayonneSession::stateXfer ( Event event)
protected
virtual void ost::BayonneSession::stopTimer ( void  )
pure virtual

Stop the timer for the session.

Used extensivily in state handler code.

bool ost::BayonneSession::stringEvent ( const char *  evt)
inline

Friends And Related Function Documentation

friend class __EXPORT Bayonne
friend
friend class __EXPORT BayonneDriver
friend
friend class __EXPORT BayonneMsgport
friend
friend class __EXPORT BayonneTranslator
friend
friend class __EXPORT ScriptEngine
friend

Member Data Documentation

bool ost::BayonneSession::answered
protected
BayonneAudio ost::BayonneSession::audio
time_t ost::BayonneSession::audiotimer
protected
bridge_t ost::BayonneSession::bridge
protected
Traffic ost::BayonneSession::call_attempts
Traffic ost::BayonneSession::call_complete
bool ost::BayonneSession::connecting
protected
unsigned ost::BayonneSession::digit_count
protected
BayonneDriver* ost::BayonneSession::driver
protected
bool ost::BayonneSession::dtmf
protected
char* ost::BayonneSession::dtmf_digits
protected
uint16 ost::BayonneSession::evseq
protected
Mutex ost::BayonneSession::globalLock
staticprotected
ScriptSymbols* ost::BayonneSession::globalSyms
staticprotected
bool ost::BayonneSession::holding
protected
interface_t ost::BayonneSession::iface
protected
BayonneTranslator ost::BayonneSession::langNone
staticprotected
std::ostream* ost::BayonneSession::logevents
protected
std::ostream * ost::BayonneSession::logtrace
protected
BayonneMsgport* ost::BayonneSession::msgport
protected
bool ost::BayonneSession::offhook
protected
BayonneSession* ost::BayonneSession::peer
protected
bool ost::BayonneSession::referring
protected
Ring* ost::BayonneSession::ring
protected
unsigned ost::BayonneSession::ring_count
protected
event_t ost::BayonneSession::seizure
protected
uint8 ost::BayonneSession::seq
protected
BayonneSpan* ost::BayonneSession::span
protected
bool ost::BayonneSession::starting
protected
time_t ost::BayonneSession::starttime
protected
State ost::BayonneSession::state
protected
time_t ost::BayonneSession::time_joined
protected
timeslot_t ost::BayonneSession::timeslot
protected
BayonneTranslator* ost::BayonneSession::translator
protected

Translator in effect for this session.

uint32 ost::BayonneSession::tseq
protected
calltype_t ost::BayonneSession::type
protected
char ost::BayonneSession::var_bankid[4]
protected
char ost::BayonneSession::var_callid[12]
protected
char ost::BayonneSession::var_date[12]
protected
char ost::BayonneSession::var_duration[12]
protected
char ost::BayonneSession::var_joined[16]
protected
char ost::BayonneSession::var_pid[16]
protected
char ost::BayonneSession::var_recall[16]
protected
char ost::BayonneSession::var_rings[4]
protected
char ost::BayonneSession::var_sid[16]
protected
char ost::BayonneSession::var_spanid[8]
protected
char ost::BayonneSession::var_spantsid[12]
protected
char ost::BayonneSession::var_tid[14]
protected
char ost::BayonneSession::var_time[12]
protected
char ost::BayonneSession::var_timeslot[8]
protected
ScriptEngine* ost::BayonneSession::vm
protected
const char* ost::BayonneSession::voicelib
protected

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