summaryrefslogtreecommitdiff
path: root/p2pvr/carddaemon/carddaemon.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'p2pvr/carddaemon/carddaemon.cpp')
-rw-r--r--p2pvr/carddaemon/carddaemon.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/p2pvr/carddaemon/carddaemon.cpp b/p2pvr/carddaemon/carddaemon.cpp
new file mode 100644
index 0000000..f75109e
--- /dev/null
+++ b/p2pvr/carddaemon/carddaemon.cpp
@@ -0,0 +1,53 @@
+#include <daemon.h>
+#include <options.h>
+#include <logger.h>
+#include <Ice/Ice.h>
+#include "localDevices.h"
+
+class P2PvrCardDaemon : public Daemon {
+ public:
+ P2PvrCardDaemon(int argc, char ** argv) :
+ ic(Ice::initialize(argc, argv))
+ {
+ }
+
+ ~P2PvrCardDaemon()
+ {
+ ic->destroy();
+ }
+
+ void run() const
+ {
+ Logger()->messagebf(LOG_INFO, "Creating adapter (%s, %s)", Adapter, Endpoint);
+ auto adapter = ic->createObjectAdapterWithEndpoints(Adapter, Endpoint);
+ P2PVR::LocalDevicesPrx::checkedCast(adapter->add(new LocalDevices(), ic->stringToIdentity(Identity)));
+ adapter->activate();
+ ic->waitForShutdown();
+ }
+
+ void shutdown() const
+ {
+ ic->shutdown();
+ }
+ INITOPTIONS;
+
+ private:
+ Ice::CommunicatorPtr ic;
+
+ static std::string Adapter;
+ static std::string Endpoint;
+ static std::string Identity;
+};
+
+std::string P2PvrCardDaemon::Adapter;
+std::string P2PvrCardDaemon::Endpoint;
+std::string P2PvrCardDaemon::Identity;
+
+DECLARE_GENERIC_LOADER("p2pvrcarddaemon", DaemonLoader, P2PvrCardDaemon);
+
+DECLARE_OPTIONS(P2PvrCardDaemon, "P2PVR Card Daemon")
+("p2pvr.carddaemon.iceadapter", Options::value(&Adapter, "DefaultAdapter"), "ICE Adapter name")
+("p2pvr.carddaemon.iceendpoint", Options::value(&Endpoint, "default -p 10001"), "ICE Endpoint address")
+("p2pvr.carddaemon.iceidentity", Options::value(&Identity, "Devices"), "ICE Interface identity")
+END_OPTIONS(P2PvrCardDaemon);
+