diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2015-09-03 00:29:40 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2015-09-03 00:29:40 +0100 |
commit | 2a551c907b3fd0c282bce46970066cfd402a594c (patch) | |
tree | c901e9b084900cf7e169848aeb54991a3a6da0a4 | |
parent | Use libadhocutil (diff) | |
download | p2pvr-2a551c907b3fd0c282bce46970066cfd402a594c.tar.bz2 p2pvr-2a551c907b3fd0c282bce46970066cfd402a594c.tar.xz p2pvr-2a551c907b3fd0c282bce46970066cfd402a594c.zip |
Use libadhocutil
32 files changed, 78 insertions, 84 deletions
diff --git a/p2pvr/Jamfile.jam b/p2pvr/Jamfile.jam index 0504b65..9be3180 100644 --- a/p2pvr/Jamfile.jam +++ b/p2pvr/Jamfile.jam @@ -3,6 +3,7 @@ import type ; import generators ; lib boost_utf : : <name>boost_unit_test_framework ; +lib adhocutil : : : : <include>/usr/include/adhocutil ; alias glibmm : : : : <cflags>"`pkg-config --cflags glibmm-2.4`" @@ -23,12 +24,9 @@ alias p2xml : glibmm : : : ; alias p2sql : glibmm : : : <include>/usr/include/project2/sql + <include>/usr/include/project2/basics <linkflags>"-lp2sql -ldbpp" ; -alias p2lib : glibmm : : : - <include>/usr/include/project2/lib - <linkflags>"-lp2lib" -; alias p2streams : glibmm : : : <include>/usr/include/project2/streams <linkflags>"-lp2streams" diff --git a/p2pvr/daemon/Jamfile.jam b/p2pvr/daemon/Jamfile.jam index a2a20c0..c565234 100644 --- a/p2pvr/daemon/Jamfile.jam +++ b/p2pvr/daemon/Jamfile.jam @@ -21,6 +21,7 @@ lib p2pvrdaemon : <library>..//p2sql <library>../devices//p2pvrdevices <library>../daemonbase//p2pvrdaemonbase + <library>..//adhocutil <implicit-dependency>../../libtmdb//tmdb <library>slicer <slicer>yes diff --git a/p2pvr/daemon/dbClient.h b/p2pvr/daemon/dbClient.h index 84cf5e7..cd846e5 100644 --- a/p2pvr/daemon/dbClient.h +++ b/p2pvr/daemon/dbClient.h @@ -6,7 +6,7 @@ #include <list> #include <selectcommand.h> #include <modifycommand.h> -#include <scopeObject.h> +#include <scopeExit.h> #include <rdbmsDataSource.h> #include <sqlVariableBinder.h> #include <sqlHandleAsVariableType.h> @@ -28,7 +28,7 @@ class DatabaseClient : public virtual CommonObjects { private: const DatabaseClient * client; - ScopeObject so; + AdHoc::ScopeExit so; }; template <typename... Args> diff --git a/p2pvr/daemon/maintenance.cpp b/p2pvr/daemon/maintenance.cpp index e3747b3..f6878ec 100644 --- a/p2pvr/daemon/maintenance.cpp +++ b/p2pvr/daemon/maintenance.cpp @@ -64,7 +64,7 @@ Maintenance::ScheduledUpdate() if (!updateRunning) { std::thread update([this] { try { - ScopeObject notRunning([this]{ updateRunning = false; }); + AdHoc::ScopeExit notRunning([this]{ updateRunning = false; }); updateRunning = true; auto si = P2PVR::MaintenancePrx::checkedCast(adapter->createProxy(adapter->getCommunicator()->stringToIdentity("Maintenance"))); time_t now = time(NULL); diff --git a/p2pvr/daemon/muxedFileSink.cpp b/p2pvr/daemon/muxedFileSink.cpp index 3008aa7..16a3588 100644 --- a/p2pvr/daemon/muxedFileSink.cpp +++ b/p2pvr/daemon/muxedFileSink.cpp @@ -1,7 +1,6 @@ #include <pch.hpp> #include "muxedFileSink.h" #include <logger.h> -#include <misc.h> #include <poll.h> #include <sys/wait.h> #include <fcntl.h> @@ -19,21 +18,19 @@ MuxedFileSink::MuxedFileSink(const boost::filesystem::path & t, const std::strin c = t.string(); } } - muxerPid = popenrwe(params, fds); - fcntl(fds[0], F_SETFL, O_NONBLOCK); + 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[0]); + close(fds->fdIn()); int status; - while (waitpid(muxerPid, &status, WNOHANG) == 0) { + while (waitpid(fds->pid(), &status, WNOHANG) == 0) { ReadMuxer(5); } Logger()->messagebf(LOG_INFO, "Muxer::%p finished with status %d", this, status); - close(fds[1]); - close(fds[2]); } bool @@ -45,7 +42,7 @@ MuxedFileSink::NewData(const P2PVR::Data & data, const Ice::Current &) if (ReadWaiting()) return true; // Send some input - auto w = write(fds[0], &data[off], data.size() - off); + 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(); @@ -59,7 +56,7 @@ MuxedFileSink::NewData(const P2PVR::Data & data, const Ice::Current &) bool MuxedFileSink::ReadWaiting() const { - pollfd fd = { fds[0], POLLOUT, 0 }; + pollfd fd = { fds->fdIn(), POLLOUT, 0 }; while (true) { auto p = poll(&fd, 1, 0); if (p < 0) { @@ -88,7 +85,7 @@ MuxedFileSink::ReadAvailable() const bool MuxedFileSink::ReadMuxer(int waitTime) const { - pollfd fd[2] = { { fds[1], POLLIN | POLLHUP, 0 }, { fds[2], POLLIN | POLLHUP, 0 } }; + pollfd fd[2] = { { fds->fdOut(), POLLIN | POLLHUP, 0 }, { fds->fdError(), POLLIN | POLLHUP, 0 } }; while (true) { auto p = poll(fd, 2, waitTime); if (p < 0) { @@ -104,7 +101,7 @@ MuxedFileSink::ReadMuxer(int waitTime) const for (int i = 0; i < 2; ++i) { if (fd[i].revents & (POLLIN | POLLHUP)) { P2PVR::Data buf(BUFSIZ); - auto len = read(fds[i + 1], &buf.front(), buf.size()); + auto len = read(fd[i].fd, &buf.front(), buf.size()); if (len == 0) { // ok, proc exit closed = true; diff --git a/p2pvr/daemon/muxedFileSink.h b/p2pvr/daemon/muxedFileSink.h index 9cca6fa..ec22a62 100644 --- a/p2pvr/daemon/muxedFileSink.h +++ b/p2pvr/daemon/muxedFileSink.h @@ -4,6 +4,8 @@ #include <dvb.h> #include <mutex> #include <boost/filesystem/path.hpp> +#include <boost/shared_ptr.hpp> +#include <processPipes.h> class MuxedFileSink : public P2PVR::RawDataClient { public: @@ -16,8 +18,8 @@ class MuxedFileSink : public P2PVR::RawDataClient { bool ReadWaiting() const; bool ReadAvailable() const; bool ReadMuxer(int wait) const; - int fds[3]; - pid_t muxerPid; + typedef boost::shared_ptr<AdHoc::System::ProcessPipes> ProcessPipesPtr; + ProcessPipesPtr fds; mutable std::mutex lock; }; diff --git a/p2pvr/daemon/recorder.cpp b/p2pvr/daemon/recorder.cpp index 3c97fc6..e965253 100644 --- a/p2pvr/daemon/recorder.cpp +++ b/p2pvr/daemon/recorder.cpp @@ -4,7 +4,7 @@ #include <boost/bind.hpp> #include <logger.h> #include <commonHelpers.h> -#include <scopeObject.h> +#include <scopeExit.h> #include "serviceStreamer.h" #include "storage.h" #include "muxer.h" @@ -66,14 +66,14 @@ Recorder::StartRecording(P2PVR::SchedulePtr schedule, DVBSI::ServicePtr service, auto id = boost::lexical_cast<std::string>(boost::uuids::random_generator()()); auto store = storage->OpenForWrite(id); - ScopeObject _store(NULL, NULL, [this,&store,&storage,&id]() { storage->Close(store); storage->Delete(id); }); + AdHoc::ScopeExit _store(NULL, NULL, [this,&store,&storage,&id]() { storage->Close(store); storage->Delete(id); }); auto target = store; P2PVR::RawDataClientPrx muxer; if (!muxerCommand.empty()) { muxer = P2PVR::RawDataClientPrx::checkedCast(adapter->addWithUUID(new Muxer(store, muxerCommand))); target = muxer; } - ScopeObject _muxer(NULL, NULL, [this,&muxer]() { if (muxer) adapter->remove(muxer->ice_getIdentity()); }); + AdHoc::ScopeExit _muxer(NULL, NULL, [this,&muxer]() { if (muxer) adapter->remove(muxer->ice_getIdentity()); }); auto ss = ServiceStreamerPtr(new ServiceStreamer(service->ServiceId, target, adapter->getCommunicator(), adapter)); ss->Start(); diff --git a/p2pvr/daemon/unittests/Jamfile.jam b/p2pvr/daemon/unittests/Jamfile.jam index 0acbd9e..2097b7a 100644 --- a/p2pvr/daemon/unittests/Jamfile.jam +++ b/p2pvr/daemon/unittests/Jamfile.jam @@ -29,7 +29,7 @@ lib testCommon : <library>p2sqlmodPQ <library>../..//p2sql <library>../..//p2common - <library>../..//p2lib + <library>../..//adhocutil <library>../..//p2ut <define>ROOT=\"$(me)\" <library>boost_system @@ -70,7 +70,7 @@ run <define>BOOST_TEST_DYN_LINK <library>../..//p2common <library>../..//p2basics - <library>../..//p2lib + <library>../..//adhocutil <library>../..//p2xml <library>../..//p2ut <library>..//p2pvrdaemon @@ -93,7 +93,7 @@ run <define>BOOST_TEST_DYN_LINK <library>../..//p2common <library>../..//p2basics - <library>../..//p2lib + <library>../..//adhocutil <library>../..//p2xml <library>../..//p2ut <library>..//p2pvrdaemon @@ -116,7 +116,7 @@ run <define>BOOST_TEST_DYN_LINK <library>../..//p2common <library>../..//p2basics - <library>../..//p2lib + <library>../..//adhocutil <library>../..//p2xml <library>../..//p2ut <library>..//p2pvrdaemon @@ -140,7 +140,7 @@ run <define>BOOST_TEST_DYN_LINK <library>../..//p2common <library>../..//p2basics - <library>../..//p2lib + <library>../..//adhocutil <library>../..//p2xml <library>../..//p2ut <library>..//p2pvrdaemon @@ -162,7 +162,7 @@ run <define>BOOST_TEST_DYN_LINK <library>../..//p2common <library>../..//p2basics - <library>../..//p2lib + <library>../..//adhocutil <library>../..//p2xml <library>../..//p2ut <library>..//p2pvrdaemon @@ -185,7 +185,7 @@ run <define>BOOST_TEST_DYN_LINK <library>../..//p2common <library>../..//p2basics - <library>../..//p2lib + <library>../..//adhocutil <library>../..//p2xml <library>../..//p2ut <library>..//p2pvrdaemon @@ -208,7 +208,7 @@ run <define>BOOST_TEST_DYN_LINK <library>../..//p2common <library>../..//p2basics - <library>../..//p2lib + <library>../..//adhocutil <library>../..//p2xml <library>../..//p2ut <library>..//p2pvrdaemon diff --git a/p2pvr/daemon/unittests/mockDefs.cpp b/p2pvr/daemon/unittests/mockDefs.cpp index 466bfe2..76abb80 100644 --- a/p2pvr/daemon/unittests/mockDefs.cpp +++ b/p2pvr/daemon/unittests/mockDefs.cpp @@ -3,22 +3,22 @@ SchemaOnlyMockDatabase::SchemaOnlyMockDatabase() : MockPqDatabase("user=postgres dbname=postgres", "postgres", { - RootDir.parent_path().parent_path() / "datasources" / "schema.sql" }) + rootDir.parent_path().parent_path() / "datasources" / "schema.sql" }) { } StandardMockDatabase::StandardMockDatabase() : MockPqDatabase("user=postgres dbname=postgres", "postgres", { - RootDir.parent_path().parent_path() / "datasources/schema.sql", - RootDir / "datasources" / "data.sql" }) + rootDir.parent_path().parent_path() / "datasources/schema.sql", + rootDir / "datasources" / "data.sql" }) { } StandardMockDatabasePlusOffset::StandardMockDatabasePlusOffset() : MockPqDatabase("user=postgres dbname=postgres", "postgres", { - RootDir.parent_path().parent_path() / "datasources" / "schema.sql", - RootDir / "datasources" / "data.sql", - RootDir / "datasources" / "eventOffset.sql" }) + rootDir.parent_path().parent_path() / "datasources" / "schema.sql", + rootDir / "datasources" / "data.sql", + rootDir / "datasources" / "eventOffset.sql" }) { } diff --git a/p2pvr/daemon/unittests/testErrorHandling.cpp b/p2pvr/daemon/unittests/testErrorHandling.cpp index 9c720a2..b522557 100644 --- a/p2pvr/daemon/unittests/testErrorHandling.cpp +++ b/p2pvr/daemon/unittests/testErrorHandling.cpp @@ -4,7 +4,6 @@ #include <testOptionsSource.h> #include <Ice/ObjectAdapter.h> #include <Ice/Service.h> -#include <scopeObject.h> #include <maintenance.h> #include <mockTuner.h> #include "mockDevices.h" @@ -26,7 +25,7 @@ class Core : public TestAppInstance { ic = Ice::initialize(paramCount, NULL); adapter = ic->createObjectAdapterWithEndpoints("Adp", "tcp -p 12006"); TestOptionsSource::LoadTestOptions({ - { "common.datasourceRoot", (RootDir / "datasources").string() }, + { "common.datasourceRoot", (rootDir / "datasources").string() }, }); adapter->add(new MockDevices(), ic->stringToIdentity("GlobalDevices")); adapter->add(new SI(), ic->stringToIdentity("SI")); diff --git a/p2pvr/daemon/unittests/testMaint.cpp b/p2pvr/daemon/unittests/testMaint.cpp index 0d7d5a0..38c9478 100644 --- a/p2pvr/daemon/unittests/testMaint.cpp +++ b/p2pvr/daemon/unittests/testMaint.cpp @@ -4,7 +4,6 @@ #include <testOptionsSource.h> #include <Ice/ObjectAdapter.h> #include <Ice/Service.h> -#include <scopeObject.h> #include <maintenance.h> #include <mockTuner.h> #include "mockDevices.h" @@ -27,7 +26,7 @@ class Core : public CommonObjects, public TestAppInstance { ic = Ice::initialize(paramCount, NULL); auto adapter = ic->createObjectAdapterWithEndpoints("Adp", "tcp -p 12000"); TestOptionsSource::LoadTestOptions({ - { "common.datasourceRoot", (RootDir / "datasources").string() }, + { "common.datasourceRoot", (rootDir / "datasources").string() }, }); adapter->add(new MockDevices(), ic->stringToIdentity("GlobalDevices")); adapter->add(new MockScheduler(), ic->stringToIdentity("Schedules")); diff --git a/p2pvr/daemon/unittests/testRecording.cpp b/p2pvr/daemon/unittests/testRecording.cpp index 720b868..d3ecee6 100644 --- a/p2pvr/daemon/unittests/testRecording.cpp +++ b/p2pvr/daemon/unittests/testRecording.cpp @@ -4,7 +4,6 @@ #include <testOptionsSource.h> #include <Ice/ObjectAdapter.h> #include <Ice/Service.h> -#include <scopeObject.h> #include <maintenance.h> #include <mockTuner.h> #include "mockDevices.h" @@ -29,7 +28,7 @@ class Core : public CommonObjects, public TestAppInstance { ic = Ice::initialize(paramCount, NULL); adapter = ic->createObjectAdapterWithEndpoints("Adp", "tcp -p 12005"); TestOptionsSource::LoadTestOptions({ - { "common.datasourceRoot", (RootDir / "datasources").string() }, + { "common.datasourceRoot", (rootDir / "datasources").string() }, }); adapter->add(new MockDevices(), ic->stringToIdentity("GlobalDevices")); adapter->add(new MockScheduler(), ic->stringToIdentity("Schedules")); diff --git a/p2pvr/daemon/unittests/testRecordings.cpp b/p2pvr/daemon/unittests/testRecordings.cpp index eb3d5db..ff8f676 100644 --- a/p2pvr/daemon/unittests/testRecordings.cpp +++ b/p2pvr/daemon/unittests/testRecordings.cpp @@ -4,7 +4,6 @@ #include <testOptionsSource.h> #include <Ice/ObjectAdapter.h> #include <Ice/Service.h> -#include <scopeObject.h> #include <maintenance.h> #include <mockTuner.h> #include <si.h> @@ -25,7 +24,7 @@ class Core : public TestAppInstance { ic = Ice::initialize(paramCount, NULL); auto adapter = ic->createObjectAdapterWithEndpoints("Adp", "tcp -p 12001"); TestOptionsSource::LoadTestOptions({ - { "common.datasourceRoot", (RootDir / "datasources").string() }, + { "common.datasourceRoot", (rootDir / "datasources").string() }, }); adapter->add(new Recordings(), ic->stringToIdentity("Recordings")); adapter->add(new SI(), ic->stringToIdentity("SI")); diff --git a/p2pvr/daemon/unittests/testSched.cpp b/p2pvr/daemon/unittests/testSched.cpp index 3a513d0..9afdaad 100644 --- a/p2pvr/daemon/unittests/testSched.cpp +++ b/p2pvr/daemon/unittests/testSched.cpp @@ -26,7 +26,7 @@ class Core : public TestAppInstance { ic = Ice::initialize(paramCount, NULL); auto adapter = ic->createObjectAdapterWithEndpoints("Adp", "tcp -p 12003"); TestOptionsSource::LoadTestOptions({ - { "common.datasourceRoot", (RootDir / "datasources").string() }, + { "common.datasourceRoot", (rootDir / "datasources").string() }, }); adapter->add(new Schedules(), ic->stringToIdentity("Schedules")); adapter->add(new MockDevices(), ic->stringToIdentity("GlobalDevices")); diff --git a/p2pvr/daemon/unittests/testSi.cpp b/p2pvr/daemon/unittests/testSi.cpp index 6cc810b..9e42e74 100644 --- a/p2pvr/daemon/unittests/testSi.cpp +++ b/p2pvr/daemon/unittests/testSi.cpp @@ -23,7 +23,7 @@ class Core : public TestAppInstance { ic = Ice::initialize(paramCount, NULL); auto adapter = ic->createObjectAdapterWithEndpoints("Adp", "tcp -p 12002"); TestOptionsSource::LoadTestOptions({ - { "common.datasourceRoot", (RootDir / "datasources").string() }, + { "common.datasourceRoot", (rootDir / "datasources").string() }, }); adapter->add(new SI(), ic->stringToIdentity("SI")); adapter->activate(); diff --git a/p2pvr/daemon/unittests/testSqlSelectDeserializer.cpp b/p2pvr/daemon/unittests/testSqlSelectDeserializer.cpp index 2608fd8..077486c 100644 --- a/p2pvr/daemon/unittests/testSqlSelectDeserializer.cpp +++ b/p2pvr/daemon/unittests/testSqlSelectDeserializer.cpp @@ -20,7 +20,7 @@ class TestCommonObjects : public CommonObjects, public TestAppInstance { TestCommonObjects() { TestOptionsSource::LoadTestOptions({ - { "common.datasourceRoot", (RootDir / "datasources").string() }, + { "common.datasourceRoot", (rootDir / "datasources").string() }, }); } }; diff --git a/p2pvr/daemon/unittests/testp2ice.cpp b/p2pvr/daemon/unittests/testp2ice.cpp index 4d29cc9..8229bf5 100644 --- a/p2pvr/daemon/unittests/testp2ice.cpp +++ b/p2pvr/daemon/unittests/testp2ice.cpp @@ -6,9 +6,9 @@ #include <sourceObject.h> #include <testAppInstance.h> -const boost::filesystem::path variant = BinDir.leaf(); -const boost::filesystem::path compiler = BinDir.parent_path().leaf(); -const boost::filesystem::path root = RootDir.parent_path().parent_path(); +const boost::filesystem::path variant = binDir.leaf(); +const boost::filesystem::path compiler = binDir.parent_path().leaf(); +const boost::filesystem::path root = rootDir.parent_path().parent_path(); const boost::filesystem::path iceroot = root / "ice"; static diff --git a/p2pvr/daemonbase/Jamfile.jam b/p2pvr/daemonbase/Jamfile.jam index d25bdcf..f02a172 100644 --- a/p2pvr/daemonbase/Jamfile.jam +++ b/p2pvr/daemonbase/Jamfile.jam @@ -14,6 +14,7 @@ lib p2pvrdaemonbase : <library>..//p2common <library>../lib//p2pvrlib <library>../ice//p2pvrice + <library>..//adhocutil <implicit-dependency>../ice//p2pvrice : : <implicit-dependency>../ice//p2pvrice diff --git a/p2pvr/devices/Jamfile.jam b/p2pvr/devices/Jamfile.jam index 8e18afa..f39256b 100644 --- a/p2pvr/devices/Jamfile.jam +++ b/p2pvr/devices/Jamfile.jam @@ -23,6 +23,7 @@ lib p2pvrdevices : <library>../ice//p2pvrice <library>../lib//p2pvrlib <library>..//p2common + <library>..//adhocutil <implicit-dependency>../ice//p2pvrice : : <library>boost_filesystem @@ -56,6 +57,7 @@ lib p2pvrMockTuner : <library>../ice//p2pvrice <library>../lib//p2pvrlib <library>..//p2common + <library>..//adhocutil <implicit-dependency>../ice//p2pvrice : : <library>boost_filesystem diff --git a/p2pvr/devices/tuner.cpp b/p2pvr/devices/tuner.cpp index ee1625a..ea3ccad 100644 --- a/p2pvr/devices/tuner.cpp +++ b/p2pvr/devices/tuner.cpp @@ -5,7 +5,6 @@ #include <sys/ioctl.h> #include <poll.h> #include <logger.h> -#include <misc.h> #include <plugable.h> #include <linux/dvb/frontend.h> #include <linux/dvb/dmx.h> @@ -18,7 +17,8 @@ class FrontendNotSupported : public NotSupported { public: FrontendNotSupported(fe_type t) : NotSupported(stringbf("Frontend not supported: %s", t)) - { } + { + } }; Tuner::Tuner(const boost::filesystem::path & df) : diff --git a/p2pvr/dvb/Jamfile.jam b/p2pvr/dvb/Jamfile.jam index 2dbbbda..e71093a 100644 --- a/p2pvr/dvb/Jamfile.jam +++ b/p2pvr/dvb/Jamfile.jam @@ -7,6 +7,7 @@ lib p2pvrdvb : [ glob-tree *.cpp : unittests ] : <library>../ice//p2pvrice + <library>..//adhocutil <implicit-dependency>../ice//p2pvrice : : <implicit-dependency>../ice//p2pvrice diff --git a/p2pvr/dvb/siParsers/network.cpp b/p2pvr/dvb/siParsers/network.cpp index b91da1a..6527d58 100644 --- a/p2pvr/dvb/siParsers/network.cpp +++ b/p2pvr/dvb/siParsers/network.cpp @@ -3,7 +3,6 @@ #include <boost/bind.hpp> #include <linux/dvb/frontend.h> #include <safeMapFind.h> -#include <misc.h> struct NetworkStreamsHeader { #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ @@ -219,16 +218,16 @@ SiNetworkInformationParser::parseDescriptor_TerrestrialDelivery(DVBSI::NetworkTr DVBSI::TerrestrialDeliveryPtr td = new DVBSI::TerrestrialDelivery; td->Frequency = ((uint64_t)ntohl(tdd->Frequency)) * 10; td->TransportStreamId = nts->TransportStreamId; - td->Bandwidth = safeMapLookup<BandwidthNotSupported>(tbandwidths, tdd->Bandwidth); + td->Bandwidth = AdHoc::safeMapLookup<BandwidthNotSupported>(tbandwidths, tdd->Bandwidth); td->Priority = tdd->Priority; td->TimeSlicing = tdd->TimeSlicing; td->MpeFec = tdd->MpeFec; - td->Constellation = safeMapLookup<ConstellationNotSupported>(tconstellations, tdd->Constellation); - td->Hierarchy = safeMapLookup<HierarchyNotSupported>(thierarchies, tdd->Hierarchy); - td->CodeRateHP = safeMapLookup<CodeRateNotSupported>(tcoderates, tdd->CodeRateHP); - td->CodeRateLP = safeMapLookup<CodeRateNotSupported>(tcoderates, tdd->CodeRateLP); - td->GuardInterval = safeMapLookup<GuardIntervalNotSupported>(tguardintervals, tdd->GuardInterval); - td->TransmissionMode = safeMapLookup<TransmissionModeNotSupported>(ttransmitmodes, tdd->TransmissionMode); + td->Constellation = AdHoc::safeMapLookup<ConstellationNotSupported>(tconstellations, tdd->Constellation); + td->Hierarchy = AdHoc::safeMapLookup<HierarchyNotSupported>(thierarchies, tdd->Hierarchy); + td->CodeRateHP = AdHoc::safeMapLookup<CodeRateNotSupported>(tcoderates, tdd->CodeRateHP); + td->CodeRateLP = AdHoc::safeMapLookup<CodeRateNotSupported>(tcoderates, tdd->CodeRateLP); + td->GuardInterval = AdHoc::safeMapLookup<GuardIntervalNotSupported>(tguardintervals, tdd->GuardInterval); + td->TransmissionMode = AdHoc::safeMapLookup<TransmissionModeNotSupported>(ttransmitmodes, tdd->TransmissionMode); td->OtherFrequencyFlag = tdd->OtherFrequencyFlag; nts->Terrestrial = td; } diff --git a/p2pvr/dvb/unittests/createBroadcast.cpp b/p2pvr/dvb/unittests/createBroadcast.cpp index c65c9ad..1b13d37 100644 --- a/p2pvr/dvb/unittests/createBroadcast.cpp +++ b/p2pvr/dvb/unittests/createBroadcast.cpp @@ -7,7 +7,6 @@ #include <boost/tuple/tuple.hpp> #include <Ice/ObjectAdapter.h> #include <Ice/Service.h> -#include <scopeObject.h> #include <linux/dvb/frontend.h> #include "serviceStreamerCore.h" #include "bindDataHandler.h" diff --git a/p2pvr/dvb/unittests/createSamples.cpp b/p2pvr/dvb/unittests/createSamples.cpp index 1bb8f92..b9f2aaa 100644 --- a/p2pvr/dvb/unittests/createSamples.cpp +++ b/p2pvr/dvb/unittests/createSamples.cpp @@ -6,7 +6,7 @@ #include <boost/tuple/tuple.hpp> #include <Ice/ObjectAdapter.h> #include <Ice/Service.h> -#include <scopeObject.h> +#include <scopeExit.h> #include <linux/dvb/frontend.h> #include <siParsers/network.h> #include <siParsers/service.h> @@ -70,7 +70,7 @@ CaptureAndSave(const boost::filesystem::path & fileName, const boost::function<v auto ic = boost::get<0>(icp); auto adap = boost::get<1>(icp); auto p = boost::get<2>(icp); - ScopeObject _([&ic]{ ic->destroy(); }); + ScopeExit _([&ic]{ ic->destroy(); }); auto devs = P2PVR::DevicesPrx::checkedCast(ic->stringToProxy("Devices:tcp -h defiant -p 10000")); auto parser = P2PVR::RawDataClientPrx::checkedCast(adap->createProxy(ic->stringToIdentity("parser"))); diff --git a/p2pvr/ice/Jamfile.jam b/p2pvr/ice/Jamfile.jam index 5720bf1..ca27324 100644 --- a/p2pvr/ice/Jamfile.jam +++ b/p2pvr/ice/Jamfile.jam @@ -9,7 +9,7 @@ lib p2pvrice : <library>IceUtil <library>pthread <library>..//p2common - <library>..//p2lib + <library>..//adhocutil <library>..//p2ice <library>slicer <slicer>yes diff --git a/p2pvr/ice/commonHelpers.cpp b/p2pvr/ice/commonHelpers.cpp index 6ad120b..9344438 100644 --- a/p2pvr/ice/commonHelpers.cpp +++ b/p2pvr/ice/commonHelpers.cpp @@ -1,5 +1,4 @@ #include "commonHelpers.h" -#include <misc.h> #include <boost/numeric/conversion/cast.hpp> namespace Common { diff --git a/p2pvr/lib/Jamfile.jam b/p2pvr/lib/Jamfile.jam index 2083c30..31974b7 100644 --- a/p2pvr/lib/Jamfile.jam +++ b/p2pvr/lib/Jamfile.jam @@ -6,7 +6,7 @@ cpp-pch pch : pch.hpp : <library>boost_system <library>boost_filesystem <library>..//p2common - <library>..//p2lib + <library>..//adhocutil <implicit-dependency>../ice//p2pvrice ; @@ -19,7 +19,7 @@ lib p2pvrlib : <library>../ice//p2pvrice <library>../dvb//p2pvrdvb <library>..//p2common - <library>..//p2lib + <library>..//adhocutil <implicit-dependency>../ice//p2pvrice <library>slicer : : diff --git a/p2pvr/lib/muxer.cpp b/p2pvr/lib/muxer.cpp index 15152a2..cfec6d0 100644 --- a/p2pvr/lib/muxer.cpp +++ b/p2pvr/lib/muxer.cpp @@ -1,7 +1,7 @@ #include <pch.hpp> #include "muxer.h" #include <logger.h> -#include <misc.h> +#include <processPipes.h> #include <poll.h> #include <sys/wait.h> #include <fcntl.h> @@ -15,21 +15,19 @@ Muxer::Muxer(const P2PVR::RawDataClientPrx & t, const std::string & cmd) : { std::vector<std::string> params; boost::algorithm::split(params, cmd, isspace, boost::algorithm::token_compress_on); - muxerPid = popenrwe(params, fds); - fcntl(fds[0], F_SETFL, O_NONBLOCK); + 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'", this, cmd); } Muxer::~Muxer() { - close(fds[0]); + close(fds->fdIn()); int status; - while (waitpid(muxerPid, &status, WNOHANG) == 0) { + while (waitpid(fds->pid(), &status, WNOHANG) == 0) { ReadMuxerAndSend(5); } Logger()->messagebf(LOG_INFO, "Muxer::%p finished with status %d", this, status); - close(fds[1]); - close(fds[2]); } bool @@ -41,7 +39,7 @@ Muxer::NewData(const P2PVR::Data & data, const Ice::Current &) if (ReadWaiting()) return true; // Send some input - auto w = write(fds[0], &data[off], data.size() - off); + 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(); @@ -55,7 +53,7 @@ Muxer::NewData(const P2PVR::Data & data, const Ice::Current &) bool Muxer::ReadWaiting() const { - pollfd fd = { fds[0], POLLOUT, 0 }; + pollfd fd = { fds->fdIn(), POLLOUT, 0 }; while (true) { auto p = poll(&fd, 1, 0); if (p < 0) { @@ -84,7 +82,7 @@ Muxer::ReadAvailable() const bool Muxer::ReadMuxerAndSend(int waitTime) const { - pollfd fd[2] = { { fds[1], POLLIN | POLLHUP, 0 }, { fds[2], POLLIN | POLLHUP, 0 } }; + pollfd fd[2] = { { fds->fdOut(), POLLIN | POLLHUP, 0 }, { fds->fdError(), POLLIN | POLLHUP, 0 } }; while (true) { auto p = poll(fd, 2, waitTime); if (p < 0) { @@ -99,7 +97,7 @@ Muxer::ReadMuxerAndSend(int waitTime) const bool closed = false; if (fd[0].revents & (POLLIN | POLLHUP)) { P2PVR::Data buf(BUFSIZ); - auto len = read(fds[1], &buf.front(), buf.size()); + auto len = read(fds->fdOut(), &buf.front(), buf.size()); if (len == 0) { // ok, proc exit closed = true; @@ -113,7 +111,7 @@ Muxer::ReadMuxerAndSend(int waitTime) const } if (fd[1].revents & (POLLIN | POLLHUP)) { P2PVR::Data buf(BUFSIZ); - auto len = read(fds[2], &buf.front(), buf.size()); + auto len = read(fds->fdError(), &buf.front(), buf.size()); if (len == 0) { // ok, proc exit closed = true; diff --git a/p2pvr/lib/muxer.h b/p2pvr/lib/muxer.h index 3a492bd..cf0db1c 100644 --- a/p2pvr/lib/muxer.h +++ b/p2pvr/lib/muxer.h @@ -3,6 +3,8 @@ #include <dvb.h> #include <mutex> +#include <boost/shared_ptr.hpp> +#include <processPipes.h> class Muxer : public P2PVR::RawDataClient { public: @@ -16,8 +18,8 @@ class Muxer : public P2PVR::RawDataClient { bool ReadAvailable() const; bool ReadMuxerAndSend(int wait) const; const P2PVR::RawDataClientPrx target; - int fds[3]; - pid_t muxerPid; + typedef boost::shared_ptr<AdHoc::System::ProcessPipes> ProcessPipesPtr; + ProcessPipesPtr fds; mutable std::mutex lock; }; diff --git a/p2pvr/p2comp/Jamfile.jam b/p2pvr/p2comp/Jamfile.jam index 6a847b7..10b7fea 100644 --- a/p2pvr/p2comp/Jamfile.jam +++ b/p2pvr/p2comp/Jamfile.jam @@ -6,5 +6,6 @@ lib p2pvrp2comp : <library>..//p2streams <library>..//p2ice <library>..//p2cgi + <library>..//adhocutil <implicit-dependency>../ice//p2pvrice ; diff --git a/p2pvr/p2comp/recordingStream.cpp b/p2pvr/p2comp/recordingStream.cpp index b77a2ce..74d8ba0 100644 --- a/p2pvr/p2comp/recordingStream.cpp +++ b/p2pvr/p2comp/recordingStream.cpp @@ -1,6 +1,5 @@ #include <p2pvr.h> #include <options.h> -#include <misc.h> #include <temporaryIceAdapterObject.h> #include "streamSinkWrapper.h" #include "streamBase.h" diff --git a/p2pvr/p2comp/serviceStream.cpp b/p2pvr/p2comp/serviceStream.cpp index 02d19d1..323234f 100644 --- a/p2pvr/p2comp/serviceStream.cpp +++ b/p2pvr/p2comp/serviceStream.cpp @@ -2,7 +2,6 @@ #include <iceDataSource.h> #include <serviceStreamer.h> #include <options.h> -#include <misc.h> #include <muxer.h> #include <future> #include <temporaryIceAdapterObject.h> |