From d2af0286cdb540ce7dd5b479ac8d8b0c0ef8515e Mon Sep 17 00:00:00 2001 From: gernot Date: Sun, 28 Dec 2003 15:00:35 +0000 Subject: [PATCH] * rework of exception handling stuff; many modules were not declaring thrown exceptions correctly any more after the re-structuring to not throw exceptions on any disconnect git-svn-id: https://svn.ibp.de/svn/capisuite/trunk/capisuite@196 4ebea2bb-67d4-0310-8558-a5799e421b66 --- ChangeLog | 16 ++++++++++ src/modules/audioreceive.cpp | 15 ++++++--- src/modules/audioreceive.h | 48 +++++++++++++++++++---------- src/modules/audiosend.cpp | 15 ++++++--- src/modules/audiosend.h | 53 ++++++++++++++++++++------------ src/modules/callmodule.cpp | 11 +++++-- src/modules/callmodule.h | 15 ++++++--- src/modules/calloutgoing.h | 16 ++++++---- src/modules/connectmodule.cpp | 11 +++++-- src/modules/connectmodule.h | 18 +++++++---- src/modules/disconnectmodule.cpp | 9 ++++-- src/modules/disconnectmodule.h | 10 +++++- src/modules/faxreceive.cpp | 15 ++++++--- src/modules/faxreceive.h | 36 ++++++++++++++-------- src/modules/faxsend.cpp | 15 ++++++--- src/modules/faxsend.h | 36 ++++++++++++++-------- src/modules/readDTMF.cpp | 13 +++++--- src/modules/readDTMF.h | 32 +++++++++++-------- src/modules/switch2faxG3.cpp | 9 ++++-- src/modules/switch2faxG3.h | 36 +++++++++++++--------- 20 files changed, 290 insertions(+), 139 deletions(-) diff --git a/ChangeLog b/ChangeLog index af1735f..3b8539b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2003-12-28 Gernot Hillier + + * src/modules/audioreceive.{h,cpp} (AudioReceive,mainLoop), + src/modules/audiosend.{h,cpp} (AudioSend,mainLoop), + src/modules/callmodule.{h,cpp} (CallModule,mainLoop), + src/modules/calloutgoing.{h,cpp} (mainLoop), + src/modules/connectmodule.{h,cpp} (ConnectModule,mainLoop), + src/modules/disconnectmodule.{h,cpp} (only comment fixes), + src/modules/faxreceive.{h,cpp} (FaxReceive,mainLoop), + src/modules/faxsend.{h,cpp} (FaxSend,mainLoop), + src/modules/readDTMF.{h,cpp} (ReadDTMF,mainLoop), + src/modules/switch2faxG3.{h,cpp} (Switch2FaxG3,mainLoop): + rework of exception handling stuff; many modules were not + declaring thrown exceptions correctly any more after the + re-structuring to not throw exceptions on any disconnect + 2003-12-21 Gernot Hillier * src/backend/connection.cpp (buildBconfiguration): accept diff --git a/src/modules/audioreceive.cpp b/src/modules/audioreceive.cpp index b1b663a..4645483 100644 --- a/src/modules/audioreceive.cpp +++ b/src/modules/audioreceive.cpp @@ -2,7 +2,7 @@ @brief Contains AudioReceive - Call Module for receiving audio. @author Gernot Hillier - $Revision: 1.1 $ + $Revision: 1.2 $ */ /*************************************************************************** @@ -50,7 +50,7 @@ unsigned char cswap[256] = { }; -AudioReceive::AudioReceive(Connection *conn, string file, int timeout, int silence_timeout, bool DTMF_exit) throw (CapiExternalError) +AudioReceive::AudioReceive(Connection *conn, string file, int timeout, int silence_timeout, bool DTMF_exit) throw (CapiExternalError,CapiWrongState) :CallModule(conn, timeout, DTMF_exit),silence_count(0),file(file),start_time(0),end_time(0), silence_timeout(silence_timeout*8000) // ISDN audio sample rate = 8000Hz { @@ -59,7 +59,7 @@ AudioReceive::AudioReceive(Connection *conn, string file, int timeout, int silen } void -AudioReceive::mainLoop() throw (CapiWrongState, CapiExternalError) +AudioReceive::mainLoop() throw (CapiWrongState,CapiExternalError) { start_time=getTime(); if (!(DTMF_exit && (!conn->getDTMF().empty()) ) ) { @@ -104,8 +104,13 @@ AudioReceive::duration() /* History $Log: audioreceive.cpp,v $ -Revision 1.1 2003/02/19 08:19:53 gernot -Initial revision +Revision 1.2 2003/12/28 15:00:35 gernot +* rework of exception handling stuff; many modules were not + declaring thrown exceptions correctly any more after the + re-structuring to not throw exceptions on any disconnect + +Revision 1.1.1.1 2003/02/19 08:19:53 gernot +initial checkin of 0.4 Revision 1.18 2003/01/19 16:50:27 ghillie - removed severity in exceptions. No FATAL-automatic-exit any more. diff --git a/src/modules/audioreceive.h b/src/modules/audioreceive.h index 76c6124..ee0cbd9 100644 --- a/src/modules/audioreceive.h +++ b/src/modules/audioreceive.h @@ -2,7 +2,7 @@ @brief Contains AudioReceive - Call Module for receiving audio. @author Gernot Hillier - $Revision: 1.1 $ + $Revision: 1.2 $ */ /*************************************************************************** @@ -26,16 +26,24 @@ using namespace std; /** @brief Call Module for receiving audio. - This module handles the reception of an audio wave file. It can recognize silence in the signal and timeout after - a given period of silence, after a general timeout or after the reception of a DTMF signal. - - If DTMF abort is enabled, the module will abort immediately if the DTMF receiving buffer (see Connection::getDTMF) - isn't empty when it is created. That allows the user to abort subsequent audio receive and send commands with one - DTMF signal w/o needing to check for received DTMF after each command. + This module handles the reception of an audio wave file. It can recognize + silence in the signal and timeout after a given period of silence, after + a general timeout or after the reception of a DTMF signal. - The call must be in audio mode (by connecting with service VOICE), otherwise an exception will be caused. + If DTMF abort is enabled, the module will abort immediately if the DTMF + receiving buffer (see Connection::getDTMF) isn't empty when it is created. + That allows the user to abort subsequent audio receive and send commands + with one DTMF signal w/o needing to check for received DTMF after each + command. - The created file will be saved in the format given by Capi, that is bit-reversed A-Law (or u-Law), 8 kHz mono. + The call must be in audio mode (by connecting with service VOICE), + otherwise an exception will be caused. + + CapiWrongState will only be thrown if connection is not up at startup, + not later on. We see a later disconnect as normal event, no error. + + The created file will be saved in the format given by Capi, that is + bit-reversed A-Law (or u-Law), 8 kHz, mono. @author Gernot Hillier */ @@ -52,17 +60,18 @@ class AudioReceive: public CallModule @param silence_timeout duration of silence in seconds after which record is finished, 0=no silence detection @param DTMF_exit true: abort if we receive DTMF during mainLoop() or if DTMF was received before @throw CapiExternalError Thrown if connection is not in speech mode - */ - AudioReceive(Connection *conn, string file, int timeout, int silence_timeout, bool DTMF_exit) throw (CapiExternalError); + @throw CapiWrongState Thrown if connection is not up (thrown by base class constructor) + */ + AudioReceive(Connection *conn, string file, int timeout, int silence_timeout, bool DTMF_exit) throw (CapiWrongState,CapiExternalError); + + /** @brief Start file reception, wait for one of the timeouts or disconnection and stop the reception. - /** @brief Start file reception, wait for one of the timeouts or disconnection and stop the reception. - If the recording was finished because of silence, the silence is truncated away from the recorded file - @throw CapiWrongState Thrown if disconnect is recognized @throw CapiExternalError Thrown by Connection::start_file_reception(). + @throw CapiWrongState Thrown if connection is not up at start of transfer (thrown by Connection::start_file_reception) */ - void mainLoop() throw (CapiWrongState, CapiExternalError); + void mainLoop() throw (CapiWrongState,CapiExternalError); /** @brief Test all received audio packets for silence and count silent packets @@ -93,8 +102,13 @@ class AudioReceive: public CallModule /* History $Log: audioreceive.h,v $ -Revision 1.1 2003/02/19 08:19:53 gernot -Initial revision +Revision 1.2 2003/12/28 15:00:35 gernot +* rework of exception handling stuff; many modules were not + declaring thrown exceptions correctly any more after the + re-structuring to not throw exceptions on any disconnect + +Revision 1.1.1.1 2003/02/19 08:19:53 gernot +initial checkin of 0.4 Revision 1.14 2003/01/16 13:03:07 ghillie - added attribute end_time diff --git a/src/modules/audiosend.cpp b/src/modules/audiosend.cpp index 3509c41..c488c0b 100644 --- a/src/modules/audiosend.cpp +++ b/src/modules/audiosend.cpp @@ -2,7 +2,7 @@ @brief Contains AudioSend - Call Module for sending an A-Law file @author Gernot Hillier - $Revision: 1.1 $ + $Revision: 1.2 $ */ /*************************************************************************** @@ -17,7 +17,7 @@ #include "../backend/connection.h" #include "audiosend.h" -AudioSend::AudioSend(Connection *conn, string file, bool DTMF_exit) throw (CapiExternalError) +AudioSend::AudioSend(Connection *conn, string file, bool DTMF_exit) throw (CapiWrongState,CapiExternalError) :CallModule(conn,-1,DTMF_exit),file(file) { if (conn->getService()!=Connection::VOICE) @@ -25,7 +25,7 @@ AudioSend::AudioSend(Connection *conn, string file, bool DTMF_exit) throw (CapiE } void -AudioSend::mainLoop() throw (CapiWrongState, CapiExternalError, CapiMsgError) +AudioSend::mainLoop() throw (CapiWrongState,CapiExternalError,CapiMsgError) { start_time=getTime(); if (!(DTMF_exit && (!conn->getDTMF().empty()) ) ) { @@ -51,8 +51,13 @@ AudioSend::duration() /* History $Log: audiosend.cpp,v $ -Revision 1.1 2003/02/19 08:19:53 gernot -Initial revision +Revision 1.2 2003/12/28 15:00:35 gernot +* rework of exception handling stuff; many modules were not + declaring thrown exceptions correctly any more after the + re-structuring to not throw exceptions on any disconnect + +Revision 1.1.1.1 2003/02/19 08:19:53 gernot +initial checkin of 0.4 Revision 1.14 2003/01/19 16:50:27 ghillie - removed severity in exceptions. No FATAL-automatic-exit any more. diff --git a/src/modules/audiosend.h b/src/modules/audiosend.h index 379925b..4547331 100644 --- a/src/modules/audiosend.h +++ b/src/modules/audiosend.h @@ -2,7 +2,7 @@ @brief Contains AudioSend - Call Module for sending an A-Law file @author Gernot Hillier - $Revision: 1.1 $ + $Revision: 1.2 $ */ /*************************************************************************** @@ -26,14 +26,21 @@ using namespace std; /** @brief Call Module for sending an A-Law file. - This module handles the sending of an audio file. The audio file must be in bit-inversed A-Law format. It can be created for example - with sox using the suffix ".la". It supports abortion if DTMF signal is received. - - If DTMF abort is enabled, the module will abort immediately if the DTMF receiving buffer (see Connection::getDTMF) - isn't empty when it is created. That allows the user to abort subsequent audio receive and send commands with one - DTMF signal w/o needing to check for received DTMF after each command. + This module handles the sending of an audio file. The audio file must be in + bit-inversed A-Law format. It can be created for example with sox using the + suffix ".la". It supports abortion if DTMF signal is received. - The connction must be in audio mode (by connecting with service VOICE), otherwise an exception will be caused. + If DTMF abort is enabled, the module will abort immediately if the DTMF + receiving buffer (see Connection::getDTMF) isn't empty when it is created. + That allows the user to abort subsequent audio receive and send commands + with one DTMF signal w/o needing to check for received DTMF after each + command. + + The connction must be in audio mode (by connecting with service VOICE), + otherwise an exception will be caused. + + CapiWrongState will only be thrown if connection is not up at startup, + not later on. We see a later disconnect as normal event, no error. @author Gernot Hillier */ @@ -46,26 +53,27 @@ class AudioSend: public CallModule @param file name of file to send @param DTMF_exit set to true, if you want to finish when DTMF signal is received @throw CapiExternalError Thrown if speech mode isn't established before. - */ - AudioSend(Connection *conn, string file, bool DTMF_exit) throw (CapiExternalError); + @throw CapiWrongState Thrown if connection is not up (thrown by base class constructor) + */ + AudioSend(Connection *conn, string file, bool DTMF_exit) throw (CapiWrongState,CapiExternalError); - /** @brief Start file transmission, wait for the end of the file or the connection, stop file transmission + /** @brief Start file transmission, wait for the end of the file or the connection, stop file transmission - @throw CapiWrongState Thrown when disconnection takes place. @throw CapiExternalError Thrown by Connection::start_file_transmission, see there for explanation. @throw CapiMsgError Thrown by Connection::start_file_transmission, see there for explanation. - */ - void mainLoop() throw (CapiWrongState, CapiExternalError, CapiMsgError); + @throw CapiWrongState Thrown if connection is not up at start of transfer (thrown by Connection::start_file_transmission) + */ + void mainLoop() throw (CapiWrongState,CapiExternalError,CapiMsgError); - /** @brief finish main loop if file is completely received + /** @brief finish main loop if file is completely received - */ + */ void transmissionComplete(); - /** @brief Return the time in seconds since start of mainLoop() + /** @brief Return the time in seconds since start of mainLoop() @return time in seconds since start of mainLoop() - */ + */ long duration(); private: @@ -78,8 +86,13 @@ class AudioSend: public CallModule /* History $Log: audiosend.h,v $ -Revision 1.1 2003/02/19 08:19:53 gernot -Initial revision +Revision 1.2 2003/12/28 15:00:35 gernot +* rework of exception handling stuff; many modules were not + declaring thrown exceptions correctly any more after the + re-structuring to not throw exceptions on any disconnect + +Revision 1.1.1.1 2003/02/19 08:19:53 gernot +initial checkin of 0.4 Revision 1.13 2002/12/04 11:38:50 ghillie - added time measurement: save time in start_time at the begin of mainLoop() and return difference to getTime() in duration() diff --git a/src/modules/callmodule.cpp b/src/modules/callmodule.cpp index 9e4ef69..13e7ea1 100644 --- a/src/modules/callmodule.cpp +++ b/src/modules/callmodule.cpp @@ -2,7 +2,7 @@ @brief Contains CallModule - Base class for all call handling modules @author Gernot Hillier - $Revision: 1.3 $ + $Revision: 1.4 $ */ /*************************************************************************** @@ -19,7 +19,7 @@ #include "../backend/connection.h" #include "callmodule.h" -CallModule::CallModule(Connection *connection, int timeout, bool DTMF_exit, bool checkConnection) +CallModule::CallModule(Connection *connection, int timeout, bool DTMF_exit, bool checkConnection) throw (CapiWrongState) :finish(false),timeout(timeout),conn(connection),DTMF_exit(DTMF_exit) { if (conn) @@ -47,7 +47,7 @@ CallModule::callDisconnectedLogical() } void -CallModule::mainLoop() throw (CapiWrongState, CapiMsgError, CapiExternalError) +CallModule::mainLoop() throw (CapiWrongState,CapiMsgError, CapiExternalError) { if (! (DTMF_exit && (conn->getDTMF()!="") ) ) { exit_time=getTime()+timeout; @@ -105,6 +105,11 @@ CallModule::gotDTMF() /* History $Log: callmodule.cpp,v $ +Revision 1.4 2003/12/28 15:00:35 gernot +* rework of exception handling stuff; many modules were not + declaring thrown exceptions correctly any more after the + re-structuring to not throw exceptions on any disconnect + Revision 1.3 2003/10/03 14:56:40 gernot - partly implementation of a bigger semantic change: don't throw call finished exceptions in normal operation any longer; i.e. we only diff --git a/src/modules/callmodule.h b/src/modules/callmodule.h index dcb452e..ea876b8 100644 --- a/src/modules/callmodule.h +++ b/src/modules/callmodule.h @@ -2,7 +2,7 @@ @brief Contains CallModule - Base class for all call handling modules @author Gernot Hillier - $Revision: 1.4 $ + $Revision: 1.5 $ */ /*************************************************************************** @@ -60,8 +60,9 @@ class CallModule: public CallInterface @param timeout timeout for this module in seconds (only considered in mainLoop!), -1=infinite (default) @param DTMF_exit if this is set to true, then the current module is exited if we receive a DTMF tone @param assure connection is up at beginning + @throw CapiWrongState thrown if connection checking was enabled and connection is not up */ - CallModule(Connection* connection, int timeout=-1, bool DTMF_exit=false, bool checkConnection=true); + CallModule(Connection* connection, int timeout=-1, bool DTMF_exit=false, bool checkConnection=true) throw (CapiWrongState); /** @brief Destructor. Deregister this module at the according Connection object. */ @@ -74,8 +75,9 @@ class CallModule: public CallInterface This method will likely be overwritten in each sub class. You can call CallModule::mainLoop() there to implement busy loops. @throw CapiMsgError A CAPI function hasn't succeeded for some reason (not thrown by CallModule, but may be thrown in subclasses). @throw CapiExternalError A given command didn't succeed for a reason not caused by the CAPI (not thrown by CallModule, but may be thrown in subclasses) - */ - virtual void mainLoop() throw (CapiWrongState, CapiMsgError, CapiExternalError); + @throw CapiWrongState Not thrown here, but sub classes may throw it + */ + virtual void mainLoop() throw (CapiWrongState,CapiMsgError,CapiExternalError); /** @brief empty here. @@ -140,6 +142,11 @@ class CallModule: public CallInterface /* History $Log: callmodule.h,v $ +Revision 1.5 2003/12/28 15:00:35 gernot +* rework of exception handling stuff; many modules were not + declaring thrown exceptions correctly any more after the + re-structuring to not throw exceptions on any disconnect + Revision 1.4 2003/10/03 14:56:40 gernot - partly implementation of a bigger semantic change: don't throw call finished exceptions in normal operation any longer; i.e. we only diff --git a/src/modules/calloutgoing.h b/src/modules/calloutgoing.h index 3a6a5c5..5687607 100644 --- a/src/modules/calloutgoing.h +++ b/src/modules/calloutgoing.h @@ -2,7 +2,7 @@ @brief Contains CallOutgoing - Call Module for establishment of an outgoing connection and wait for successful connect @author Gernot Hillier - $Revision: 1.2 $ + $Revision: 1.3 $ */ /*************************************************************************** @@ -34,7 +34,8 @@ using namespace std; The timeout will be counted from the moment the other party is alerted, not from the moment we initiate the call! - You can get the reason for exiting with getResult(). + This call module does never throw CapiWrongState! see getResult() if you + need to know if conneciton succeeded. @author Gernot Hillier */ @@ -55,14 +56,12 @@ class CallOutgoing: public CallModule */ CallOutgoing(Capi *capi, _cdword controller, string call_from, string call_to, Connection::service_t service, int timeout, string faxStationID, string faxHeadline, bool clir); - /** @brief Initiate connection, wait for it to succeed - - This call module does never throw CapiWrongState! see getResult() if you need to know if conneciton succeeded. + /** @brief Initiate connection, wait for it to succeed @throw CapiExternalError Thrown by Connection::Connection(Capi*,_cdword,string,bool,string,service_t,string,string) @throw CapiMsgError Thrown by Connection::Connection(Capi*,_cdword,string,bool,string,service_t,string,string) */ - void mainLoop() throw (CapiExternalError, CapiMsgError); + void mainLoop() throw (CapiExternalError,CapiMsgError); /** @brief Finish if we got connection @@ -107,6 +106,11 @@ class CallOutgoing: public CallModule /* History $Log: calloutgoing.h,v $ +Revision 1.3 2003/12/28 15:00:35 gernot +* rework of exception handling stuff; many modules were not + declaring thrown exceptions correctly any more after the + re-structuring to not throw exceptions on any disconnect + Revision 1.2 2003/04/17 10:52:12 gernot - timeout value is now measured beginning at the moment the other party is signalled diff --git a/src/modules/connectmodule.cpp b/src/modules/connectmodule.cpp index f7f4505..db3098d 100644 --- a/src/modules/connectmodule.cpp +++ b/src/modules/connectmodule.cpp @@ -2,7 +2,7 @@ @brief Contains ConnectModule - Call Module for connection establishment at incoming connection @author Gernot Hillier - $Revision: 1.2 $ + $Revision: 1.3 $ */ /*************************************************************************** @@ -16,7 +16,7 @@ #include "connectmodule.h" -ConnectModule::ConnectModule(Connection *conn_in, Connection::service_t service, string faxStationID, string faxHeadline) +ConnectModule::ConnectModule(Connection *conn_in, Connection::service_t service, string faxStationID, string faxHeadline) throw (CapiExternalError) :CallModule(conn_in,-1,false,false),service(service),faxStationID(faxStationID),faxHeadline(faxHeadline) { if (conn->getState()!=Connection::WAITING) @@ -24,7 +24,7 @@ ConnectModule::ConnectModule(Connection *conn_in, Connection::service_t service, } void -ConnectModule::mainLoop() throw (CapiWrongState, CapiExternalError, CapiMsgError) +ConnectModule::mainLoop() throw (CapiWrongState,CapiExternalError,CapiMsgError) { conn->connectWaiting(service,faxStationID,faxHeadline); CallModule::mainLoop(); @@ -39,6 +39,11 @@ ConnectModule::callConnected() /* History $Log: connectmodule.cpp,v $ +Revision 1.3 2003/12/28 15:00:35 gernot +* rework of exception handling stuff; many modules were not + declaring thrown exceptions correctly any more after the + re-structuring to not throw exceptions on any disconnect + Revision 1.2 2003/10/03 14:56:40 gernot - partly implementation of a bigger semantic change: don't throw call finished exceptions in normal operation any longer; i.e. we only diff --git a/src/modules/connectmodule.h b/src/modules/connectmodule.h index c133f6b..677a354 100644 --- a/src/modules/connectmodule.h +++ b/src/modules/connectmodule.h @@ -2,7 +2,7 @@ @brief Contains ConnectModule - Call Module for connection establishment at incoming connection @author Gernot Hillier - $Revision: 1.1 $ + $Revision: 1.2 $ */ /*************************************************************************** @@ -40,16 +40,17 @@ class ConnectModule: public CallModule @param service service to connect with as described in Connection::service_t @param faxStationID fax station ID, only necessary when connecting in FAXG3 mode @param faxHeadline fax headline, only necessary when connecting in FAXG3 mode + @throw CapiExternalError Thrown if Connection not in waiting state */ - ConnectModule(Connection *conn, Connection::service_t service, string faxStationID, string faxHeadline); + ConnectModule(Connection *conn, Connection::service_t service, string faxStationID, string faxHeadline) throw (CapiExternalError); /** @brief Accept connection and wait for complete establishment - @throw CapiWrongState Thrown by CallModule::mainLoop() @throw CapiExternalError Thrown by Connection::connectWaiting() @throw CapiMsgError Thrown by Connection::connectWaiting() + @throw CapiWrongState Thrown by Connection::connectWaiting() */ - void mainLoop() throw (CapiWrongState, CapiExternalError, CapiMsgError); + void mainLoop() throw (CapiWrongState,CapiExternalError, CapiMsgError); /** @brief Finish mainLoop() if call is completely established */ @@ -66,8 +67,13 @@ class ConnectModule: public CallModule /* History $Log: connectmodule.h,v $ -Revision 1.1 2003/02/19 08:19:53 gernot -Initial revision +Revision 1.2 2003/12/28 15:00:35 gernot +* rework of exception handling stuff; many modules were not + declaring thrown exceptions correctly any more after the + re-structuring to not throw exceptions on any disconnect + +Revision 1.1.1.1 2003/02/19 08:19:53 gernot +initial checkin of 0.4 Revision 1.7 2002/11/29 10:27:44 ghillie - updated comments, use doxygen format now diff --git a/src/modules/disconnectmodule.cpp b/src/modules/disconnectmodule.cpp index 7556044..fd756c8 100644 --- a/src/modules/disconnectmodule.cpp +++ b/src/modules/disconnectmodule.cpp @@ -2,7 +2,7 @@ @brief Contains DisconnectModule - Call Module for call clearing @author Gernot Hillier - $Revision: 1.2 $ + $Revision: 1.3 $ */ /*************************************************************************** @@ -15,7 +15,7 @@ ***************************************************************************/ #include "disconnectmodule.h" - + DisconnectModule::DisconnectModule(Connection *conn, int reject_reason, bool quick_disconnect) :CallModule(conn,-1,false,false),reject_reason(reject_reason),quick_disconnect(quick_disconnect) {} @@ -42,6 +42,11 @@ void DisconnectModule::callDisconnectedLogical() /* History $Log: disconnectmodule.cpp,v $ +Revision 1.3 2003/12/28 15:00:35 gernot +* rework of exception handling stuff; many modules were not + declaring thrown exceptions correctly any more after the + re-structuring to not throw exceptions on any disconnect + Revision 1.2 2003/10/03 14:56:40 gernot - partly implementation of a bigger semantic change: don't throw call finished exceptions in normal operation any longer; i.e. we only diff --git a/src/modules/disconnectmodule.h b/src/modules/disconnectmodule.h index 5bdda87..3c18671 100644 --- a/src/modules/disconnectmodule.h +++ b/src/modules/disconnectmodule.h @@ -2,7 +2,7 @@ @brief Contains DisconnectModule - Call Module for call clearing @author Gernot Hillier - $Revision: 1.2 $ + $Revision: 1.3 $ */ /*************************************************************************** @@ -30,6 +30,9 @@ using namespace std; no problem to call it when the connection is already (partly or completely) cleared. + There exists nothing like a wrong connection state to disconnect, therefore + CapiWrongState is never thrown. + @author Gernot Hillier */ class DisconnectModule: public CallModule @@ -65,6 +68,11 @@ class DisconnectModule: public CallModule /* History $Log: disconnectmodule.h,v $ +Revision 1.3 2003/12/28 15:00:35 gernot +* rework of exception handling stuff; many modules were not + declaring thrown exceptions correctly any more after the + re-structuring to not throw exceptions on any disconnect + Revision 1.2 2003/10/03 14:56:40 gernot - partly implementation of a bigger semantic change: don't throw call finished exceptions in normal operation any longer; i.e. we only diff --git a/src/modules/faxreceive.cpp b/src/modules/faxreceive.cpp index 929d2ad..405d3a9 100644 --- a/src/modules/faxreceive.cpp +++ b/src/modules/faxreceive.cpp @@ -2,7 +2,7 @@ @brief Contains FaxReceive - Call Module for receiving an analog fax (group 3) @author Gernot Hillier - $Revision: 1.1 $ + $Revision: 1.2 $ */ /*************************************************************************** @@ -18,7 +18,7 @@ #include "faxreceive.h" -FaxReceive::FaxReceive(Connection *conn, string file) throw (CapiExternalError) +FaxReceive::FaxReceive(Connection *conn, string file) throw (CapiWrongState,CapiExternalError) :CallModule(conn),file(file) { if (conn->getService()!=Connection::FAXG3) @@ -27,7 +27,7 @@ FaxReceive::FaxReceive(Connection *conn, string file) throw (CapiExternalError) void -FaxReceive::mainLoop() throw (CapiWrongState, CapiExternalError) +FaxReceive::mainLoop() throw (CapiWrongState,CapiExternalError) { conn->start_file_reception(file); CallModule::mainLoop(); @@ -43,8 +43,13 @@ FaxReceive::transmissionComplete() /* History $Log: faxreceive.cpp,v $ -Revision 1.1 2003/02/19 08:19:53 gernot -Initial revision +Revision 1.2 2003/12/28 15:00:35 gernot +* rework of exception handling stuff; many modules were not + declaring thrown exceptions correctly any more after the + re-structuring to not throw exceptions on any disconnect + +Revision 1.1.1.1 2003/02/19 08:19:53 gernot +initial checkin of 0.4 Revision 1.12 2003/01/19 16:50:27 ghillie - removed severity in exceptions. No FATAL-automatic-exit any more. diff --git a/src/modules/faxreceive.h b/src/modules/faxreceive.h index 196ed5a..fde4054 100644 --- a/src/modules/faxreceive.h +++ b/src/modules/faxreceive.h @@ -2,7 +2,7 @@ @brief Contains FaxReceive - Call Module for receiving an analog fax (group 3) @author Gernot Hillier - $Revision: 1.1 $ + $Revision: 1.2 $ */ /*************************************************************************** @@ -26,14 +26,20 @@ using namespace std; /** @brief Call Module for receiving an analog fax (group 3). - This module handles the reception of an analog fax (fax group 3). It starts the reception and waits for the end of the connection. - + This module handles the reception of an analog fax (fax group 3). It starts + the reception and waits for the end of the connection. + Fax polling isn't supported yet. - Fax mode must have been established before using this (by connecting in fax mode or switching to fax with Switch2FaxG3), - otherwise an exception is caused. - - The created file will be saved in the format received by Capi, i.e. as Structured Fax File (SFF). + Fax mode must have been established before using this (by connecting in fax + mode or switching to fax with Switch2FaxG3), otherwise an exception is + caused. + + CapiWrongState will only be thrown if connection is not up at startup, + not later on. We see a later disconnect as normal event, no error. + + The created file will be saved in the format received by Capi, i.e. as + Structured Fax File (SFF). @author Gernot Hillier */ @@ -44,16 +50,17 @@ class FaxReceive: public CallModule @param conn reference to Connection object @param file name of file to save recorded stream to + @throw CapiWrongState Thrown if connection not up (thrown by base class) @throw CapiExternalError Thrown if we are not in fax mode. */ - FaxReceive(Connection *conn, string file) throw (CapiExternalError); + FaxReceive(Connection *conn, string file) throw (CapiWrongState,CapiExternalError); /** @brief Start file reception, wait for disconnect and stop the reception afterwards - @throw CapiWrongState Thrown when disconnection takes place. @throw CapiExternalError Thrown by Connection::start_file_reception. See there for explanation. + @throw CapiWrongState Thrown if connection is not up at start of transfer (thrown by Connection::start_file_reception) */ - void mainLoop() throw (CapiWrongState, CapiExternalError); + void mainLoop() throw (CapiWrongState,CapiExternalError); /** @brief finish main loop if file is completely received */ @@ -68,8 +75,13 @@ class FaxReceive: public CallModule /* History $Log: faxreceive.h,v $ -Revision 1.1 2003/02/19 08:19:53 gernot -Initial revision +Revision 1.2 2003/12/28 15:00:35 gernot +* rework of exception handling stuff; many modules were not + declaring thrown exceptions correctly any more after the + re-structuring to not throw exceptions on any disconnect + +Revision 1.1.1.1 2003/02/19 08:19:53 gernot +initial checkin of 0.4 Revision 1.11 2002/12/13 11:47:40 ghillie - added comment about fax polling diff --git a/src/modules/faxsend.cpp b/src/modules/faxsend.cpp index cdc0eaa..12e16e0 100644 --- a/src/modules/faxsend.cpp +++ b/src/modules/faxsend.cpp @@ -2,7 +2,7 @@ @brief Contains FaxSend - Call Module for sending an analog fax (group 3) @author Gernot Hillier - $Revision: 1.1 $ + $Revision: 1.2 $ */ /*************************************************************************** @@ -18,7 +18,7 @@ #include "faxsend.h" -FaxSend::FaxSend(Connection *conn, string file) throw (CapiExternalError) +FaxSend::FaxSend(Connection *conn, string file) throw (CapiWrongState,CapiExternalError) :CallModule(conn),file(file) { if (conn->getService()!=Connection::FAXG3) @@ -27,7 +27,7 @@ FaxSend::FaxSend(Connection *conn, string file) throw (CapiExternalError) void -FaxSend::mainLoop() throw (CapiWrongState, CapiExternalError, CapiMsgError) +FaxSend::mainLoop() throw (CapiWrongState,CapiExternalError,CapiMsgError) { conn->start_file_transmission(file); CallModule::mainLoop(); @@ -43,8 +43,13 @@ FaxSend::transmissionComplete() /* History $Log: faxsend.cpp,v $ -Revision 1.1 2003/02/19 08:19:53 gernot -Initial revision +Revision 1.2 2003/12/28 15:00:35 gernot +* rework of exception handling stuff; many modules were not + declaring thrown exceptions correctly any more after the + re-structuring to not throw exceptions on any disconnect + +Revision 1.1.1.1 2003/02/19 08:19:53 gernot +initial checkin of 0.4 Revision 1.2 2003/01/19 16:50:27 ghillie - removed severity in exceptions. No FATAL-automatic-exit any more. diff --git a/src/modules/faxsend.h b/src/modules/faxsend.h index 1867105..6b640f6 100644 --- a/src/modules/faxsend.h +++ b/src/modules/faxsend.h @@ -2,7 +2,7 @@ @brief Contains FaxSend - Call Module for sending an analog fax (group 3) @author Gernot Hillier - $Revision: 1.1 $ + $Revision: 1.2 $ */ /*************************************************************************** @@ -26,14 +26,20 @@ using namespace std; /** @brief Call Module for sending an analog fax (group 3). - This module handles the send of an analog fax (fax group 3). It starts the send and waits for the end of the connection. - + This module handles the send of an analog fax (fax group 3). It starts the + send and waits for the end of the connection. + Fax polling isn't supported yet. - Fax mode must have been established before using this (by connecting in fax mode or switching to fax with Switch2FaxG3), - otherwise an exception is caused. - - The given file must be in the format used by Capi, i.e. Structured Fax File (SFF). + Fax mode must have been established before using this (by connecting in fax + mode or switching to fax with Switch2FaxG3), otherwise an exception is + caused. + + CapiWrongState will only be thrown if connection is not up at startup, + not later on. We see a later disconnect as normal event, no error. + + The given file must be in the format used by Capi, i.e. Structured Fax File + (SFF). @author Gernot Hillier */ @@ -45,16 +51,17 @@ class FaxSend: public CallModule @param conn reference to Connection object @param file name of file to send @throw CapiExternalError Thrown if we are not in fax mode. + @throw CapiWrongState Thrown if connection not up (thrown by base class) */ - FaxSend(Connection *conn, string file) throw (CapiExternalError); + FaxSend(Connection *conn, string file) throw (CapiWrongState,CapiExternalError); /** @brief Start file send, wait for disconnect and stop the send afterwards - @throw CapiWrongState Thrown when disconnection takes place. @throw CapiExternalError Thrown by Connection::start_file_transmission. See there for explanation. @throw CapiMsgError Thrown by Connection::start_file_transmission. See there for explanation. + @throw CapiWrongState Thrown if connection is not up at start of transfer (thrown by Connection::start_file_transmission) */ - void mainLoop() throw (CapiWrongState, CapiExternalError, CapiMsgError); + void mainLoop() throw (CapiWrongState,CapiExternalError, CapiMsgError); /** @brief finish main loop if file is completely sent */ @@ -69,8 +76,13 @@ class FaxSend: public CallModule /* History $Log: faxsend.h,v $ -Revision 1.1 2003/02/19 08:19:53 gernot -Initial revision +Revision 1.2 2003/12/28 15:00:35 gernot +* rework of exception handling stuff; many modules were not + declaring thrown exceptions correctly any more after the + re-structuring to not throw exceptions on any disconnect + +Revision 1.1.1.1 2003/02/19 08:19:53 gernot +initial checkin of 0.4 Revision 1.1 2002/12/13 11:44:34 ghillie added support for fax send diff --git a/src/modules/readDTMF.cpp b/src/modules/readDTMF.cpp index b1fee98..af5d07b 100644 --- a/src/modules/readDTMF.cpp +++ b/src/modules/readDTMF.cpp @@ -2,7 +2,7 @@ @brief Contains ReadDTMF - Call Module for waiting for DTMF signals @author Gernot Hillier - $Revision: 1.2 $ + $Revision: 1.3 $ */ /*************************************************************************** @@ -17,16 +17,14 @@ #include "../backend/connection.h" #include "readDTMF.h" -ReadDTMF::ReadDTMF(Connection *conn, int timeout, int min_digits, int max_digits) +ReadDTMF::ReadDTMF(Connection *conn, int timeout, int min_digits, int max_digits) throw (CapiWrongState) :CallModule(conn, timeout, false),min_digits(min_digits),max_digits(max_digits) { - if (conn->getState()!=Connection::UP) - throw CapiWrongState("Disconnection occured.","ReadDTMF::ReadDTMF()"); digit_count=conn->getDTMF().size(); } void -ReadDTMF::mainLoop() throw (CapiWrongState) +ReadDTMF::mainLoop() throw () { if (!max_digits || (digit_count < max_digits)) { do { @@ -64,6 +62,11 @@ ReadDTMF::callDisconnectedLogical() /* History $Log: readDTMF.cpp,v $ +Revision 1.3 2003/12/28 15:00:35 gernot +* rework of exception handling stuff; many modules were not + declaring thrown exceptions correctly any more after the + re-structuring to not throw exceptions on any disconnect + Revision 1.2 2003/10/03 14:56:40 gernot - partly implementation of a bigger semantic change: don't throw call finished exceptions in normal operation any longer; i.e. we only diff --git a/src/modules/readDTMF.h b/src/modules/readDTMF.h index 7a66a29..dd73ab1 100644 --- a/src/modules/readDTMF.h +++ b/src/modules/readDTMF.h @@ -2,7 +2,7 @@ @brief Contains ReadDTMF - Call Module for waiting for DTMF signals @author Gernot Hillier - $Revision: 1.2 $ + $Revision: 1.3 $ */ /*************************************************************************** @@ -23,11 +23,15 @@ class Connection; /** @brief Call Module for waiting for DTMF signals - This module allows the user to specify how much DTMF digits he wants to read and how long to - wait for them. It doesn't do the actual read, just waits for the given conditions to be fulfilled. + This module allows the user to specify how much DTMF digits he wants to + read and how long to wait for them. It doesn't do the actual read, just + waits for the given conditions to be fulfilled. - To use it, create an object and call mainLoop(). After mainLoop() finished, call - Connection::getDTMF() to read the received signals. + To use it, create an object and call mainLoop(). After mainLoop() finished, + call Connection::getDTMF() to read the received signals. + + CapiWrongState will only be thrown if connection is not up at startup, + not later on. We see a later disconnect as normal event, no error. @author Gernot Hillier @@ -35,25 +39,24 @@ class Connection; class ReadDTMF: public CallModule { public: - /** @brief Constructor. Create Object and read the current digit count from Connection. + /** @brief Constructor. Create Object and read the current digit count from Connection. - @param conn reference to Connection object + @param conn reference to Connection object @param timeout timeout in seconds after which reading is terminated (only terminates when min_digits are reached!), restarts after each digit @param min_digits minimum number of digits which must be read in ANY case without respect to timout. Only set to value >0 if you're sure the user will input a digit. @param max_digits maximum number of digits to read, we abort immediately if this number is reached (0=infinite, only timeout counts) + @throw CapiWrongState Thrown if connection not up (thrown by base class) */ - ReadDTMF(Connection *conn, int timeout, int min_digits, int max_digits); + ReadDTMF(Connection *conn, int timeout, int min_digits, int max_digits) throw (CapiWrongState); - /** @brief mainLoop: Waits until the given conditions (see constructor) have been fulfilled + /** @brief mainLoop: Waits until the given conditions (see constructor) have been fulfilled The module will finish if one of these conditions are true: - max_digits is fulfilled - timeout was reached AND min_digits is fulfilled - - @throw CapiWrongState Thrown if disconnection is recognized */ - void mainLoop() throw (CapiWrongState); + void mainLoop() throw (); /** @brief finish if max_digits is reached, otherwise restart timeout when DTMF signal is received */ @@ -87,6 +90,11 @@ class ReadDTMF: public CallModule /* History $Log: readDTMF.h,v $ +Revision 1.3 2003/12/28 15:00:35 gernot +* rework of exception handling stuff; many modules were not + declaring thrown exceptions correctly any more after the + re-structuring to not throw exceptions on any disconnect + Revision 1.2 2003/10/03 14:56:40 gernot - partly implementation of a bigger semantic change: don't throw call finished exceptions in normal operation any longer; i.e. we only diff --git a/src/modules/switch2faxG3.cpp b/src/modules/switch2faxG3.cpp index f093740..55f094e 100644 --- a/src/modules/switch2faxG3.cpp +++ b/src/modules/switch2faxG3.cpp @@ -2,7 +2,7 @@ @brief Contains Switch2FaxG3 - Call Module for switching to FAXG3 service from another one. @author Gernot Hillier - $Revision: 1.2 $ + $Revision: 1.3 $ */ /*************************************************************************** @@ -17,7 +17,7 @@ #include "../backend/connection.h" #include "switch2faxG3.h" -Switch2FaxG3::Switch2FaxG3(Connection *conn_in, string faxStationID, string faxHeadline) +Switch2FaxG3::Switch2FaxG3(Connection *conn_in, string faxStationID, string faxHeadline) throw (CapiWrongState) :CallModule(conn_in), faxStationID(faxStationID), faxHeadline(faxHeadline) {} @@ -48,6 +48,11 @@ Switch2FaxG3::callConnected() /* History $Log: switch2faxG3.cpp,v $ +Revision 1.3 2003/12/28 15:00:35 gernot +* rework of exception handling stuff; many modules were not + declaring thrown exceptions correctly any more after the + re-structuring to not throw exceptions on any disconnect + Revision 1.2 2003/10/03 14:56:40 gernot - partly implementation of a bigger semantic change: don't throw call finished exceptions in normal operation any longer; i.e. we only diff --git a/src/modules/switch2faxG3.h b/src/modules/switch2faxG3.h index dc5dfc9..06915cb 100644 --- a/src/modules/switch2faxG3.h +++ b/src/modules/switch2faxG3.h @@ -2,7 +2,7 @@ @brief Contains Switch2FaxG3 - Call Module for switching to FAXG3 service from another one. @author Gernot Hillier - $Revision: 1.1 $ + $Revision: 1.2 $ */ /*************************************************************************** @@ -32,32 +32,35 @@ using namespace std; - wait for completion of disconnect - call Connection::changeProtocol() to switch to faxG3 - wait for logical connection to re-establish + + We throw CapiWrongState whenever disconnection occurs. */ class Switch2FaxG3: public CallModule { public: - /** @brief Constructor. Create object. + /** @brief Constructor. Create object. - @param conn reference to Connection object + @param conn reference to Connection object @param faxStationID fax station ID to use @param faxHeadline fax headline to use - */ - Switch2FaxG3(Connection *conn, string faxStationID, string faxHeadline); + @throw CapiWrongState Thrown if connection not up (thrown by base class) + */ + Switch2FaxG3(Connection *conn, string faxStationID, string faxHeadline) throw (CapiWrongState); - /** @brief Do all needed steps (disconnect logical, wait, switch to fax, wait). - - @throw CapiWrongState Thrown by CallModule::mainLoop, Connection::changeProtocol + /** @brief Do all needed steps (disconnect logical, wait, switch to fax, wait). + + @throw CapiWrongState Thrown by Connection::changeProtocol @throw CapiExternalError Thrown by Connection::changeProtocol @throw CapiMsgError Thrown by Connection::changeProtocol, Connection::disconnectCall - */ + */ void mainLoop() throw (CapiWrongState, CapiExternalError, CapiMsgError); /** @brief Finish first wait if the logical disconnection succeeded. - */ + */ void callDisconnectedLogical(); - /** @brief Finish second wait if logical connection has been re-established - */ + /** @brief Finish second wait if logical connection has been re-established + */ void callConnected(); @@ -71,8 +74,13 @@ class Switch2FaxG3: public CallModule /* History $Log: switch2faxG3.h,v $ -Revision 1.1 2003/02/19 08:19:53 gernot -Initial revision +Revision 1.2 2003/12/28 15:00:35 gernot +* rework of exception handling stuff; many modules were not + declaring thrown exceptions correctly any more after the + re-structuring to not throw exceptions on any disconnect + +Revision 1.1.1.1 2003/02/19 08:19:53 gernot +initial checkin of 0.4 Revision 1.3 2002/12/02 12:32:54 ghillie renamed Connection::SPEECH to Connection::VOICE