diff options
Diffstat (limited to 'p2pvr/daemon/recorder.h')
-rw-r--r-- | p2pvr/daemon/recorder.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/p2pvr/daemon/recorder.h b/p2pvr/daemon/recorder.h new file mode 100644 index 0000000..78c604b --- /dev/null +++ b/p2pvr/daemon/recorder.h @@ -0,0 +1,51 @@ +#ifndef RECORDER_H +#define RECORDER_H + +#include <IceUtil/Timer.h> +#include <Ice/ObjectAdapter.h> +#include <options.h> +#include <p2pvr.h> +#include <mutex> +#include "serviceStreamer.h" + +class Recorder : public P2PVR::Recorder { + public: + typedef std::vector<IceUtil::TimerTaskPtr> Pendings; + + class Current { + public: + P2PVR::RawDataClientPrx muxer; + P2PVR::RawDataClientPrx store; + ServiceStreamerPtr stream; + P2PVR::SchedulePtr schedule; + DVBSI::ServicePtr service; + DVBSI::EventPtr event; + IceUtil::TimerTaskPtr stopTimer; + }; + typedef boost::shared_ptr<Current> CurrentPtr; + typedef std::set<CurrentPtr> Currents; + + Recorder(Ice::ObjectAdapterPtr a, IceUtil::TimerPtr); + + void RefreshSchedules(const Ice::Current &); + + INITOPTIONS; + + private: + void StartRecordings(); + void StartRecording(P2PVR::SchedulePtr schedule, DVBSI::ServicePtr service, DVBSI::EventPtr event); + void StopRecording(CurrentPtr); + + Ice::ObjectAdapterPtr adapter; + IceUtil::TimerPtr timer; + + Currents currentRecordings; + Pendings pendingRecordings; + std::mutex lock; + + static std::string extension; + static std::string muxerCommand; +}; + +#endif + |