summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2012-12-21 02:52:53 +0000
committerDavid Robillard <d@drobilla.net>2012-12-21 02:52:53 +0000
commit595e4f539b73a46c428a2e84b5e0f37e0f48a9b8 (patch)
tree741480d365eb1d172a30395349148476529f5830
parent853dee67639d73178f036c192ea5d98d74fb39e3 (diff)
downloadingen-595e4f539b73a46c428a2e84b5e0f37e0f48a9b8.tar.gz
ingen-595e4f539b73a46c428a2e84b5e0f37e0f48a9b8.tar.bz2
ingen-595e4f539b73a46c428a2e84b5e0f37e0f48a9b8.zip
Send a null terminator on bundle boundaries so reading replies from the socket is simple.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4869 a436a847-0d15-0410-975c-d299462d15a1
-rw-r--r--src/socket/SocketWriter.cpp10
-rw-r--r--src/socket/SocketWriter.hpp2
2 files changed, 12 insertions, 0 deletions
diff --git a/src/socket/SocketWriter.cpp b/src/socket/SocketWriter.cpp
index f66606be..19a1c713 100644
--- a/src/socket/SocketWriter.cpp
+++ b/src/socket/SocketWriter.cpp
@@ -85,5 +85,15 @@ SocketWriter::write(const LV2_Atom* msg)
return true;
}
+void
+SocketWriter::bundle_end()
+{
+ AtomWriter::bundle_end();
+
+ // Send a NULL byte to indicate end of bundle
+ const char end[] = { 0 };
+ send(fd(), end, 1, MSG_NOSIGNAL);
+}
+
} // namespace Socket
} // namespace Ingen
diff --git a/src/socket/SocketWriter.hpp b/src/socket/SocketWriter.hpp
index cbdb2602..d6ba5dd3 100644
--- a/src/socket/SocketWriter.hpp
+++ b/src/socket/SocketWriter.hpp
@@ -45,6 +45,8 @@ public:
bool write(const LV2_Atom* msg);
+ void bundle_end();
+
int fd() { return _socket->fd(); }
Raul::URI uri() const { return _uri; }