Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Define simgrid::xbt::InitializationError (please Sonar).
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Wed, 20 Nov 2019 14:23:34 +0000 (15:23 +0100)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Wed, 20 Nov 2019 14:28:46 +0000 (15:28 +0100)
include/simgrid/Exception.hpp
src/plugins/host_energy.cpp
src/plugins/link_energy.cpp
src/xbt/exception.cpp

index 8127e89..785a9f1 100644 (file)
@@ -64,6 +64,12 @@ public:
   ~ImpossibleError();
 };
 
+class XBT_PUBLIC InitializationError : public std::logic_error {
+public:
+  explicit InitializationError(const std::string& arg) : std::logic_error(arg) {}
+  ~InitializationError();
+};
+
 class XBT_PUBLIC UnimplementedError : public std::logic_error {
 public:
   explicit UnimplementedError(const std::string& arg) : std::logic_error(arg) {}
index bd348e2..175c455 100644 (file)
@@ -3,6 +3,7 @@
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
+#include "simgrid/Exception.hpp"
 #include "simgrid/plugins/energy.h"
 #include "simgrid/s4u/Engine.hpp"
 #include "simgrid/s4u/Exec.hpp"
@@ -584,8 +585,8 @@ void sg_host_energy_update_all()
 static void ensure_plugin_inited()
 {
   if (not HostEnergy::EXTENSION_ID.valid())
-    throw std::logic_error("The Energy plugin is not active. Please call sg_host_energy_plugin_init() before calling "
-                           "any function related to that plugin.");
+    throw simgrid::xbt::InitializationError("The Energy plugin is not active. Please call sg_host_energy_plugin_init() "
+                                            "before calling any function related to that plugin.");
 }
 
 /** @ingroup plugin_host_energy
index b2b5e10..3a81581 100644 (file)
@@ -3,6 +3,7 @@
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
+#include "simgrid/Exception.hpp"
 #include "simgrid/plugins/energy.h"
 #include "simgrid/s4u/Engine.hpp"
 #include "src/surf/network_interface.hpp"
@@ -229,7 +230,7 @@ void sg_link_energy_plugin_init()
 double sg_link_get_consumed_energy(sg_link_t link)
 {
   if (not LinkEnergy::EXTENSION_ID.valid())
-    throw std::logic_error("The Energy plugin is not active. Please call sg_link_energy_plugin_init() before calling "
-                           "sg_link_get_consumed_energy().");
+    throw simgrid::xbt::InitializationError("The Energy plugin is not active. Please call sg_link_energy_plugin_init() "
+                                            "before calling sg_link_get_consumed_energy().");
   return link->extension<LinkEnergy>()->get_consumed_energy();
 }
index 7e4366a..2d0748a 100644 (file)
@@ -27,8 +27,9 @@ void _xbt_throw(char* message, int value, const char* file, int line, const char
 namespace simgrid {
 namespace xbt {
 
-ImpossibleError::~ImpossibleError()       = default;
-UnimplementedError::~UnimplementedError() = default;
+ImpossibleError::~ImpossibleError()         = default;
+InitializationError::~InitializationError() = default;
+UnimplementedError::~UnimplementedError()   = default;
 
 void log_exception(e_xbt_log_priority_t prio, const char* context, std::exception const& exception)
 {