Mercurial > hg > piper-cpp
diff vamp-client/CapnpRRClient.h @ 126:2004ec2b653e
Ensure we read right up to end of buffered data after server exits; adjust waiting schedule on Windows (where waitForReadyRead is far too wasteful of sleep time)
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Fri, 28 Oct 2016 14:31:58 +0100 |
parents | ff3fd8d1b2dc |
children | 183fe1f03980 |
line wrap: on
line diff
--- a/vamp-client/CapnpRRClient.h Fri Oct 28 11:08:17 2016 +0100 +++ b/vamp-client/CapnpRRClient.h Fri Oct 28 14:31:58 2016 +0100 @@ -102,7 +102,7 @@ listPluginData() override { if (!m_transport->isOK()) { - throw std::runtime_error("Piper server failed to start"); + throw std::runtime_error("Piper server crashed or failed to start"); } capnp::MallocMessageBuilder message; @@ -111,7 +111,7 @@ ReqId id = getId(); builder.getId().setNumber(id); - auto karr = call(message); + auto karr = call(message, true); capnp::FlatArrayMessageReader responseMessage(karr); piper::RpcResponse::Reader reader = responseMessage.getRoot<piper::RpcResponse>(); @@ -127,7 +127,7 @@ loadPlugin(const LoadRequest &req) override { if (!m_transport->isOK()) { - throw std::runtime_error("Piper server failed to start"); + throw std::runtime_error("Piper server crashed or failed to start"); } LoadResponse resp; @@ -158,7 +158,7 @@ PluginConfiguration config) override { if (!m_transport->isOK()) { - throw std::runtime_error("Piper server failed to start"); + throw std::runtime_error("Piper server crashed or failed to start"); } ConfigurationRequest request; @@ -172,7 +172,7 @@ ReqId id = getId(); builder.getId().setNumber(id); - auto karr = call(message); + auto karr = call(message, true); capnp::FlatArrayMessageReader responseMessage(karr); piper::RpcResponse::Reader reader = responseMessage.getRoot<piper::RpcResponse>(); @@ -196,7 +196,7 @@ Vamp::RealTime timestamp) override { if (!m_transport->isOK()) { - throw std::runtime_error("Piper server failed to start"); + throw std::runtime_error("Piper server crashed or failed to start"); } ProcessRequest request; @@ -210,7 +210,7 @@ ReqId id = getId(); builder.getId().setNumber(id); - auto karr = call(message); + auto karr = call(message, false); capnp::FlatArrayMessageReader responseMessage(karr); piper::RpcResponse::Reader reader = responseMessage.getRoot<piper::RpcResponse>(); @@ -231,7 +231,7 @@ finish(PluginStub *plugin) override { if (!m_transport->isOK()) { - throw std::runtime_error("Piper server failed to start"); + throw std::runtime_error("Piper server crashed or failed to start"); } FinishRequest request; @@ -244,7 +244,7 @@ ReqId id = getId(); builder.getId().setNumber(id); - auto karr = call(message); + auto karr = call(message, true); capnp::FlatArrayMessageReader responseMessage(karr); piper::RpcResponse::Reader reader = responseMessage.getRoot<piper::RpcResponse>(); @@ -273,7 +273,7 @@ // Reload the plugin on the server side, and configure it as requested if (!m_transport->isOK()) { - throw std::runtime_error("Piper server failed to start"); + throw std::runtime_error("Piper server crashed or failed to start"); } if (m_mapper.havePlugin(plugin)) { @@ -334,10 +334,11 @@ } kj::Array<capnp::word> - call(capnp::MallocMessageBuilder &message) { + call(capnp::MallocMessageBuilder &message, bool slow) { auto arr = capnp::messageToFlatArray(message); auto responseBuffer = m_transport->call(arr.asChars().begin(), - arr.asChars().size()); + arr.asChars().size(), + slow); return toKJArray(responseBuffer); } @@ -358,7 +359,7 @@ ReqId id = getId(); builder.getId().setNumber(id); - auto karr = call(message); + auto karr = call(message, false); //!!! ... --> will also need some way to kill this process //!!! (from another thread)