Mercurial > hg > piper-vamp-js
diff VamPipePluginLibrary.cpp @ 81:5e6ff69b4209
Make base64/text selectable when serialising process and feature blocks; add base64 version as an output format for vampipe-convert; make VamPipePluginLibrary switch to returning base64 encoding as soon as it is fed any as input
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Thu, 08 Sep 2016 15:27:48 +0100 |
parents | c2a90b45642e |
children | a313ce2577ea |
line wrap: on
line diff
--- a/VamPipePluginLibrary.cpp Wed Sep 07 16:38:24 2016 +0100 +++ b/VamPipePluginLibrary.cpp Thu Sep 08 15:27:48 2016 +0100 @@ -64,7 +64,8 @@ return j; } -VamPipePluginLibrary::VamPipePluginLibrary(vector<VamPipeAdapterBase *> pp) +VamPipePluginLibrary::VamPipePluginLibrary(vector<VamPipeAdapterBase *> pp) : + m_useBase64(false) { for (VamPipeAdapterBase *p: pp) { string key = p->getStaticData().pluginKey; @@ -73,7 +74,7 @@ } RequestOrResponse -VamPipePluginLibrary::readRequest(string req) const +VamPipePluginLibrary::readRequest(string req) { RequestOrResponse rr; rr.direction = RequestOrResponse::Request; @@ -82,6 +83,7 @@ //!!! reduce, reduce rr.type = VampJson::getRequestResponseType(j); + VampJson::BufferSerialisation serialisation = VampJson::BufferSerialisation::Text; switch (rr.type) { @@ -95,7 +97,7 @@ rr.configurationRequest = VampJson::toVampRequest_Configure(j, m_mapper); break; case RRType::Process: - rr.processRequest = VampJson::toVampRequest_Process(j, m_mapper); + rr.processRequest = VampJson::toVampRequest_Process(j, m_mapper, serialisation); break; case RRType::Finish: rr.finishPlugin = VampJson::toVampRequest_Finish(j, m_mapper); @@ -104,6 +106,10 @@ break; } + if (serialisation == VampJson::BufferSerialisation::Base64) { + m_useBase64 = true; + } + return rr; } @@ -112,6 +118,11 @@ { Json j; + VampJson::BufferSerialisation serialisation = + (m_useBase64 ? + VampJson::BufferSerialisation::Base64 : + VampJson::BufferSerialisation::Text); + switch (rr.type) { case RRType::List: @@ -124,10 +135,10 @@ j = VampJson::fromVampResponse_Configure(rr.configurationResponse); break; case RRType::Process: - j = VampJson::fromVampResponse_Process(rr.processResponse); + j = VampJson::fromVampResponse_Process(rr.processResponse, serialisation); break; case RRType::Finish: - j = VampJson::fromVampResponse_Finish(rr.finishResponse); + j = VampJson::fromVampResponse_Finish(rr.finishResponse, serialisation); break; case RRType::NotValid: break; @@ -189,6 +200,7 @@ try { request = readRequest(req); } catch (const std::exception &e) { + std::cerr << "FAILURE" << std::endl; return VampJson::fromException(e, RRType::NotValid).dump(); } @@ -253,7 +265,7 @@ } response.processResponse.features = - preq.plugin->process(fbuffers, preq.timestamp); + preq.plugin->process(fbuffers, preq.timestamp); response.success = true; delete[] fbuffers;