Switch to side-by-side view

--- a
+++ b/libupnpp/control/avtransport.cxx
@@ -0,0 +1,101 @@
+/* Copyright (C) 2014 J.F.Dockes
+ *       This program is free software; you can redistribute it and/or modify
+ *       it under the terms of the GNU General Public License as published by
+ *       the Free Software Foundation; either version 2 of the License, or
+ *       (at your option) any later version.
+ *
+ *       This program is distributed in the hope that it will be useful,
+ *       but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *       GNU General Public License for more details.
+ *
+ *       You should have received a copy of the GNU General Public License
+ *       along with this program; if not, write to the
+ *       Free Software Foundation, Inc.,
+ *       59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+#include <string>
+#include <functional>
+
+using namespace std;
+using namespace std::placeholders;
+
+#include <upnp/upnp.h>
+
+#include "libupnpp/soaphelp.hxx"
+#include "libupnpp/upnpp_p.hxx"
+#include "libupnpp/log.hxx"
+#include "libupnpp/control/avtransport.hxx"
+#include "libupnpp/control/avlastchg.hxx"
+
+namespace UPnPClient {
+
+const string AVTransport::SType("urn:schemas-upnp-org:service:AVTransport:1");
+
+// Check serviceType string (while walking the descriptions. We don't
+// include a version in comparisons, as we are satisfied with version1
+bool AVTransport::isAVTService(const string& st)
+{
+    const string::size_type sz(SType.size()-2);
+    return !SType.compare(0, sz, st, 0, sz);
+}
+
+void AVTransport::evtCallback(
+    const std::unordered_map<std::string, std::string>& props)
+{
+    //LOGDEB("AVTransport::evtCallback:" << endl);
+    for (auto& entry: props) {
+        if (entry.first.compare("LastChange")) {
+            LOGINF("AVTransport:event: var not lastchange: "
+                   << entry.first << " -> " << entry.second << endl;);
+            continue;
+        }
+
+        std::unordered_map<std::string, std::string> props1;
+        if (!decodeAVLastChange(entry.second, props1)) {
+            LOGERR("AVTransport::evtCallback: bad LastChange value: "
+                   << entry.second << endl);
+            return;
+        }
+        for (auto& entry1: props1) {
+            //LOGDEB("    " << entry1.first << " -> " << 
+            //       entry1.second << endl);
+            if (!entry1.first.compare("TransportState")) {
+            } else if (!entry1.first.compare("CurrentTransportActions")) {
+            } else if (!entry1.first.compare("TransportStatus")) {
+            } else if (!entry1.first.compare("TransportPlaySpeed")) {
+            } else if (!entry1.first.compare("CurrentTrack")) {
+            } else if (!entry1.first.compare("CurrentTrackURI")) {
+            } else if (!entry1.first.compare("CurrentTrackMetaData")) {
+            } else if (!entry1.first.compare("NumberOfTracks")) {
+            } else if (!entry1.first.compare("CurrentMediaDuration")) {
+            } else if (!entry1.first.compare("CurrentTrackDuration")) {
+            } else if (!entry1.first.compare("AVTransportURI")) {
+            } else if (!entry1.first.compare("AVTransportURIMetaData")) {
+            } else if (!entry1.first.compare("RelativeTimePosition")) {
+            } else if (!entry1.first.compare("AbsoluteTimePosition")) {
+            } else if (!entry1.first.compare("NextAVTransportURI")) {
+            } else if (!entry1.first.compare("NextAVTransportURIMetaData")){
+            } else if (!entry1.first.compare("PlaybackStorageMedium")) {
+            } else if (!entry1.first.compare("PossiblePlaybackStorageMedium")) {
+            } else if (!entry1.first.compare("RecordStorageMedium")) {
+            } else if (!entry1.first.compare("RelativeCounterPosition")) {
+            } else if (!entry1.first.compare("AbsoluteCounterPosition")) {
+            } else if (!entry1.first.compare("CurrentPlayMode")) {
+            } else if (!entry1.first.compare("PossibleRecordStorageMedium")) {
+            } else if (!entry1.first.compare("RecordMediumWriteStatus")) {
+            } else if (!entry1.first.compare("CurrentRecordQualityMode")) {
+            } else if (!entry1.first.compare("PossibleRecordQualityModes")){
+            }
+        }
+    }
+}
+
+void AVTransport::registerCallback()
+{
+    Service::registerCallback(bind(&AVTransport::evtCallback, this, _1));
+}
+
+} // End namespace UPnPClient
+