r3172 - in trunk/libminisip: . include/libminisip/configbackend source/configbackend

erik at minisip.org erik at minisip.org
Thu Feb 1 10:49:24 CET 2007


Author: erik
Date: 2007-02-01 10:49:23 +0100 (Thu, 01 Feb 2007)
New Revision: 3172

Modified:
   trunk/libminisip/Makefile.am
   trunk/libminisip/include/libminisip/configbackend/ConfBackend.h
   trunk/libminisip/source/configbackend/ConfBackend.cxx
   trunk/libminisip/source/configbackend/GConfBackend.cxx
   trunk/libminisip/source/configbackend/GConfBackend.h
   trunk/libminisip/source/configbackend/MXmlConfBackend.cxx
   trunk/libminisip/source/configbackend/MXmlConfBackend.h
   trunk/libminisip/source/configbackend/OnlineMXmlConfBackend.cxx
   trunk/libminisip/source/configbackend/OnlineMXmlConfBackend.h
Log:

 * A gconf configuration backend was used if it existed, and there was no
   way to tell minisip that this time the application was launched, we 
   should use another configuration file. There was also no way to 
   give a configuration backend a parameter such as
     - What mxml file to use
     - What ip/port to use for online configuration

   This commit allows you to send a string to the createBackend(...) method
   that specifies
     -> what kind of backend to use
     -> an argument that is passed to that backend.

   Example:
       be = ConfigBackend::createBackend(gui, "mxml:/path/to/file");
    



Modified: trunk/libminisip/Makefile.am
===================================================================
--- trunk/libminisip/Makefile.am	2007-02-01 09:41:22 UTC (rev 3171)
+++ trunk/libminisip/Makefile.am	2007-02-01 09:49:23 UTC (rev 3172)
@@ -398,6 +398,7 @@
 
 
 libminisip_la_SOURCES = source/Minisip.cxx \
+			source/MinisipExceptions.cxx \
 			$(libonlineconf_src) \
 			$(libaec_src) \
 			$(libsip_src) \

Modified: trunk/libminisip/include/libminisip/configbackend/ConfBackend.h
===================================================================
--- trunk/libminisip/include/libminisip/configbackend/ConfBackend.h	2007-02-01 09:41:22 UTC (rev 3171)
+++ trunk/libminisip/include/libminisip/configbackend/ConfBackend.h	2007-02-01 09:49:23 UTC (rev 3172)
@@ -73,8 +73,12 @@
 		 * 		This is for example the case of the
 		 * 		configuration is stored on server instead
 		 * 		of on the local device.
+		 * @param argument  A configuration backend might want
+		 *		to be started with an argument. An example
+		 *		is a path to a file containing the 
+		 *		configuration data.
 		 */
-		virtual MRef<ConfBackend *> createBackend(MRef<Gui*> gui)const=0;
+		virtual MRef<ConfBackend *> createBackend(MRef<Gui*> gui, const std::string& argument=NULL )const=0;
 
 		virtual std::string getPluginType()const{ return "Config"; }
 

