summaryrefslogtreecommitdiffstats
path: root/src/shared/HTTPSender.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2008-11-16 05:34:01 +0000
committerDavid Robillard <d@drobilla.net>2008-11-16 05:34:01 +0000
commit0fd3c583e032a3cd5af877902d4561a45179a232 (patch)
treee6bc62875842fda0908f1aea3a51b67740825d71 /src/shared/HTTPSender.cpp
parent24d998447070dbfef3eaf7762dce7e97c3903801 (diff)
downloadingen-0fd3c583e032a3cd5af877902d4561a45179a232.tar.gz
ingen-0fd3c583e032a3cd5af877902d4561a45179a232.tar.bz2
ingen-0fd3c583e032a3cd5af877902d4561a45179a232.zip
Follow new object creation via HTTP (serialising/parsing RDF to communicate between client and engine).
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@1722 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/shared/HTTPSender.cpp')
-rw-r--r--src/shared/HTTPSender.cpp15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/shared/HTTPSender.cpp b/src/shared/HTTPSender.cpp
index 7f760786..1b38f97f 100644
--- a/src/shared/HTTPSender.cpp
+++ b/src/shared/HTTPSender.cpp
@@ -109,8 +109,9 @@ HTTPSender::_run()
_signal.wait(_mutex);
write(_client_sock, _transfer.c_str(), _transfer.length());
- write(_client_sock, "\n\n", 2);
+ write(_client_sock, "\n\n\n", 2);
+ _signal.broadcast();
_mutex.unlock();
}
@@ -125,16 +126,15 @@ HTTPSender::bundle_begin()
_mutex.lock();
_send_state = SendingBundle;
_transfer = "";
- _mutex.unlock();
}
void
HTTPSender::bundle_end()
{
- _mutex.lock();
assert(_send_state == SendingBundle);
_signal.broadcast();
+ _signal.wait(_mutex);
_send_state = Immediate;
_mutex.unlock();
}
@@ -143,16 +143,15 @@ HTTPSender::bundle_end()
void
HTTPSender::send_chunk(const std::string& buf)
{
- _mutex.lock();
-
if (_send_state == Immediate) {
- _transfer = "";
+ _mutex.lock();
+ _transfer = buf;
_signal.broadcast();
+ _signal.wait(_mutex);
+ _mutex.unlock();
} else {
_transfer.append(buf);
}
-
- _mutex.unlock();
}