summaryrefslogtreecommitdiff
path: root/p2pvr/daemon/recorder.h
diff options
context:
space:
mode:
Diffstat (limited to 'p2pvr/daemon/recorder.h')
-rw-r--r--p2pvr/daemon/recorder.h51
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
+