Mercurial > hg > piper-cpp
changeset 12:828930f9a65d
Configuration request/response structs
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Tue, 17 May 2016 13:52:51 +0100 |
parents | aa61cb5c5754 |
children | 1d13354ddc44 |
files | capnproto/vamp.capnp json/VampJson.h utilities/json-cli.cpp |
diffstat | 3 files changed, 41 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/capnproto/vamp.capnp Tue May 17 11:15:25 2016 +0100 +++ b/capnproto/vamp.capnp Tue May 17 13:52:51 2016 +0100 @@ -147,6 +147,7 @@ load @1 :LoadRequest; configure @2 :ConfigurationRequest; process @3 :ProcessRequest; + finish @4 :Void; # getRemainingFeatures and unload plugin } } @@ -158,6 +159,7 @@ load @3 :LoadResponse; configure @4 :ConfigurationResponse; process @5 :FeatureSet; + finish @6 :FeatureSet; } }
--- a/json/VampJson.h Tue May 17 11:15:25 2016 +0100 +++ b/json/VampJson.h Tue May 17 13:52:51 2016 +0100 @@ -149,7 +149,7 @@ } return json11::Json(jo); } - + static Vamp::Plugin::OutputDescriptor toOutputDescriptor(json11::Json j) { @@ -658,7 +658,7 @@ { "pluginKey", json11::Json::STRING }, { "inputSampleRate", json11::Json::NUMBER }, { "adapterFlags", json11::Json::ARRAY } }, err)) { - throw VampJson::Failure("malformed load request: " + err); + throw Failure("malformed load request: " + err); } Vamp::HostExt::LoadRequest req; @@ -690,7 +690,7 @@ { "pluginHandle", json11::Json::NUMBER }, { "staticData", json11::Json::OBJECT }, { "defaultConfiguration", json11::Json::OBJECT } }, err)) { - throw VampJson::Failure("malformed load response: " + err); + throw Failure("malformed load response: " + err); } Vamp::HostExt::LoadResponse resp; @@ -699,6 +699,35 @@ resp.defaultConfiguration = toPluginConfiguration(j["defaultConfiguration"]); return resp; } + + static json11::Json + fromConfigurationResponse(const Vamp::HostExt::ConfigurationResponse &cr) { + + json11::Json::object jout; + + json11::Json::array outs; + for (auto &d: cr.outputs) { + outs.push_back(fromOutputDescriptor(d)); + } + jout["outputList"] = outs; + + return json11::Json(jout); + } + + static Vamp::HostExt::ConfigurationResponse toConfigurationResponse(json11::Json j) { + + Vamp::HostExt::ConfigurationResponse cr; + + if (!j["outputList"].is_array()) { + throw Failure("array expected for output list"); + } + + for (const auto &o: j["outputList"].array_items()) { + cr.outputs.push_back(toOutputDescriptor(o)); + } + + return cr; + } }; }
--- a/utilities/json-cli.cpp Tue May 17 11:15:25 2016 +0100 +++ b/utilities/json-cli.cpp Tue May 17 13:52:51 2016 +0100 @@ -73,7 +73,7 @@ return response; } -Vamp::Plugin::OutputList +Vamp::HostExt::ConfigurationResponse configurePlugin(Vamp::Plugin *plugin, json11::Json j) { auto config = VampJson::toPluginConfiguration(j); @@ -83,8 +83,10 @@ if (outputs.empty()) { throw VampJson::Failure("plugin initialisation failed (invalid channelCount, stepSize, blockSize?)"); } - - return outputs; + + Vamp::HostExt::ConfigurationResponse response; + response.outputs = outputs; + return response; } Json @@ -139,21 +141,13 @@ Json config = j["configuration"]; - configurePlugin(plugin, config); + auto response = configurePlugin(plugin, config); mapper.markInitialised(handle); cerr << "Configured and initialised plugin " << handle << endl; - //!!! to VampJson: - Json::object jout; - Json::array outs; - Vamp::Plugin::OutputList vouts = plugin->getOutputDescriptors(); - for (auto &o: vouts) { - outs.push_back(VampJson::fromOutputDescriptor(o)); - } - jout["outputList"] = outs; - return Json(jout); + return VampJson::fromConfigurationResponse(response); } Json