summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--p2pvr/daemon/muxedFileSink.cpp128
-rw-r--r--p2pvr/daemon/muxedFileSink.h32
-rw-r--r--p2pvr/daemon/sql/schedules/pendingRecord.sql13
-rw-r--r--p2pvr/dvb/unittests/Jamfile.jam1
-rw-r--r--p2pvr/dvb/unittests/bindDataHandler.cpp (renamed from p2pvr/dvb/bindDataHandler.cpp)0
-rw-r--r--p2pvr/dvb/unittests/bindDataHandler.h (renamed from p2pvr/dvb/bindDataHandler.h)0
-rw-r--r--p2pvr/lib/bindSiParserHandler.h (renamed from p2pvr/dvb/bindSiParserHandler.h)0
-rw-r--r--p2pvr/lib/fileSink.cpp28
-rw-r--r--p2pvr/lib/fileSink.h24
-rw-r--r--p2pvr/lib/serviceStreamer.h1
-rw-r--r--p2pvr/lib/serviceStreamerCore.h2
11 files changed, 3 insertions, 226 deletions
diff --git a/p2pvr/daemon/muxedFileSink.cpp b/p2pvr/daemon/muxedFileSink.cpp
deleted file mode 100644
index ff431bc..0000000
--- a/p2pvr/daemon/muxedFileSink.cpp
+++ /dev/null
@@ -1,128 +0,0 @@
-#include "muxedFileSink.h"
-#include <logger.h>
-#include <poll.h>
-#include <sys/wait.h>
-#include <fcntl.h>
-#include <boost/algorithm/string/split.hpp>
-#include <boost/algorithm/string/classification.hpp>
-
-namespace P2PVR {
-class MuxerFailure : public P2PVR::DataHandlingException { };
-
-MuxedFileSink::MuxedFileSink(const boost::filesystem::path & t, const std::string & cmd) :
- logger(LOGMANAGER()->getLogger<MuxedFileSink>())
-{
- std::vector<std::string> params;
- boost::algorithm::split(params, cmd, isspace, boost::algorithm::token_compress_on);
- for (auto & c : params) {
- if (c == "${TARGET}") {
- c = t.string();
- }
- }
- fds = ProcessPipesPtr(new AdHoc::System::ProcessPipes(params, true, true, true));
- fcntl(fds->fdIn(), F_SETFL, O_NONBLOCK);
- logger->messagebf(LOG::INFO, "Muxer::%p started with command '%s' for %s", this, cmd, t);
-}
-
-MuxedFileSink::~MuxedFileSink()
-{
- close(fds->fdIn());
- int status;
- while (waitpid(fds->pid(), &status, WNOHANG) == 0) {
- ReadMuxer(5);
- }
- logger->messagebf(LOG::INFO, "Muxer::%p finished with status %d", this, status);
-}
-
-bool
-MuxedFileSink::NewData(const P2PVR::Data & data, const Ice::Current &)
-{
- std::lock_guard<std::mutex> g(lock);
- for (size_t off = 0; off < data.size(); ) {
- // Read output until input wouldn't block
- if (ReadWaiting())
- return true;
- // Send some input
- auto w = write(fds->fdIn(), &data[off], data.size() - off);
- if (w == -1 && errno != EAGAIN && errno != EWOULDBLOCK) {
- logger->messagebf(LOG::ERR, "Muxer::%p write failed (%d:%s)", this, errno, strerror(errno));
- throw MuxerFailure();
- }
- off += w;
- }
- // Read anything that's come out
- return ReadAvailable();
-}
-
-bool
-MuxedFileSink::ReadWaiting() const
-{
- pollfd fd = { fds->fdIn(), POLLOUT, 0 };
- while (true) {
- auto p = poll(&fd, 1, 0);
- if (p < 0) {
- // error
- throw MuxerFailure();
- }
- else if (p == 0) {
- // write would block
- if (ReadMuxer(1)) return true;
- }
- else {
- // write would not block
- if (ReadMuxer(0)) return true;
- break;
- }
- }
- return false;
-}
-
-bool
-MuxedFileSink::ReadAvailable() const
-{
- return ReadMuxer(0);
-}
-
-bool
-MuxedFileSink::ReadMuxer(int waitTime) const
-{
- pollfd fd[2] = { { fds->fdOut(), POLLIN | POLLHUP, 0 }, { fds->fdError(), POLLIN | POLLHUP, 0 } };
- while (true) {
- auto p = poll(fd, 2, waitTime);
- if (p < 0) {
- // error
- throw MuxerFailure();
- }
- else if (p == 0) {
- // all ok
- return false;
- }
- else {
- bool closed = false;
- for (int i = 0; i < 2; ++i) {
- if (fd[i].revents & (POLLIN | POLLHUP)) {
- P2PVR::Data buf(BUFSIZ);
- auto len = read(fd[i].fd, &buf.front(), buf.size());
- if (len == 0) {
- // ok, proc exit
- closed = true;
- }
- if (len < 0) {
- // error
- throw MuxerFailure();
- }
- buf.resize(len);
- std::vector<std::string> lines;
- boost::algorithm::split(lines, buf, boost::algorithm::is_any_of("\r\n\f"), boost::algorithm::token_compress_on);
- for (const auto & line : lines) {
- if (line.empty()) continue;
- logger->messagebf(LOG::INFO, "Muxer::%p > %s", this, line);
- }
- }
- }
- if (closed) return true;
- }
- }
-}
-}
-
diff --git a/p2pvr/daemon/muxedFileSink.h b/p2pvr/daemon/muxedFileSink.h
deleted file mode 100644
index d91e106..0000000
--- a/p2pvr/daemon/muxedFileSink.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef MUXEDFILESINK_H
-#define MUXEDFILESINK_H
-
-#include <dvb.h>
-#include <mutex>
-#include <boost/filesystem/path.hpp>
-#include <boost/shared_ptr.hpp>
-#include <processPipes.h>
-#include <logger.h>
-
-namespace P2PVR {
-class MuxedFileSink : public P2PVR::RawDataClient {
- public:
- MuxedFileSink(const boost::filesystem::path & target, const std::string & cmd);
- ~MuxedFileSink();
-
- bool NewData(const P2PVR::Data &, const Ice::Current &);
-
- private:
- bool ReadWaiting() const;
- bool ReadAvailable() const;
- bool ReadMuxer(int wait) const;
- typedef boost::shared_ptr<AdHoc::System::ProcessPipes> ProcessPipesPtr;
- ProcessPipesPtr fds;
- mutable std::mutex lock;
-
- IceTray::Logging::LoggerPtr logger;
-};
-}
-
-#endif
-
diff --git a/p2pvr/daemon/sql/schedules/pendingRecord.sql b/p2pvr/daemon/sql/schedules/pendingRecord.sql
deleted file mode 100644
index ba4d7d8..0000000
--- a/p2pvr/daemon/sql/schedules/pendingRecord.sql
+++ /dev/null
@@ -1,13 +0,0 @@
-select *
-from record r, events e, schedules s
-where r.serviceid = e.serviceid
-and r.eventid = e.eventid
-and /*r.scheduleid*/ 161 = s.scheduleid
-and r.recordstatus = 1
-and r.recordingstatus = 0
-and e.starttime - s.early - interval '3minutes' < now()
-order by e.starttime - s.early
-
-;
-select *
-from schedules \ No newline at end of file
diff --git a/p2pvr/dvb/unittests/Jamfile.jam b/p2pvr/dvb/unittests/Jamfile.jam
index 616be7b..c3a75ed 100644
--- a/p2pvr/dvb/unittests/Jamfile.jam
+++ b/p2pvr/dvb/unittests/Jamfile.jam
@@ -25,6 +25,7 @@ exe createSamples :
exe createBroadcast :
createBroadcast.cpp
+ bindDataHandler.cpp
:
<define>BOOST_TEST_DYN_LINK
<library>..//p2pvrdvb
diff --git a/p2pvr/dvb/bindDataHandler.cpp b/p2pvr/dvb/unittests/bindDataHandler.cpp
index 7b25b91..7b25b91 100644
--- a/p2pvr/dvb/bindDataHandler.cpp
+++ b/p2pvr/dvb/unittests/bindDataHandler.cpp
diff --git a/p2pvr/dvb/bindDataHandler.h b/p2pvr/dvb/unittests/bindDataHandler.h
index acbe6df..acbe6df 100644
--- a/p2pvr/dvb/bindDataHandler.h
+++ b/p2pvr/dvb/unittests/bindDataHandler.h
diff --git a/p2pvr/dvb/bindSiParserHandler.h b/p2pvr/lib/bindSiParserHandler.h
index d5fadf7..d5fadf7 100644
--- a/p2pvr/dvb/bindSiParserHandler.h
+++ b/p2pvr/lib/bindSiParserHandler.h
diff --git a/p2pvr/lib/fileSink.cpp b/p2pvr/lib/fileSink.cpp
deleted file mode 100644
index 295d550..0000000
--- a/p2pvr/lib/fileSink.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-#include "fileSink.h"
-
-namespace P2PVR {
-FileSink::FileSink(const boost::filesystem::path & path) :
- file(fopen(path.string().c_str(), "w"))
-{
-}
-
-FileSink::FileSink(int fd) :
- file(fdopen(fd, "w"))
-{
-}
-
-FileSink::~FileSink()
-{
- if (file) {
- fclose(file);
- }
-}
-
-bool
-FileSink::NewData(const Data & data, const Ice::Current &)
-{
- fwrite(&data.front(), data.size(), 1, file);
- return false;
-}
-}
-
diff --git a/p2pvr/lib/fileSink.h b/p2pvr/lib/fileSink.h
deleted file mode 100644
index 840f995..0000000
--- a/p2pvr/lib/fileSink.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef FILESINK_H
-#define FILESINK_H
-
-#include <boost/filesystem/path.hpp>
-#include <stdio.h>
-#include <dvb.h>
-#include <visibility.h>
-
-namespace P2PVR {
-class DLL_PUBLIC FileSink : public RawDataClient {
- public:
- FileSink(const boost::filesystem::path & path);
- FileSink(int fd);
- ~FileSink();
-
- bool NewData(const Data & data, const Ice::Current &);
-
- private:
- FILE * const file;
-};
-}
-
-#endif
-
diff --git a/p2pvr/lib/serviceStreamer.h b/p2pvr/lib/serviceStreamer.h
index bfed89a..17c7850 100644
--- a/p2pvr/lib/serviceStreamer.h
+++ b/p2pvr/lib/serviceStreamer.h
@@ -3,6 +3,7 @@
#include "serviceStreamerCore.h"
#include <visibility.h>
+#include <p2pvr.h>
namespace P2PVR {
class DLL_PUBLIC ServiceStreamer : public ServiceStreamerCore {
diff --git a/p2pvr/lib/serviceStreamerCore.h b/p2pvr/lib/serviceStreamerCore.h
index b53a656..233b8f5 100644
--- a/p2pvr/lib/serviceStreamerCore.h
+++ b/p2pvr/lib/serviceStreamerCore.h
@@ -6,7 +6,7 @@
#include "siParsers/programAssociation.h"
#include "siParsers/programMap.h"
#include "temporaryIceAdapterObject.h"
-#include <p2pvr.h>
+#include <dvbsi.h>
#include <set>
#include <visibility.h>
#include <logger.h>