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