1 #include <lib/service/service.h>
2 #include <lib/base/init_num.h>
3 #include <lib/base/init.h>
5 eServiceReference::eServiceReference(const eString &string)
7 const char *c=string.c_str();
10 if ( sscanf(c, "%d:%d:%x:%x:%x:%x:%x:%x:%x:%x:%n", &type, &flags, &data[0], &data[1], &data[2], &data[3], &data[4], &data[5], &data[6], &data[7], &pathl) < 8 )
12 memset( data, 0, sizeof(data) );
13 eDebug("find old format eServiceReference string");
14 sscanf(c, "%d:%d:%x:%x:%x:%x:%n", &type, &flags, &data[0], &data[1], &data[2], &data[3], &pathl);
21 eString eServiceReference::toString() const
24 ret+=eString().sprintf("%d:", type);
25 ret+=eString().sprintf("%d", flags);
26 for (unsigned int i=0; i<sizeof(data)/sizeof(*data); ++i)
27 ret+=":"+eString().sprintf("%x", data[i]);
33 eServiceCenter *eServiceCenter::instance;
35 eServiceCenter::eServiceCenter()
39 eDebug("settings instance.");
44 eServiceCenter::~eServiceCenter()
48 eDebug("clear instance");
53 DEFINE_REF(eServiceCenter);
55 RESULT eServiceCenter::play(const eServiceReference &ref, ePtr<iPlayableService> &ptr)
57 std::map<int,ePtr<iServiceHandler> >::iterator i = handler.find(ref.type);
58 if (i == handler.end())
63 return i->second->play(ref, ptr);
66 RESULT eServiceCenter::record(const eServiceReference &ref, ePtr<iRecordableService> &ptr)
68 std::map<int,ePtr<iServiceHandler> >::iterator i = handler.find(ref.type);
69 if (i == handler.end())
74 return i->second->record(ref, ptr);
77 RESULT eServiceCenter::list(const eServiceReference &ref, ePtr<iListableService> &ptr)
79 std::map<int,ePtr<iServiceHandler> >::iterator i = handler.find(ref.type);
80 if (i == handler.end())
85 return i->second->list(ref, ptr);
88 RESULT eServiceCenter::addServiceFactory(int id, iServiceHandler *hnd)
90 handler.insert(std::pair<int,ePtr<iServiceHandler> >(id, hnd));
94 RESULT eServiceCenter::removeServiceFactory(int id)
100 eAutoInitPtr<eServiceCenter> init_eServiceCenter(eAutoInitNumbers::service, "eServiceCenter");