Modified: trunk/libminisip/source/configbackend/ConfBackend.cxx
===================================================================
--- trunk/libminisip/source/configbackend/ConfBackend.cxx	2007-02-01 09:41:22 UTC (rev 3171)
+++ trunk/libminisip/source/configbackend/ConfBackend.cxx	2007-02-01 09:49:23 UTC (rev 3172)
@@ -30,6 +30,12 @@
 using namespace std;
 
 MRef<ConfBackend *> ConfigRegistry::createBackend( MRef<Gui*> gui, std::string backendName ){
+	string backendArgument;
+	if (backendName.find(':')!=string::npos){
+		backendArgument = backendName.substr(backendName.find(':')+1);
+		backendName = backendName.substr(0, backendName.find(':') );
+		
+	}
 						     
 	try{
 		MRef<MPlugin *> plugin;
@@ -60,7 +66,7 @@
 			return NULL;
 		}
 
-		return config->createBackend( gui );
+		return config->createBackend( gui, backendArgument );
 	}
 	catch( ConfBackendException & ){
 		return NULL;

Modified: trunk/libminisip/source/configbackend/GConfBackend.cxx
===================================================================
--- trunk/libminisip/source/configbackend/GConfBackend.cxx	2007-02-01 09:41:22 UTC (rev 3171)
+++ trunk/libminisip/source/configbackend/GConfBackend.cxx	2007-02-01 09:49:23 UTC (rev 3172)
@@ -243,7 +243,7 @@
 GConfigPlugin::GConfigPlugin( MRef<Library *> lib ): ConfigPlugin( lib ){
 }
 
-MRef<ConfBackend *> GConfigPlugin::createBackend(MRef<Gui*> gui)const{
+MRef<ConfBackend *> GConfigPlugin::createBackend(MRef<Gui*> gui, const string & /*arg*/)const{
 	return new GConfBackend();
 }
 

Modified: trunk/libminisip/source/configbackend/GConfBackend.h
===================================================================
--- trunk/libminisip/source/configbackend/GConfBackend.h	2007-02-01 09:41:22 UTC (rev 3171)
+++ trunk/libminisip/source/configbackend/GConfBackend.h	2007-02-01 09:49:23 UTC (rev 3172)
@@ -73,8 +73,9 @@
 		 * 		This is for example the case of the
 		 * 		configuration is stored on server instead
 		 * 		of on the local device.
+		 * @param arg	Not used by this backend.
 		 */
-		virtual MRef<ConfBackend *> createBackend(MRef<Gui*> gui)const;
+		virtual MRef<ConfBackend *> createBackend(MRef<Gui*> gui, const std::string &arg)const;
 
 		virtual std::string getMemObjectType() const { return "GConfBackend"; }
 

Modified: trunk/libminisip/source/configbackend/MXmlConfBackend.cxx
===================================================================
--- trunk/libminisip/source/configbackend/MXmlConfBackend.cxx	2007-02-01 09:41:22 UTC (rev 3171)
+++ trunk/libminisip/source/configbackend/MXmlConfBackend.cxx	2007-02-01 09:49:23 UTC (rev 3172)
@@ -70,9 +70,12 @@
 	return tmp;
 }
 
-MXmlConfBackend::MXmlConfBackend(){
+MXmlConfBackend::MXmlConfBackend( const string& path ){
 
-	fileName = getDefaultConfigFilename();
+	if (path.size()>0)
+		fileName = path;
+	else
+		fileName = getDefaultConfigFilename();
 
 	try{
 		parser = new XMLFileParser( fileName );
@@ -159,8 +162,8 @@
 MXmlConfigPlugin::MXmlConfigPlugin( MRef<Library *> lib ): ConfigPlugin( lib ){
 }
 
-MRef<ConfBackend *> MXmlConfigPlugin::createBackend(MRef<Gui*> gui)const{
-	return new MXmlConfBackend();
+MRef<ConfBackend *> MXmlConfigPlugin::createBackend(MRef<Gui*> gui, const string &configPath)const{
+	return new MXmlConfBackend(configPath);
 }
 
 std::string MXmlConfigPlugin::getName()const{

Modified: trunk/libminisip/source/configbackend/MXmlConfBackend.h
===================================================================
--- trunk/libminisip/source/configbackend/MXmlConfBackend.h	2007-02-01 09:41:22 UTC (rev 3171)
+++ trunk/libminisip/source/configbackend/MXmlConfBackend.h	2007-02-01 09:49:23 UTC (rev 3172)
@@ -31,7 +31,7 @@
 
 class MXmlConfBackend : public ConfBackend {
 	public:
-		MXmlConfBackend();
+		MXmlConfBackend(const std::string &path);
 		~MXmlConfBackend();
 		virtual void save( const std::string &key, 
 				const std::string &value );
@@ -67,7 +67,7 @@
 		 * 		configuration is stored on server instead
 		 * 		of on the local device.
 		 */
-		virtual MRef<ConfBackend *> createBackend(MRef<Gui*> gui)const;
+		virtual MRef<ConfBackend *> createBackend(MRef<Gui*> gui, const std::string &configFilePath=NULL)const;
 
 		virtual std::string getMemObjectType() const { return "MXmlConfBackend"; }
 

Modified: trunk/libminisip/source/configbackend/OnlineMXmlConfBackend.cxx
===================================================================
--- trunk/libminisip/source/configbackend/OnlineMXmlConfBackend.cxx	2007-02-01 09:41:22 UTC (rev 3171)
+++ trunk/libminisip/source/configbackend/OnlineMXmlConfBackend.cxx	2007-02-01 09:49:23 UTC (rev 3172)
@@ -255,7 +255,7 @@
 OnlineMXmlConfigPlugin::OnlineMXmlConfigPlugin( MRef<Library *> lib ): ConfigPlugin( lib ){
 }
 
-MRef<ConfBackend *> OnlineMXmlConfigPlugin::createBackend(MRef<Gui*> gui)const{
+MRef<ConfBackend *> OnlineMXmlConfigPlugin::createBackend(MRef<Gui*> gui, const string &)const{
 	return new OnlineMXmlConfBackend();
 }
 

Modified: trunk/libminisip/source/configbackend/OnlineMXmlConfBackend.h
===================================================================
--- trunk/libminisip/source/configbackend/OnlineMXmlConfBackend.h	2007-02-01 09:41:22 UTC (rev 3171)
+++ trunk/libminisip/source/configbackend/OnlineMXmlConfBackend.h	2007-02-01 09:49:23 UTC (rev 3172)
@@ -74,8 +74,9 @@
 		 * 		This is for example the case of the
 		 * 		configuration is stored on server instead
 		 * 		of on the local device.
+		 * @param arg	Currently not used by this backend.
 		 */
-		virtual MRef<ConfBackend *> createBackend(MRef<Gui*> gui)const;
+		virtual MRef<ConfBackend *> createBackend(MRef<Gui*> gui, const std::string &arg=NULL)const;
 
 		virtual std::string getMemObjectType() const { return "OnlineMXmlConfigPlugin"; }
 



More information about the Minisip-devel mailing list