diff options
Diffstat (limited to 'lib/service/service.cpp')
| -rw-r--r-- | lib/service/service.cpp | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/lib/service/service.cpp b/lib/service/service.cpp index a044c66a..7721fed7 100644 --- a/lib/service/service.cpp +++ b/lib/service/service.cpp @@ -187,18 +187,38 @@ RESULT eServiceCenter::offlineOperations(const eServiceReference &ref, ePtr<iSer return i->second->offlineOperations(ref, ptr); } -RESULT eServiceCenter::addServiceFactory(int id, iServiceHandler *hnd) +RESULT eServiceCenter::addServiceFactory(int id, iServiceHandler *hnd, std::list<std::string> &extensions) { handler.insert(std::pair<int,ePtr<iServiceHandler> >(id, hnd)); + this->extensions[id]=extensions; return 0; } RESULT eServiceCenter::removeServiceFactory(int id) { handler.erase(id); + extensions.erase(id); return 0; } +int eServiceCenter::getServiceTypeForExtension(const char *str) +{ + for (std::map<int, std::list<std::string> >::iterator sit(extensions.begin()); sit != extensions.end(); ++sit) + { + for (std::list<std::string>::iterator eit(sit->second.begin()); eit != sit->second.end(); ++eit) + { + if (*eit == str) + return sit->first; + } + } + return -1; +} + +int eServiceCenter::getServiceTypeForExtension(const std::string &str) +{ + return getServiceTypeForExtension(str.c_str()); +} + /* default handlers */ RESULT iServiceHandler::info(const eServiceReference &, ePtr<iStaticServiceInformation> &ptr) { |
