ost::BayonneSession Class Reference

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

#include <bayonne.h>

Inheritance diagram for ost::BayonneSession:

ost::ScriptInterp ost::Bayonne ost::Mutex ost::ScriptSymbols ost::Script ost::MemPager ost::Script ost::BayonneTSession List of all members.

Public Member Functions

const char * getExternal (const char *option)
 Process interpreter session symbols.
uint16 getEventSequence (void)
 Get event sequence id.
BayonneTranslatorgetTranslator (void)
 Get the current language translator.
 BayonneSession (BayonneDriver *driver, timeslot_t timeslot, BayonneSpan *span=NULL)
 Create a new session.
virtual ~BayonneSession ()
 Destroy a session.
const char * defVoicelib (void)
void initialevent (void)
 Initial kickoff event.
void initialize (void)
 Initialine ccengine script environment.
void detach (void)
 Detach interpreter.
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 isJoined (void)
 Return state of join.
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

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

BayonneAudio audio

Protected Member Functions

Name * getScript (const char *scr)
bool requiresDTMF (void)
 Used to indicate commands which require dtmf handling to be enabled.
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 enterSeize (Event *event)
virtual bool enterHangup (Event *event)
virtual bool enterTone (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 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 stateSeize (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 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 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)
ScriptInterpgetInterp (const char *id)
 Return session id for interpreter session command.
ScriptSymbolsgetSymbols (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 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_t * getLibaudio (void)
 Get the libaudio object.
void finalize (void)
 ccengine.
bool exit (void)
 Exit processing for interpreter.

Protected Attributes

std::ostream * logevents
std::ostream * logtrace
BayonneDriverdriver
BayonneMsgportmsgport
BayonneSessionpeer
BayonneSpanspan
timeslot_t timeslot
uint8 seq
uint16 evseq
uint32 tseq
bool offhook
bool dtmf
bool answered
bool starting
bool holding
time_t audiotimer
time_t starttime
interface_t iface
bridge_t bridge
calltype_t type
event_t seizure
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_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
State state

Static Protected Attributes

static BayonneTranslator langNone
static ScriptSymbolsglobalSyms
static Mutex globalLock

Friends

class BayonneMsgport
class BayonneTranslator
class BayonneDriver
class Bayonne

Detailed Description

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

Author:
David Sugar <dyfet@gnutelephony.org>


Constructor & Destructor Documentation

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

Create a new session.

Parameters:
driver to bind.
timeslot to bind.
span to 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]
 

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:
event passed 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   )  [virtual]
 

ccengine branch event notification.

Used for menudef processing.

Reimplemented from ost::ScriptInterp.

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  )  [protected, virtual]
 

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:
true if for live audio, false if for file only.

static bool ost::BayonneSession::clearGlobal const char *  id  )  [static]
 

virtual void ost::BayonneSession::clrAudio void   )  [virtual]
 

Clear/cleanup audio processing for the session.

const char* ost::BayonneSession::defVoicelib void   )  [inline]
 

void ost::BayonneSession::detach void   ) 
 

Detach interpreter.

Reimplemented from ost::ScriptInterp.

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

Throw a digit pattern matching event message to the interprer.

Returns:
true if throw caught.
Parameters:
event message.

virtual void ost::BayonneSession::disableDTMF void   )  [protected, virtual]
 

Disable dtmf detection for this channel.

virtual bool ost::BayonneSession::enableDTMF void   )  [protected, virtual]
 

Enable dtmf detection for this channel.

Returns:
true if successful.

virtual bool ost::BayonneSession::enterBusy Event event  )  [protected, virtual]
 

virtual bool ost::BayonneSession::enterCommon Event event  )  [protected, virtual]
 

virtual bool ost::BayonneSession::enterDial Event event  )  [protected, virtual]
 

virtual bool ost::BayonneSession::enterDTMF Event event  )  [protected, virtual]
 

virtual bool ost::BayonneSession::enterFinal Event event  )  [protected, virtual]
 

virtual bool ost::BayonneSession::enterHangup Event event  )  [protected, virtual]
 

virtual bool ost::BayonneSession::enterHold Event event  )  [protected, virtual]
 

virtual bool ost::BayonneSession::enterIdle Event event  )  [protected, virtual]
 

virtual bool ost::BayonneSession::enterInitial Event event  )  [protected, virtual]
 

virtual bool ost::BayonneSession::enterJoin Event event  )  [protected, virtual]
 

virtual bool ost::BayonneSession::enterPickup Event event  )  [protected, virtual]
 

virtual bool ost::BayonneSession::enterPlay Event event  )  [protected, virtual]
 

virtual bool ost::BayonneSession::enterRecall Event event  )  [protected, virtual]
 

virtual bool ost::BayonneSession::enterRecord Event event  )  [protected, virtual]
 

virtual bool ost::BayonneSession::enterRelease Event event  )  [protected, virtual]
 

virtual bool ost::BayonneSession::enterReset Event event  )  [protected, virtual]
 

virtual bool ost::BayonneSession::enterRinging Event event  )  [protected, virtual]
 

virtual bool ost::BayonneSession::enterSeize Event event  )  [protected, virtual]
 

virtual bool ost::BayonneSession::enterStandby Event event  )  [protected, virtual]
 

virtual void ost::BayonneSession::enterThread ScriptThread thr  )  [virtual]
 

ccengine thread handling.

Reimplemented from ost::ScriptInterp.

virtual bool ost::BayonneSession::enterTone Event event  )  [protected, virtual]
 

virtual bool ost::BayonneSession::enterWait Event event  )  [protected, virtual]
 

virtual bool ost::BayonneSession::enterXfer Event event  )  [protected, virtual]
 

bool ost::BayonneSession::exit void   )  [protected, virtual]
 

Exit processing for interpreter.

Returns:
true of exiting.

Reimplemented from ost::ScriptInterp.

virtual void ost::BayonneSession::exitThread const char *  msg  )  [virtual]
 

ccengine thread handling.

Reimplemented from ost::ScriptInterp.

virtual bool ost::BayonneSession::filterPosting Event event  )  [protected, virtual]
 

virtual to filter incoming events.

Parameters:
event being 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:
live true 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.

BayonneDriver* ost::BayonneSession::getDriver void   )  [inline]
 

Return driver associated with this session.

Returns:
driver object.

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  )  [virtual]
 

Process interpreter session symbols.

Parameters:
option symbol being requested.
Returns:
NULL if not external, else value.

Reimplemented from ost::ScriptInterp.

static const char* ost::BayonneSession::getGlobal const char *  id  )  [static]
 

unsigned ost::BayonneSession::getId void   )  [protected, virtual]
 

Used by ccengine.

Reimplemented from ost::ScriptInterp.

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, virtual]
 

Return session id for interpreter session command.

Parameters:
id of session request.
Returns:
ccengine object to return for the id.

Reimplemented from ost::ScriptInterp.

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   )  [inline, protected]
 

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  )