diff Plugins/Engine/PluginsManager.cpp @ 1581:357c4bb15701

Plugins have access to explicit error codes
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 25 Aug 2015 16:18:37 +0200
parents f967bdf8534e
children 0a2ad4a6858f
line wrap: on
line diff
--- a/Plugins/Engine/PluginsManager.cpp	Tue Aug 25 15:59:07 2015 +0200
+++ b/Plugins/Engine/PluginsManager.cpp	Tue Aug 25 16:18:37 2015 +0200
@@ -134,30 +134,29 @@
   }
 
 
-  int32_t PluginsManager::InvokeService(OrthancPluginContext* context,
-                                        _OrthancPluginService service, 
-                                        const void* params)
+  OrthancPluginErrorCode PluginsManager::InvokeService(OrthancPluginContext* context,
+                                                       _OrthancPluginService service, 
+                                                       const void* params)
   {
     switch (service)
     {
       case _OrthancPluginService_LogError:
         LOG(ERROR) << reinterpret_cast<const char*>(params);
-        return 0;
+        return OrthancPluginErrorCode_Success;
 
       case _OrthancPluginService_LogWarning:
         LOG(WARNING) << reinterpret_cast<const char*>(params);
-        return 0;
+        return OrthancPluginErrorCode_Success;
 
       case _OrthancPluginService_LogInfo:
         LOG(INFO) << reinterpret_cast<const char*>(params);
-        return 0;
+        return OrthancPluginErrorCode_Success;
 
       default:
         break;
     }
 
     PluginsManager* that = reinterpret_cast<PluginsManager*>(context->pluginsManager);
-    bool error = false;
 
     for (std::list<IPluginServiceProvider*>::iterator
            it = that->serviceProviders_.begin(); 
@@ -167,26 +166,19 @@
       {
         if ((*it)->InvokeService(service, params))
         {
-          return 0;
+          return OrthancPluginErrorCode_Success;
         }
       }
-      catch (OrthancException&)
+      catch (OrthancException& e)
       {
-        // This service provider has failed, go to the next
-        error = true;
+        // This service provider has failed
+        LOG(ERROR) << "Exception while invoking a plugin service: " << e.What();
+        return static_cast<OrthancPluginErrorCode>(e.GetErrorCode());
       }
     }
 
-    if (error)
-    {
-      // LOG(ERROR) << "Exception when dealing with service " << service;
-    }
-    else
-    {
-      LOG(ERROR) << "Plugin invoking unknown service " << service;
-    }
-
-    return -1;
+    LOG(ERROR) << "Plugin invoking unknown service: " << service;
+    return OrthancPluginErrorCode_UnknownPluginService;
   }