changeset 56:815e94fedc1c

Introduce ListResponse type as well
author Chris Cannam <c.cannam@qmul.ac.uk>
date Mon, 19 Sep 2016 14:10:19 +0100
parents 38780f15ac8d
children 7aec704705c7
files bits/RequestOrResponse.h capnproto/VampnProto.h json/VampJson.h utilities/json-cli.cpp utilities/vampipe-convert.cpp utilities/vampipe-server.cpp
diffstat 6 files changed, 19 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/bits/RequestOrResponse.h	Mon Sep 19 13:35:56 2016 +0100
+++ b/bits/RequestOrResponse.h	Mon Sep 19 14:10:19 2016 +0100
@@ -62,7 +62,7 @@
     bool success;
     std::string errorText;
 
-    std::vector<Vamp::HostExt::PluginStaticData> listResponse;
+    Vamp::HostExt::ListResponse listResponse;
     Vamp::HostExt::LoadRequest loadRequest;
     Vamp::HostExt::LoadResponse loadResponse;
     Vamp::HostExt::ConfigurationRequest configurationRequest;
--- a/capnproto/VampnProto.h	Mon Sep 19 13:35:56 2016 +0100
+++ b/capnproto/VampnProto.h	Mon Sep 19 14:10:19 2016 +0100
@@ -682,15 +682,13 @@
 
     static void
     buildVampResponse_List(VampResponse::Builder &b,
-                           std::string errorText,
-                           const std::vector<Vamp::HostExt::PluginStaticData> &d) {
-        b.setSuccess(errorText == "");
-        b.setErrorText(errorText);
+                           const Vamp::HostExt::ListResponse &resp) {
+        b.setSuccess(true);
         auto r = b.getResponse().initList();
-        auto p = r.initPlugins(d.size());
-        for (size_t i = 0; i < d.size(); ++i) {
+        auto p = r.initPlugins(resp.pluginData.size());
+        for (size_t i = 0; i < resp.pluginData.size(); ++i) {
             auto pd = p[i];
-            buildPluginStaticData(pd, d[i]);
+            buildPluginStaticData(pd, resp.pluginData[i]);
         }
     }
     
@@ -706,7 +704,6 @@
                            const Vamp::HostExt::LoadResponse &resp,
                            const PluginHandleMapper &pmapper) {
         b.setSuccess(resp.plugin != 0);
-        b.setErrorText("");
         auto u = b.getResponse().initLoad();
         buildLoadResponse(u, resp, pmapper);
     }
@@ -724,7 +721,6 @@
                                 const Vamp::HostExt::ConfigurationResponse &cr,
                                 const PluginHandleMapper &pmapper) {
         b.setSuccess(!cr.outputs.empty());
-        b.setErrorText("");
         auto u = b.getResponse().initConfigure();
         buildConfigurationResponse(u, cr, pmapper);
     }
@@ -742,7 +738,6 @@
                               const Vamp::HostExt::ProcessResponse &pr,
                               const PluginHandleMapper &pmapper) {
         b.setSuccess(true);
-        b.setErrorText("");
         auto u = b.getResponse().initProcess();
         buildProcessResponse(u, pr, pmapper);
     }
@@ -844,18 +839,18 @@
     }
 
     static void
-    readVampResponse_List(std::vector<Vamp::HostExt::PluginStaticData> &v,
+    readVampResponse_List(Vamp::HostExt::ListResponse &resp,
                           const VampResponse::Reader &r) {
         if (getRequestResponseType(r) != RRType::List) {
             throw std::logic_error("not a list response");
         }
-        v.clear();
+        resp.pluginData.clear();
         if (r.getSuccess()) {
             auto pp = r.getResponse().getList().getPlugins();
             for (const auto &p: pp) {
                 Vamp::HostExt::PluginStaticData psd;
                 readPluginStaticData(psd, p);
-                v.push_back(psd);
+                resp.pluginData.push_back(psd);
             }
         }
     }
--- a/json/VampJson.h	Mon Sep 19 13:35:56 2016 +0100
+++ b/json/VampJson.h	Mon Sep 19 14:10:19 2016 +0100
@@ -927,7 +927,7 @@
 
     static json11::Json
     fromVampResponse_List(std::string errorText,
-                          const std::vector<Vamp::HostExt::PluginStaticData> &d) {
+                          const Vamp::HostExt::ListResponse &resp) {
 
         json11::Json::object jo;
         jo["type"] = "list";
@@ -935,7 +935,7 @@
         jo["errorText"] = errorText;
 
         json11::Json::array arr;
-        for (const auto &a: d) {
+        for (const auto &a: resp.pluginData) {
             arr.push_back(fromPluginStaticData(a));
         }
         json11::Json::object po;
@@ -1119,16 +1119,16 @@
         checkTypeField(j, "list");
     }
 
-    static std::vector<Vamp::HostExt::PluginStaticData>
+    static Vamp::HostExt::ListResponse
     toVampResponse_List(json11::Json j) {
 
-        std::vector<Vamp::HostExt::PluginStaticData> arr;
+        Vamp::HostExt::ListResponse resp;
         if (successful(j)) {
             for (const auto &a: j["content"]["plugins"].array_items()) {
-                arr.push_back(toPluginStaticData(a));
+                resp.pluginData.push_back(toPluginStaticData(a));
             }
         }
-        return arr;
+        return resp;
     }
 
     static Vamp::HostExt::LoadRequest
--- a/utilities/json-cli.cpp	Mon Sep 19 13:35:56 2016 +0100
+++ b/utilities/json-cli.cpp	Mon Sep 19 14:10:19 2016 +0100
@@ -58,10 +58,10 @@
     }
     
     auto loader = PluginLoader::getInstance();
-    auto pluginData = loader->listPluginData();
+    auto resp = loader->listPluginData();
 
     Json::array j;
-    for (const auto &pd: pluginData) {
+    for (const auto &pd: resp.pluginData) {
 	j.push_back(VampJson::fromPluginStaticData(pd));
     }
     return Json(j);
--- a/utilities/vampipe-convert.cpp	Mon Sep 19 13:35:56 2016 +0100
+++ b/utilities/vampipe-convert.cpp	Mon Sep 19 14:10:19 2016 +0100
@@ -365,7 +365,7 @@
 	switch (rr.type) {
 
 	case RRType::List:
-	    VampnProto::buildVampResponse_List(builder, "", rr.listResponse);
+	    VampnProto::buildVampResponse_List(builder, rr.listResponse);
 	    break;
 	case RRType::Load:
 	    VampnProto::buildVampResponse_Load(builder, rr.loadResponse, mapper);
--- a/utilities/vampipe-server.cpp	Mon Sep 19 13:35:56 2016 +0100
+++ b/utilities/vampipe-server.cpp	Mon Sep 19 14:10:19 2016 +0100
@@ -89,7 +89,7 @@
 	switch (rr.type) {
 
 	case RRType::List:
-	    VampnProto::buildVampResponse_List(builder, "", rr.listResponse);
+	    VampnProto::buildVampResponse_List(builder, rr.listResponse);
 	    break;
 	case RRType::Load:
 	    VampnProto::buildVampResponse_Load(builder, rr.loadResponse, mapper);