#include "src/surf/network_interface.hpp"
#include "surf/surf_routing.h" // FIXME: brain dead public header
-#include "src/surf/AsImpl.hpp"
-#include "src/surf/AsCluster.hpp"
-#include "src/surf/AsClusterTorus.hpp"
-#include "src/surf/AsClusterFatTree.hpp"
-#include "src/surf/AsClusterDragonfly.hpp"
-#include "src/surf/AsDijkstra.hpp"
-#include "src/surf/AsFloyd.hpp"
-#include "src/surf/AsFull.hpp"
-#include "src/surf/AsNone.hpp"
-#include "src/surf/AsVivaldi.hpp"
+#include "src/routing/AsImpl.hpp"
+#include "src/routing/AsCluster.hpp"
+#include "src/routing/AsClusterTorus.hpp"
+#include "src/routing/AsClusterFatTree.hpp"
+#include "src/routing/AsClusterDragonfly.hpp"
+#include "src/routing/AsDijkstra.hpp"
+#include "src/routing/AsFloyd.hpp"
+#include "src/routing/AsFull.hpp"
+#include "src/routing/AsNone.hpp"
+#include "src/routing/AsVivaldi.hpp"
XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(surf_parse);
/** @brief Add a "router" to the network element list */
void sg_platf_new_router(sg_platf_router_cbarg_t router)
{
+ using simgrid::routing::AsCluster;
simgrid::routing::AsImpl* current_routing = routing_get_current();
if (current_routing->hierarchy_ == simgrid::routing::AsImpl::RoutingMode::unset)
xbt_lib_set(as_router_lib, router->id, COORD_ASR_LEVEL, (void *) ctn);
}
+ auto cluster = dynamic_cast<AsCluster*>(current_routing);
+ if(cluster != nullptr)
+ cluster->router_ = static_cast<simgrid::routing::NetCard*>(xbt_lib_get_or_null(as_router_lib, router->id, ROUTING_ASR_LEVEL));
+
if (TRACE_is_enabled() && TRACE_needs_platform())
sg_instr_new_router(router);
}
msg->data[msg->used-3]='\0';
xbt_die("%s", msg->data);
}
- xbt_main_func_t parse_code = SIMIX_get_registered_function(process->function);
- xbt_assert(parse_code, "Function '%s' unknown", process->function);
+ simgrid::simix::ActorCodeFactory& factory = SIMIX_get_actor_code_factory(process->function);
+ xbt_assert(factory, "Function '%s' unknown", process->function);
double start_time = process->start_time;
double kill_time = process->kill_time;
int auto_restart = process->on_failure == SURF_PROCESS_ON_FAILURE_DIE ? 0 : 1;
- std::function<void()> code = simgrid::xbt::wrapMain(parse_code, process->argc, process->argv);
+ std::vector<std::string> args(process->argv, process->argv + process->argc);
+ std::function<void()> code = factory(std::move(args));
smx_process_arg_t arg = nullptr;
smx_process_t process_created = nullptr;
router.id = router_id;
router.coord = peer->coord;
sg_platf_new_router(&router);
- static_cast<AsCluster*>(current_routing)->router_ = static_cast<NetCard*>(xbt_lib_get_or_null(as_router_lib, router.id, ROUTING_ASR_LEVEL));
XBT_DEBUG("</AS>");
sg_platf_new_AS_seal();