changeset 293:ae7397deffaa

Improve error handling (i.e. add some) for failure to initialise
author Chris Cannam <cannam@all-day-breakfast.com>
date Wed, 05 Jan 2022 14:02:19 +0000
parents 16842bf06026
children df381a2e6fa1
files vamp-server/simple-server.cpp
diffstat 1 files changed, 21 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/vamp-server/simple-server.cpp	Wed Jan 13 15:36:24 2021 +0000
+++ b/vamp-server/simple-server.cpp	Wed Jan 05 14:02:19 2022 +0000
@@ -461,16 +461,19 @@
     case RRType::Load:
         response.loadResponse =
             LoaderRequests().loadPlugin(request.loadRequest);
-        if (response.loadResponse.plugin != nullptr) {
-            mapper.addPlugin(response.loadResponse.plugin);
-            if (debug) {
-                cerr << "piper-vamp-server " << pid
-                     << ": loaded plugin, handle = "
-                     << mapper.pluginToHandle(response.loadResponse.plugin)
-                     << endl;
-            }
-            response.success = true;
+
+        if (!response.loadResponse.plugin) {
+            throw runtime_error("unable to load plugin");
         }
+            
+        mapper.addPlugin(response.loadResponse.plugin);
+        if (debug) {
+            cerr << "piper-vamp-server " << pid
+                 << ": loaded plugin, handle = "
+                 << mapper.pluginToHandle(response.loadResponse.plugin)
+                 << endl;
+        }
+        response.success = true;
         break;
         
     case RRType::Configure:
@@ -491,14 +494,16 @@
         }
 
         response.configurationResponse = LoaderRequests().configurePlugin(creq);
+
+        if (response.configurationResponse.outputs.empty()) {
+            throw runtime_error("plugin failed to initialise");
+        }
         
-        if (!response.configurationResponse.outputs.empty()) {
-            mapper.markConfigured
-                (h,
-                 creq.configuration.channelCount,
-                 response.configurationResponse.framing.blockSize);
-            response.success = true;
-        }
+        mapper.markConfigured
+            (h,
+             creq.configuration.channelCount,
+             response.configurationResponse.framing.blockSize);
+        response.success = true;
         break;
     }