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

The principle driver node for a given collection of spans and sessions of a given Bayonne driver family type. More...

#include <bayonne.h>

Inheritance diagram for ost::BayonneDriver:
ost::Bayonne ost::ReconfigKeydata ost::StaticKeydata ost::DynamicKeydata

Public Member Functions

virtual bool isAuthorized (const char *userid, const char *secret)
 Determine if user id and secret is authorized for this driver subsystem (registry). More...
 
virtual bool deregister (const char *id)
 
virtual bool reregister (const char *id, const char *uri, const char *secret, timeout_t expires)
 
 BayonneDriver (Keydata::Define *pairs, const char *key, const char *id, bool virt=false)
 Create a driver instance. More...
 
 ~BayonneDriver ()
 Destroy driver instance. More...
 
BayonneDrivergetNext (void)
 Get next driver... More...
 
BayonneSessiongetIdle (void)
 Get longest idle session to active for call processing. More...
 
virtual bool suspend (void)
 Suspend a driver. More...
 
virtual bool resume (void)
 Resume a driver. More...
 
virtual void reregister (void)
 Re-register. More...
 
virtual const char * registerScript (ScriptImage *image, Line *line)
 Process driver protocol specific proxy registration requests. More...
 
virtual const char * assignScript (ScriptImage *image, Line *line)
 Process driver specific assign requests. More...
 
timeslot_t getFirst (void)
 Get first server timeslot this driver uses. More...
 
timeslot_t getCount (void)
 Get the total number of timeslots this driver uses. More...
 
unsigned getSpanFirst (void)
 Get the first span id used. More...
 
unsigned getSpansUsed (void)
 Get the number of span objects used by driver. More...
 
const char * getName (void)
 Get the name of the driver. More...
 
timeout_t getResetTimer (void)
 Get the reset timer for this driver when resetting a thread in the step state. More...
 
timeout_t getReleaseTimer (void)
 Get the release timer when releasing a trunk. More...
 
timeout_t getHangupTimer (void)
 Get the hangup timer for hang time before going idle. More...
 
timeout_t getPickupTimer (void)
 Get the pickup timer to wait for channel pickup. More...
 
timeout_t getSeizeTimer (void)
 Get the sieze time to wait for dialtone on outbound call. More...
 
timeout_t getHuntTimer (void)
 Get the hunting timer. More...
 
timeout_t getFlashTimer (void)
 Get the programmed flash timer to signal trunk flash. More...
 
timeout_t getInterdigit (void)
 Get default dtmf interdigit timer to use. More...
 
timeout_t getRingTimer (void)
 Get the timer to wait for next ring before deciding a call has dissapeared. More...
 
unsigned getAnswerCount (void)
 Get the number of rings to wait before answering. More...
 
BayonneSpangetSpan (unsigned id)
 Get the nth span object associated with this driver. More...
 
BayonneSessiongetTimeslot (timeslot_t id)
 Get the session associated with the nth timeslot for this driver. More...
 
BayonneMsgportgetMsgport (void)
 Return the message port bound with this driver. More...
 
size_t getAudioStack (void)
 Get the size of the stack for audio threads. More...
 
int getAudioPriority (void)
 Get the thread priority to use for audio threads for this driver. More...
 
Audio::Level getAudioLevel (void)
 Get the audio level for silence detection. More...
 
void setLogging (std::ostream *output)
 Set driver logging. More...
 
bool isSpanable (unsigned span)
 Determine if a span is available. More...
 
virtual bool getDestination (const char *target, const char *dial, char *output, size_t size)
 Deterime if a network destination is reachable through this driver, and convert dialing string into network reference. More...
 
unsigned getAvail (void)
 Get available timeslots. More...
 
virtual bool isExternal (const char *dest)
 See if a given potential dialed number is an external entry in our registrar. More...
 
virtual bool isRegistered (const char *dest)
 See if a given potential dialed number is registered. More...
 
virtual bool isAvailable (const char *dest)
 See if a given potential dialed number is available. More...
 
virtual bool isReachable (const char *proxy)
 See if a given selected server is currently considered reachable. More...
 
virtual unsigned getRegistration (regauth_t *data, unsigned count, const char *id=NULL)
 Fill registration data. More...
 
- Public Member Functions inherited from ost::Bayonne
void md5_hash (char *out, const char *source)
 Compute md5 hashes... More...
 
- Public Member Functions inherited from ost::ReconfigKeydata
const char * getInitial (const char *id)
 
