aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/service/service.cpp19
-rw-r--r--lib/service/service.h2
2 files changed, 21 insertions, 0 deletions
diff --git a/lib/service/service.cpp b/lib/service/service.cpp
index eb2757ab..8c674c5e 100644
--- a/lib/service/service.cpp
+++ b/lib/service/service.cpp
@@ -201,6 +201,25 @@ RESULT eServiceCenter::removeServiceFactory(int id)
return 0;
}
+RESULT eServiceCenter::addFactoryExtension(int id, const char *extension)
+{
+ std::map<int, std::list<std::string> >::iterator it = extensions.find(id);
+ if (it == extensions.end())
+ return -1;
+ it->second.push_back(extension);
+ return 0;
+}
+
+RESULT eServiceCenter::removeFactoryExtension(int id, const char *extension)
+{
+ std::map<int, std::list<std::string> >::iterator it = extensions.find(id);
+ if (it == extensions.end())
+ return -1;
+ it->second.remove(extension);
+ return 0;
+}
+
+
int eServiceCenter::getServiceTypeForExtension(const char *str)
{
for (std::map<int, std::list<std::string> >::iterator sit(extensions.begin()); sit != extensions.end(); ++sit)
diff --git a/lib/service/service.h b/lib/service/service.h
index 6f6ab980..ffc7d275 100644
--- a/lib/service/service.h
+++ b/lib/service/service.h
@@ -40,6 +40,8 @@ public:
static RESULT getPrivInstance(ePtr<eServiceCenter> &ptr) { ptr = instance; return 0; }
RESULT addServiceFactory(int id, iServiceHandler *hnd, std::list<std::string> &extensions);
RESULT removeServiceFactory(int id);
+ RESULT addFactoryExtension(int id, const char *extension);
+ RESULT removeFactoryExtension(int id, const char *extension);
#endif
static SWIG_VOID(RESULT) getInstance(ePtr<iServiceHandler> &SWIG_NAMED_OUTPUT(ptr)) { ptr = instance; return 0; }
};