r3238 - in trunk/libminisip: include/libminisip
include/libminisip/conference include/libminisip/gui
include/libminisip/sip source source/sip
erik at minisip.org
erik at minisip.org
Thu Mar 8 05:33:06 CET 2007
Author: erik
Date: 2007-03-08 05:33:05 +0100 (Thu, 08 Mar 2007)
New Revision: 3238
Modified:
trunk/libminisip/include/libminisip/Minisip.h
trunk/libminisip/include/libminisip/conference/ConfMessageRouter.h
trunk/libminisip/include/libminisip/gui/Gui.h
trunk/libminisip/include/libminisip/sip/SipSoftPhoneConfiguration.h
trunk/libminisip/source/Minisip.cxx
trunk/libminisip/source/sip/SipSoftPhoneConfiguration.cxx
Log:
* libminisip: Break reference loops in libminisip.
Modified: trunk/libminisip/include/libminisip/Minisip.h
===================================================================
--- trunk/libminisip/include/libminisip/Minisip.h 2007-03-08 04:27:01 UTC (rev 3237)
+++ trunk/libminisip/include/libminisip/Minisip.h 2007-03-08 04:33:05 UTC (rev 3238)
@@ -27,7 +27,30 @@
confPath = c;
}
+
+ /**
+ * Tells minisip that it better prepare to be shut down.
+ */
+ int stop();
+
+#if 0
+ /**
+ * Tell the internal worker threads to stop execution.
+ */
+ int kill();
+#endif
+
+ /**
+ * Wait for internal worker threads to exit (this is
+ * normally called after "kill").
+ */
+ int join();
+
+ /**
+ * equal to stop() followed by kill and join()
+ */
int exit();
+
int startSip();
int runGui();
Modified: trunk/libminisip/include/libminisip/conference/ConfMessageRouter.h
===================================================================
--- trunk/libminisip/include/libminisip/conference/ConfMessageRouter.h 2007-03-08 04:27:01 UTC (rev 3237)
+++ trunk/libminisip/include/libminisip/conference/ConfMessageRouter.h 2007-03-08 04:33:05 UTC (rev 3238)
@@ -33,8 +33,9 @@
#include<libminisip/gui/Gui.h>
#include<libminisip/conference/ConferenceControl.h>
#include<libminisip/conference/ConfCallback.h>
-#include<libminisip/sip/SipSoftPhoneConfiguration.h>
+class Gui;
+
class LIBMINISIP_API ConfMessageRouter: //public SipCallback,
//public GuiCallback,
public ConfCallback, public CommandReceiver{
Modified: trunk/libminisip/include/libminisip/gui/Gui.h
===================================================================
--- trunk/libminisip/include/libminisip/gui/Gui.h 2007-03-08 04:27:01 UTC (rev 3237)
+++ trunk/libminisip/include/libminisip/gui/Gui.h 2007-03-08 04:33:05 UTC (rev 3238)
@@ -30,6 +30,7 @@
#include<libmutil/CommandString.h>
#include<libmutil/Thread.h>
#include<libmutil/MessageRouter.h>
+#include<libminisip/conference/ConfMessageRouter.h>
#include<libminisip/gui/LogEntry.h>
Modified: trunk/libminisip/include/libminisip/sip/SipSoftPhoneConfiguration.h
===================================================================
--- trunk/libminisip/include/libminisip/sip/SipSoftPhoneConfiguration.h 2007-03-08 04:27:01 UTC (rev 3237)
+++ trunk/libminisip/include/libminisip/sip/SipSoftPhoneConfiguration.h 2007-03-08 04:33:05 UTC (rev 3238)
@@ -52,6 +52,7 @@
class Socket;
class SoundIO;
class PhoneBook;
+class ConfBackend;
//FIXME: XXX Deep copy needed for for example psk
Modified: trunk/libminisip/source/Minisip.cxx
===================================================================
--- trunk/libminisip/source/Minisip.cxx 2007-03-08 04:27:01 UTC (rev 3237)
+++ trunk/libminisip/source/Minisip.cxx 2007-03-08 04:33:05 UTC (rev 3238)
@@ -257,10 +257,7 @@
Minisip::~Minisip(){
}
-int Minisip::exit(){
- int ret = 1;
- mout << BOLD << "Minisip is Shutting down!!!" << PLAIN << end;
-
+int Minisip::stop(){
if( ! sip.isNull() ) { //it may not be initialized ...
//Send a shutdown command to the sip stack ...
//it will take care of de-registering and closing on-going calls
@@ -268,40 +265,44 @@
SipSMCommand sipcmd(cmdstr, SipSMCommand::dialog_layer, SipSMCommand::dispatcher);
sip->getSipStack()->handleCommand(sipcmd);
sip->stop();
-
-#ifdef DEBUG_OUTPUT
- mout << "Waiting for the SipStack to close ..." << end;
-#endif
+ }
+}
+
+int Minisip::join(){
+ if( ! sip.isNull() ) { //it may not be initialized ...
sip->join();
- sip->getSipStack()->setCallback( NULL );
- sip->getSipStack()->setDefaultDialogCommandHandler( NULL );
+ sip->getSipStack()->free();
sip = NULL;
}
-
gui->setCallback( NULL );
gui->setSipSoftPhoneConfiguration( NULL );
stopDebugger();
-
-/* if( messageRouter){
- mout << "Delete messageRouter" << end;
- delete messageRouter;
- }
-*/
-
+
messageRouter->clear();
messageRouter=NULL;
-
- //phoneConf->sip = NULL;
phoneConf = NULL;
mediaHandler = NULL;
confMessageRouter->setGui(NULL);
confMessageRouter = NULL;
gui = NULL;
+}
+
+
+int Minisip::exit(){
+ int ret = 1;
+ mout << BOLD << "Minisip is Shutting down!!!" << PLAIN << end;
+
+ stop();
+#ifdef DEBUG_OUTPUT
+ mout << "Waiting for the SipStack to close ..." << end;
+#endif
+ join();
+
mout << end << end << BOLD << "Minisip can't wait to see you again! Bye!" << PLAIN << end << end << end;
- return ret;
+ return 1;
}
int Minisip::startSip() {
@@ -406,9 +407,9 @@
#ifdef SCSIM_SUPPORT
- MRef<SmartCardDetector*> scdetect = new SmartCardDetector(*messageRouter);
- messageRouter->addSubsystem("smartcard",*scdetect);
- scdetect->start();
+// MRef<SmartCardDetector*> scdetect = new SmartCardDetector(*messageRouter);
+// messageRouter->addSubsystem("smartcard",*scdetect);
+// scdetect->start();
#endif
/*
Modified: trunk/libminisip/source/sip/SipSoftPhoneConfiguration.cxx
===================================================================
--- trunk/libminisip/source/sip/SipSoftPhoneConfiguration.cxx 2007-03-08 04:27:01 UTC (rev 3237)
+++ trunk/libminisip/source/sip/SipSoftPhoneConfiguration.cxx 2007-03-08 04:33:05 UTC (rev 3238)
@@ -93,6 +93,10 @@
}
SipSoftPhoneConfiguration::~SipSoftPhoneConfiguration(){
+ std::list<MRef<PhoneBook *> >::iterator i;
+ for (i=phonebooks.begin(); i!=phonebooks.end() ; i++){
+ (*i)->free();
+ }
}
void SipSoftPhoneConfiguration::save(){
More information about the Minisip-devel
mailing list