changeset 1678:1078f0ef3012 single-point

Make it possible to start queue without port (even when compiled in)
author Chris Cannam
date Thu, 28 Mar 2019 13:37:09 +0000
parents f97d64b8674f
children 0d89abd631ac
files data/osc/OSCQueue.cpp data/osc/OSCQueue.h
diffstat 2 files changed, 38 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/data/osc/OSCQueue.cpp	Thu Mar 28 11:55:02 2019 +0000
+++ b/data/osc/OSCQueue.cpp	Thu Mar 28 13:37:09 2019 +0000
@@ -91,24 +91,37 @@
 
 #endif
    
-OSCQueue::OSCQueue() :
+OSCQueue::OSCQueue(bool withNetworkPort) :
 #ifdef HAVE_LIBLO
     m_thread(nullptr),
 #endif
+    m_withPort(withNetworkPort),
     m_buffer(OSC_MESSAGE_QUEUE_SIZE)
 {
     Profiler profiler("OSCQueue::OSCQueue");
 
 #ifdef HAVE_LIBLO
-    m_thread = lo_server_thread_new(nullptr, oscError);
+    if (m_withPort) {
+        m_thread = lo_server_thread_new(nullptr, oscError);
 
-    lo_server_thread_add_method(m_thread, nullptr, nullptr,
-                                oscMessageHandler, this);
+        lo_server_thread_add_method(m_thread, nullptr, nullptr,
+                                    oscMessageHandler, this);
 
-    lo_server_thread_start(m_thread);
+        lo_server_thread_start(m_thread);
 
-    cout << "OSCQueue::OSCQueue: Base OSC URL is "
-              << lo_server_thread_get_url(m_thread) << endl;
+        SVDEBUG << "OSCQueue::OSCQueue: Started OSC thread, URL is "
+             << lo_server_thread_get_url(m_thread) << endl;
+            
+        cout << "OSCQueue::OSCQueue: Base OSC URL is "
+             << lo_server_thread_get_url(m_thread) << endl;
+    }
+#else
+    if (m_withPort) {
+        SVDEBUG << "OSCQueue::OSCQueue: Note: OSC port support not "
+                << "compiled in; not opening port, falling back to "
+                << "internal-only queue" << endl;
+        m_withPort = false;
+    }
 #endif
 }
 
@@ -128,11 +141,15 @@
 bool
 OSCQueue::isOK() const
 {
+    if (!m_withPort) {
+        return true;
+    } else {
 #ifdef HAVE_LIBLO
-    return (m_thread != nullptr);
+        return (m_thread != nullptr);
 #else
-    return false;
+        return false;
 #endif
+    }
 }
 
 QString
@@ -140,7 +157,9 @@
 {
     QString url = "";
 #ifdef HAVE_LIBLO
-    url = lo_server_thread_get_url(m_thread);
+    if (m_thread) {
+        url = lo_server_thread_get_url(m_thread);
+    }
 #endif
     return url;
 }
@@ -185,8 +204,9 @@
     OSCMessage *mp = new OSCMessage(message);
     m_buffer.write(&mp, 1);
     SVDEBUG << "OSCQueue::postMessage: Posted OSC message: target "
-              << message.getTarget() << ", target data " << message.getTargetData()
-              << ", method " << message.getMethod() << endl;
+            << message.getTarget() << ", target data "
+            << message.getTargetData() << ", method "
+            << message.getMethod() << endl;
     emit messagesAvailable();
 }
 
@@ -225,7 +245,8 @@
         return false;
     }
 
-    SVDEBUG << "OSCQueue::parseOSCPath: good path \"" << path              << "\"" << endl;
+    SVDEBUG << "OSCQueue::parseOSCPath: good path \"" << path
+            << "\"" << endl;
 
     return true;
 }
--- a/data/osc/OSCQueue.h	Thu Mar 28 11:55:02 2019 +0000
+++ b/data/osc/OSCQueue.h	Thu Mar 28 13:37:09 2019 +0000
@@ -36,7 +36,7 @@
     Q_OBJECT
 
 public:
-    OSCQueue();
+    OSCQueue(bool withNetworkPort);
     virtual ~OSCQueue();
 
     bool isOK() const;
@@ -48,6 +48,8 @@
 
     QString getOSCURL() const;
 
+    bool hasPort() const { return m_withPort; }
+
 signals:
     void messagesAvailable();
 
@@ -62,6 +64,7 @@
 
     bool parseOSCPath(QString path, int &target, int &targetData, QString &method);
 
+    bool m_withPort;
     RingBuffer<OSCMessage *> m_buffer;
 };