Switch to side-by-side view

--- a/libupnpp/control/service.cxx
+++ b/libupnpp/control/service.cxx
@@ -24,6 +24,7 @@
 
 #include "libupnpp/log.hxx"
 #include "libupnpp/ptmutex.hxx"
+#include "libupnpp/upnpp_p.hxx"
 #include "libupnpp/upnpplib.hxx"
 #include "libupnpp/control/service.hxx"
 #include "libupnpp/control/cdirectory.hxx"
@@ -44,6 +45,21 @@
          if (*rspp) ixmlDocument_free(*rspp);
      }
 };
+
+Service::Service(const UPnPDeviceDesc& device,
+                 const UPnPServiceDesc& service)
+    : m_reporter(0), 
+      m_actionURL(caturl(device.URLBase, service.controlURL)),
+      m_eventURL(caturl(device.URLBase, service.eventSubURL)),
+      m_serviceType(service.serviceType),
+      m_deviceId(device.UDN),
+      m_friendlyName(device.friendlyName),
+      m_manufacturer(device.manufacturer),
+      m_modelName(device.modelName)
+{ 
+    initEvents();
+    subscribe();
+}
 
 int Service::runAction(const SoapEncodeInput& args, SoapDecodeOutput& data)
 {