void setInitial (const char *id, const char *val)
 
 ReconfigKeydata (const char *keypath, Keydata::Define *def=NULL)
 
const char * getString (const char *key, char *buf, size_t size)
 
timeout_t getSecTimer (const char *key)
 
timeout_t getMsecTimer (const char *key)
 
long getValue (const char *key)
 
bool isKey (const char *key)
 
bool getBoolean (const char *key)
 
- Public Member Functions inherited from ost::StaticKeydata
 StaticKeydata (const char *path, Keydata::Define *defkeys=NULL, const char *homepath=NULL)
 
const char * getString (const char *id)
 
long getValue (const char *id)
 
bool getBoolean (const char *id)
 

Static Public Member Functions

static bool useProtocols (void)
 Return flag for protocols active. More...
 
static bool isStopping (void)
 Return is stopping flag. More...
 
static BayonneDrivergetTrunking (void)
 Return primary trunk driver, if driver trunking... More...
 
static BayonneDrivergetPrimary (void)
 Return the first loaded driver. More...
 
static BayonneDriverauthorize (const char *userid, const char *secret)
 Authorize a user and return associated driver. More...
 
static BayonneDrivergetRoot (void)
 
static BayonneDrivergetProtocol (void)
 Return primary protocol driver... More...
 
static BayonneDriverget (const char *id)
 Find and return driver object from id name. More...
 
static BayonneDriverloadDriver (const char *id)
 Load a bayonne driver into memory. More...
 
static BayonneDriverloadTrunking (const char *id)
 Load a bayonne trunking driver into memory, set protocols. More...
 
static BayonneDriverloadProtocol (const char *id, unsigned timeslots=0)
 Load a protocol driver into memory, set timeslots. More...
 
static unsigned list (char **items, unsigned max)
 Get list of driver names into string array. More...
 
static void start (void)
 Start all loaded drivers. More...
 
static void stop (void)
 Stop all loaded drivers. More...
 
static void reload (void)
 Notify all drivers about reload. More...
 
static void add (BayonneSession *session)
 Add session to driver idle list for getIdle, usually during stateIdle. More...
 
static void del (BayonneSession *session)
 Remove session from driver idle list if still present. 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)
 

Public Attributes

Traffic call_attempts
 
Traffic call_complete
 
volatile unsigned short active_calls
 

Protected Member Functions

virtual void reloadDriver (void)
 Virtual to notify driver that a server image reload is in progress. More...
 
virtual void startDriver (void)
 Virtual to override method for activating the driver and creating all session and span objects associated with it. More...
 
virtual void stopDriver (void)
 Virtual to override method for clean shutdown of the driver. More...
 
void relistIdle (void)
 Relist idle drivers on high idle list, for drivers which do highwater marking allocation. More...
 
- Protected Member Functions inherited from ost::ReconfigKeydata
const char * updatedString (const char *id)
 
long updatedValue (const char *id)
 
timeout_t updatedSecTimer (const char *id)
 
timeout_t updatedMsecTimer (const char *id)
 
bool updatedBoolean (const char *id)
 
- Protected Member Functions inherited from ost::DynamicKeydata
virtual void updateConfig (Keydata *keydata)
 
 DynamicKeydata (const char *keypath, Keydata::Define *def=NULL, const char *homepath=NULL)
 
const char * getString (const char *key, char *buf, size_t size)
 
long getValue (const char *key)
 
bool isKey (const char *key)
 
bool getBoolean (const char *key)
 

Protected Attributes

BayonneSessionfirstIdle
 
BayonneSessionlastIdle
 
BayonneSessionhighIdle
 
BayonneMsgportmsgport
 
BayonneDrivernextDriver
 
const char * name
 
timeslot_t timeslot
 
timeslot_t count
 
unsigned avail
 
unsigned span
 
unsigned spans
 
bool running
 
std::ostream * logevents
 
int audio_priority
 
size_t audio_stack
 
Audio::Level audio_level
 
timeout_t pickup_timer
 
timeout_t hangup_timer
 
timeout_t seize_timer
 
timeout_t ring_timer
 
timeout_t hunt_timer
 
timeout_t reset_timer
 
timeout_t release_timer
 
timeout_t flash_timer
 
timeout_t interdigit_timer
 
unsigned answer_count
 

Static Protected Attributes

static BayonneDriverfirstDriver
 
static BayonneDriverlastDriver
 
static BayonneDrivertrunkDriver
 
static BayonneDriverprotoDriver
 
