Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
split surf_parse into a separate file to make it reusable from elsewhere
[simgrid.git] / src / bindings / lua / lua_platf.cpp
index eba4663..9b47ad0 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2019. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2010-2020. The SimGrid Team. All rights reserved.          */
 
 /* 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. */
@@ -11,6 +11,7 @@
 #include "src/surf/network_interface.hpp"
 #include "src/surf/surf_private.hpp"
 #include "src/surf/xml/platf_private.hpp"
+#include "xbt/parse_units.hpp"
 
 #include <boost/algorithm/string/classification.hpp>
 #include <boost/algorithm/string/split.hpp>
@@ -24,7 +25,7 @@
 
 #include <lauxlib.h>
 
-XBT_LOG_NEW_DEFAULT_CATEGORY(lua_platf, "Lua bindings (platform module)");
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(lua_platf, lua, "Lua bindings (platform module)");
 
 constexpr char PLATF_MODULE_NAME[] = "simgrid.engine";
 constexpr char AS_FIELDNAME[]      = "__simgrid_as";
@@ -65,20 +66,23 @@ static simgrid::s4u::Link::SharingPolicy link_policy_get_by_name(const char* pol
 int console_open(lua_State*)
 {
   sg_platf_init();
-  simgrid::s4u::on_platform_creation();
+  simgrid::s4u::Engine::on_platform_creation();
 
   return 0;
 }
 
 int console_close(lua_State*)
 {
-  simgrid::s4u::on_platform_created();
+  simgrid::s4u::Engine::on_platform_created();
   sg_platf_exit();
   return 0;
 }
 
 int console_add_backbone(lua_State *L) {
   simgrid::kernel::routing::LinkCreationArgs link;
+  lua_Debug ar;
+  lua_getstack(L, 1, &ar);
+  lua_getinfo(L, "Sl", &ar);
 
   link.properties = nullptr;
 
@@ -94,14 +98,16 @@ int console_add_backbone(lua_State *L) {
   type = lua_gettable(L, -2);
   lua_ensure(type == LUA_TSTRING || type == LUA_TNUMBER,
       "Attribute 'bandwidth' must be specified for backbone and must either be a string (in the right format; see docs) or a number.");
-  link.bandwidths.push_back(surf_parse_get_bandwidth(lua_tostring(L, -1), "bandwidth of backbone", link.id.c_str()));
+  link.bandwidths.push_back(xbt_parse_get_bandwidth(ar.short_src, ar.currentline, lua_tostring(L, -1),
+                                                    "bandwidth of backbone", link.id.c_str()));
   lua_pop(L, 1);
 
   lua_pushstring(L, "lat");
   type = lua_gettable(L, -2);
   lua_ensure(type == LUA_TSTRING || type == LUA_TNUMBER,
       "Attribute 'lat' must be specified for backbone and must either be a string (in the right format; see docs) or a number.");
-  link.latency = surf_parse_get_time(lua_tostring(L, -1), "latency of backbone", link.id.c_str());
+  link.latency =
+      xbt_parse_get_time(ar.short_src, ar.currentline, lua_tostring(L, -1), "latency of backbone", link.id.c_str());
   lua_pop(L, 1);
 
   lua_pushstring(L, "sharing_policy");
@@ -151,6 +157,9 @@ int console_add_host___link(lua_State *L) {
 int console_add_host(lua_State *L) {
   simgrid::kernel::routing::HostCreationArgs host;
   int type;
+  lua_Debug ar;
+  lua_getstack(L, 1, &ar);
+  lua_getinfo(L, "Sl", &ar);
 
   // we get values from the table passed as argument
   lua_ensure(lua_istable(L, -1),
@@ -172,7 +181,8 @@ int console_add_host(lua_State *L) {
   if (type == LUA_TNUMBER)
     host.speed_per_pstate.push_back(lua_tointeger(L, -1));
   else // LUA_TSTRING
-    host.speed_per_pstate.push_back(surf_parse_get_speed(lua_tostring(L, -1), "speed of host", host.id));
+    host.speed_per_pstate.push_back(
+        xbt_parse_get_speed(ar.short_src, ar.currentline, lua_tostring(L, -1), "speed of host", host.id));
   lua_pop(L, 1);
 
   // get core
@@ -209,6 +219,9 @@ int console_add_host(lua_State *L) {
 
 int  console_add_link(lua_State *L) {
   simgrid::kernel::routing::LinkCreationArgs link;
+  lua_Debug ar;
+  lua_getstack(L, 1, &ar);
+  lua_getinfo(L, "Sl", &ar);
 
   const char* policy;
 
@@ -230,7 +243,8 @@ int  console_add_link(lua_State *L) {
   if (type == LUA_TNUMBER)
     link.bandwidths.push_back(lua_tonumber(L, -1));
   else // LUA_TSTRING
-    link.bandwidths.push_back(surf_parse_get_bandwidth(lua_tostring(L, -1), "bandwidth of link", link.id.c_str()));
+    link.bandwidths.push_back(xbt_parse_get_bandwidth(ar.short_src, ar.currentline, lua_tostring(L, -1),
+                                                      "bandwidth of link", link.id.c_str()));
   lua_pop(L, 1);
 
   //get latency value
@@ -241,7 +255,8 @@ int  console_add_link(lua_State *L) {
   if (type == LUA_TNUMBER)
     link.latency = lua_tonumber(L, -1);
   else // LUA_TSTRING
-    link.latency = surf_parse_get_time(lua_tostring(L, -1), "latency of link", link.id.c_str());
+    link.latency =
+        xbt_parse_get_time(ar.short_src, ar.currentline, lua_tostring(L, -1), "latency of link", link.id.c_str());
   lua_pop(L, 1);
 
   /*Optional Arguments  */