#include #include #include #include #include eServiceReference::eServiceReference(const std::string &string) { const char *c=string.c_str(); int pathl=-1; 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 ) { memset( data, 0, sizeof(data) ); eDebug("find old format eServiceReference string"); sscanf(c, "%d:%d:%x:%x:%x:%x:%n", &type, &flags, &data[0], &data[1], &data[2], &data[3], &pathl); } if (pathl) path=c+pathl; } std::string eServiceReference::toString() const { std::string ret; ret += getNum(type); ret += ":"; ret += getNum(flags); for (unsigned int i=0; i &ptr) { std::map >::iterator i = handler.find(ref.type); if (i == handler.end()) { ptr = 0; return -1; } return i->second->play(ref, ptr); } RESULT eServiceCenter::record(const eServiceReference &ref, ePtr &ptr) { std::map >::iterator i = handler.find(ref.type); if (i == handler.end()) { ptr = 0; return -1; } return i->second->record(ref, ptr); } RESULT eServiceCenter::list(const eServiceReference &ref, ePtr &ptr) { std::map >::iterator i = handler.find(ref.type); if (i == handler.end()) { ptr = 0; return -1; } return i->second->list(ref, ptr); } RESULT eServiceCenter::info(const eServiceReference &ref, ePtr &ptr) { std::map >::iterator i = handler.find(ref.type); if (i == handler.end()) { ptr = 0; return -1; } return i->second->info(ref, ptr); } RESULT eServiceCenter::addServiceFactory(int id, iServiceHandler *hnd) { handler.insert(std::pair >(id, hnd)); return 0; } RESULT eServiceCenter::removeServiceFactory(int id) { handler.erase(id); return 0; } /* default handlers */ RESULT iServiceHandler::info(const eServiceReference &, ePtr &ptr) { ptr = 0; return -1; } eAutoInitPtr init_eServiceCenter(eAutoInitNumbers::service, "eServiceCenter");