static Semaphore oink
 
static bool protocols
 
static bool stopping
 
- 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 BayonneSession
 
class __EXPORT BayonneMsgport
 

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
 
- Static Protected Member Functions inherited from ost::DynamicKeydata
static void reload (void)
 

Detailed Description

The principle driver node for a given collection of spans and sessions of a given Bayonne driver family type.

Author
David Sugar dyfet.nosp@m.@gnu.nosp@m.telep.nosp@m.hony.nosp@m..org Bayonne driver node class.

Constructor & Destructor Documentation

ost::BayonneDriver::BayonneDriver ( Keydata::Define *  pairs,
const char *  key,
const char *  id,
bool  virt = false 
)

Create a driver instance.

Parameters
pairsof default keyword entries for config.
keyname of config key.
idstring of driver.
whethervirtual driver of some sort or real.
ost::BayonneDriver::~BayonneDriver ( )

Destroy driver instance.

Member Function Documentation

static void ost::BayonneDriver::add ( BayonneSession session)
static

Add session to driver idle list for getIdle, usually during stateIdle.

Parameters
sessionbeing added.
virtual const char* ost::BayonneDriver::assignScript ( ScriptImage *  image,
Line *  line 
)
virtual

Process driver specific assign requests.

Returns
error message if invalid request, NULL if ok.
Parameters
imageof script being compiled.
linerecord of "assign" command.
static BayonneDriver* ost::BayonneDriver::authorize ( const char *  userid,
const char *  secret 
)
static

Authorize a user and return associated driver.

Parameters
useridto authorize.
secretto use.
Returns
driver authorized under or NULL.
static void ost::BayonneDriver::del ( BayonneSession session)
static

Remove session from driver idle list if still present.

Usually when changing from idle to an active state.

Parameters
sessionbeing removed.
virtual bool ost::BayonneDriver::deregister ( const char *  id)
virtual
static BayonneDriver* ost::BayonneDriver::get ( const char *  id)
static

Find and return driver object from id name.

Parameters
iddriver name.
Returns
associated driver node.
unsigned ost::BayonneDriver::getAnswerCount ( void  )
inline

Get the number of rings to wait before answering.

Returns
number of rings before answer.
Audio::Level ost::BayonneDriver::getAudioLevel ( void  )
inline

Get the audio level for silence detection.

Returns
audio threashold for silence.
int ost::BayonneDriver::getAudioPriority ( void  )
inline

Get the thread priority to use for audio threads for this driver.

Returns
thread priority.
size_t ost::BayonneDriver::getAudioStack ( void  )
inline

Get the size of the stack for audio threads.

Returns
stack size in bytes.
unsigned ost::BayonneDriver::getAvail ( void  )
inline

Get available timeslots.

Returns
available slots.
timeslot_t ost::BayonneDriver::getCount ( void  )
inline

Get the total number of timeslots this driver uses.

Returns
total timeslots for driver.
virtual bool ost::BayonneDriver::getDestination ( const char *  target,
const char *  dial,
char *  output,
size_t  size 
)
virtual

Deterime if a network destination is reachable through this driver, and convert dialing string into network reference.

Parameters
targetnetwork destination
dialstring
outputbuffer
sizeof output buffer
Returns
true if reachable
timeslot_t ost::BayonneDriver::getFirst ( void  )
inline

Get first server timeslot this driver uses.

Returns
first server timeslot for driver.
timeout_t ost::BayonneDriver::getFlashTimer ( void  )
inline

Get the programmed flash timer to signal trunk flash.

Returns
flash timer in milliseconds.
timeout_t ost::BayonneDriver::getHangupTimer ( void  )
inline

Get the hangup timer for hang time before going idle.

Returns
hangup timer in milliseconds.
timeout_t ost::BayonneDriver::getHuntTimer ( void  )
inline

Get the hunting timer.

Returns
hunt timer in milliseconds.
BayonneSession* ost::BayonneDriver::getIdle ( void  )

Get longest idle session to active for call processing.

Returns
handle to longest idle session, if none idle, NULL.
timeout_t ost::BayonneDriver::getInterdigit ( void  )
inline

Get default dtmf interdigit timer to use.

Returns
interdigit timer in milliseconds.
BayonneMsgport* ost::BayonneDriver::getMsgport ( void  )
inline

Return the message port bound with this driver.

Returns
bound msgport for driver.
const char* ost::BayonneDriver::getName ( void  )
inline

Get the name of the driver.

