1 #include <lib/base/eerror.h>
2 #include <lib/base/object.h>
3 #include <lib/base/ebase.h>
5 #include <lib/service/servicemp3.h>
6 #include <lib/service/service.h>
7 #include <lib/base/init_num.h>
8 #include <lib/base/init.h>
12 eServiceFactoryMP3::eServiceFactoryMP3(): ref(0)
14 ePtr<eServiceCenter> sc;
16 eServiceCenter::getInstance(sc);
18 sc->addServiceFactory(eServiceFactoryMP3::id, this);
21 eServiceFactoryMP3::~eServiceFactoryMP3()
23 ePtr<eServiceCenter> sc;
25 eServiceCenter::getInstance(sc);
27 sc->removeServiceFactory(eServiceFactoryMP3::id);
30 DEFINE_REF(eServiceFactoryMP3)
33 RESULT eServiceFactoryMP3::play(const eServiceReference &ref, ePtr<iPlayableService> &ptr)
36 ptr = new eServiceMP3(ref.path.c_str());
40 RESULT eServiceFactoryMP3::record(const eServiceReference &ref, ePtr<iRecordableService> &ptr)
46 RESULT eServiceFactoryMP3::list(const eServiceReference &, ePtr<iListableService> &ptr)
55 void eServiceMP3::test_end()
57 eDebug("end of mp3!");
61 eServiceMP3::eServiceMP3(const char *filename): ref(0), filename(filename), test(eApp)
66 eServiceMP3::~eServiceMP3()
68 if (m_state == stRunning)
72 DEFINE_REF(eServiceMP3);
74 RESULT eServiceMP3::connectEvent(const Slot2<void,iPlayableService*,int> &event, ePtr<eConnection> &connection)
76 connection = new eConnection(m_event.connect(event));
80 RESULT eServiceMP3::start()
82 assert(m_state == stIdle);
86 printf("mp3 starts\n");
87 printf("MP3: %s start\n", filename.c_str());
89 CONNECT(test.timeout, eServiceMP3::test_end);
90 m_event(this, evStart);
94 RESULT eServiceMP3::stop()
96 assert(m_state != stIdle);
97 if (m_state == stStopped)
100 printf("MP3: %s stop\n", filename.c_str());
102 m_event(this, evEnd);
106 RESULT eServiceMP3::getIPausableService(ePtr<iPauseableService> &ptr) { ptr=this; return 0; }
109 RESULT eServiceMP3::pause() { printf("mp3 pauses!\n"); return 0; }
110 RESULT eServiceMP3::unpause() { printf("mp3 unpauses!\n"); return 0; }
112 RESULT eServiceMP3::getIServiceInformation(ePtr<iServiceInformation>&) { return -1; }
115 eAutoInitP0<eServiceFactoryMP3> init_eServiceFactoryMP3(eAutoInitNumbers::service+1, "eServiceFactoryMP3");