Returns
name of driver.
BayonneDriver* ost::BayonneDriver::getNext ( void  )
inline

Get next driver...

timeout_t ost::BayonneDriver::getPickupTimer ( void  )
inline

Get the pickup timer to wait for channel pickup.

Returns
pickup timer in milliseconds.
static BayonneDriver* ost::BayonneDriver::getPrimary ( void  )
inlinestatic

Return the first loaded driver.

static BayonneDriver* ost::BayonneDriver::getProtocol ( void  )
inlinestatic

Return primary protocol driver...

virtual unsigned ost::BayonneDriver::getRegistration ( regauth_t data,
unsigned  count,
const char *  id = NULL 
)
virtual

Fill registration data.

Returns
number of records filled.
Parameters
dataarray to fill.
numberof entries available.
optionalid to match.
optionalflag if only extensions.
timeout_t ost::BayonneDriver::getReleaseTimer ( void  )
inline

Get the release timer when releasing a trunk.

Returns
release timer in milliseconds.
timeout_t ost::BayonneDriver::getResetTimer ( void  )
inline

Get the reset timer for this driver when resetting a thread in the step state.

Returns
reset timer in milliseconds.
timeout_t ost::BayonneDriver::getRingTimer ( void  )
inline

Get the timer to wait for next ring before deciding a call has dissapeared.

Used when set to answer on nth ring.

Returns
ring timer in milliseconds. #see getAnswerCount.
static BayonneDriver* ost::BayonneDriver::getRoot ( void  )
inlinestatic
timeout_t ost::BayonneDriver::getSeizeTimer ( void  )
inline

Get the sieze time to wait for dialtone on outbound call.

Returns
seize timer in milliseconds.
BayonneSpan* ost::BayonneDriver::getSpan ( unsigned  id)

Get the nth span object associated with this driver.

Parameters
idof nth span to return.
Returns
span object or NULL if past limit/no spans.
unsigned ost::BayonneDriver::getSpanFirst ( void  )
inline

Get the first span id used.

Returns
span id.
unsigned ost::BayonneDriver::getSpansUsed ( void  )
inline

Get the number of span objects used by driver.

Returns
span count.
BayonneSession* ost::BayonneDriver::getTimeslot ( timeslot_t  id)

Get the session associated with the nth timeslot for this driver.

Parameters
idof nth timeslot of driver.
Returns
session object.
static BayonneDriver* ost::BayonneDriver::getTrunking ( void  )
inlinestatic

Return primary trunk driver, if driver trunking...

virtual bool ost::BayonneDriver::isAuthorized ( const char *  userid,
const char *  secret 
)
virtual

Determine if user id and secret is authorized for this driver subsystem (registry).

Parameters
useridto check
secretto check
Returns
true if authorized
virtual bool ost::BayonneDriver::isAvailable ( const char *  dest)
virtual

See if a given potential dialed number is available.

Returns
true if extern and available.
Parameters
destinationto test.
virtual bool ost::BayonneDriver::isExternal ( const char *  dest)
virtual

See if a given potential dialed number is an external entry in our registrar.

Returns
true if external.
Parameters
destinationto test.
virtual bool ost::BayonneDriver::isReachable ( const char *  proxy)
virtual

See if a given selected server is currently considered reachable.

This could be used for failover.

Returns
true if reachable.
Parameters
serverto test.
virtual bool ost::BayonneDriver::isRegistered ( const char *  dest)
virtual

See if a given potential dialed number is registered.

Returns
true if extern and registered.
Parameters
destinationto test.
bool ost::BayonneDriver::isSpanable ( unsigned  span)
inline

Determine if a span is available.

Parameters
spanassociated with driver to check.
Returns
true if available ports.
static bool ost::BayonneDriver::isStopping ( void  )
inlinestatic

Return is stopping flag.

static unsigned ost::BayonneDriver::list ( char **  items,
unsigned  max 
)
static

Get list of driver names into string array.

Parameters
itemsarray to save in.
maxcount of elements available.
Returns
number of drivers.
static BayonneDriver* ost::BayonneDriver::loadDriver ( const char *  id)
static

Load a bayonne driver into memory.

Parameters
iddriver name to load.
Returns
NULL or pointer to loaded driver.
static BayonneDriver* ost::BayonneDriver::loadProtocol ( const char *  id,
unsigned  timeslots = 0 
)
static

Load a protocol driver into memory, set timeslots.

Returns
NULL or pointer to loaded protocol.
Parameters
idof protocol driver to load.
timeslotsof protocol.
static BayonneDriver* ost::BayonneDriver::loadTrunking ( const char *  id)
static

Load a bayonne trunking driver into memory, set protocols.

Returns
NULL or pointer to loaded driver.
Parameters
idof trunking driver to load.
virtual const char* ost::BayonneDriver::registerScript ( ScriptImage *  image,
Line *  line 
)
virtual

Process driver protocol specific proxy registration requests.

Returns
error message if invalid request, NULL if ok.
Parameters
imageof script being compiled.
linerecord of "register" command.
void ost::BayonneDriver::relistIdle ( void  )
protected

Relist idle drivers on high idle list, for drivers which do highwater marking allocation.

static void ost::BayonneDriver::reload ( void  )
static

Notify all drivers about reload.

virtual void ost::BayonneDriver::reloadDriver ( void  )
protectedvirtual

Virtual to notify driver that a server image reload is in progress.

virtual bool ost::BayonneDriver::reregister ( const char *  id,
const char *  uri,
const char *  secret,
timeout_t  expires 
)
virtual
virtual void ost::BayonneDriver::reregister ( void  )
virtual

Re-register.

virtual bool ost::BayonneDriver::resume ( void  )
virtual

Resume a driver.

Returns
true if successful.
void ost::BayonneDriver::setLogging ( std::ostream *  output)
inline

Set driver logging.

Parameters
outputstream to log driver.
static void ost::BayonneDriver::start ( void  )
static

Start all loaded drivers.

virtual void ost::BayonneDriver::startDriver ( void  )
protectedvirtual

Virtual to override method for activating the driver and creating all session and span objects associated with it.

static void ost::BayonneDriver::stop ( void  )
static

Stop all loaded drivers.

virtual void ost::BayonneDriver::stopDriver ( void  )
protectedvirtual

Virtual to override method for clean shutdown of the driver.

virtual bool ost::BayonneDriver::suspend ( void  )
virtual

Suspend a driver.

Returns
true if successful.
static bool ost::BayonneDriver::useProtocols ( void  )
inlinestatic

Return flag for protocols active.

Friends And Related Function Documentation

friend class __EXPORT BayonneMsgport
friend
friend class __EXPORT BayonneSession
friend

Member Data Documentation

volatile unsigned short ost::BayonneDriver::active_calls
unsigned ost::BayonneDriver::answer_count
protected
Audio::Level ost::BayonneDriver::audio_level
protected
int ost::BayonneDriver::audio_priority
protected
size_t ost::BayonneDriver::audio_stack
protected
unsigned ost::BayonneDriver::avail
protected
Traffic ost::BayonneDriver::call_attempts
Traffic ost::BayonneDriver::call_complete
timeslot_t ost::BayonneDriver::count
protected
BayonneDriver* ost::BayonneDriver::firstDriver
staticprotected
BayonneSession* ost::BayonneDriver::firstIdle
protected
timeout_t ost::BayonneDriver::flash_timer
protected
timeout_t ost::BayonneDriver::hangup_timer
protected
BayonneSession * ost::BayonneDriver::highIdle
protected
timeout_t ost::BayonneDriver::hunt_timer
protected
timeout_t ost::BayonneDriver::interdigit_timer
protected
BayonneDriver* ost::BayonneDriver::lastDriver
staticprotected
BayonneSession * ost::BayonneDriver::lastIdle
protected
std::ostream* ost::BayonneDriver::logevents
protected
BayonneMsgport* ost::BayonneDriver::msgport
protected
const char* ost::BayonneDriver::name
protected
BayonneDriver* ost::BayonneDriver::nextDriver
protected
Semaphore ost::BayonneDriver::oink
staticprotected
timeout_t ost::BayonneDriver::pickup_timer
protected
bool ost::BayonneDriver::protocols
staticprotected
BayonneDriver* ost::BayonneDriver::protoDriver
staticprotected
timeout_t ost::BayonneDriver::release_timer
protected
timeout_t ost::BayonneDriver::reset_timer
protected
timeout_t ost::BayonneDriver::ring_timer
protected
bool ost::BayonneDriver::running
protected
timeout_t ost::BayonneDriver::seize_timer
protected
unsigned ost::BayonneDriver::span
protected
unsigned ost::BayonneDriver::spans
protected
bool ost::BayonneDriver::stopping
staticprotected
timeslot_t ost::BayonneDriver::timeslot
protected
BayonneDriver* ost::BayonneDriver::trunkDriver
staticprotected

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