X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8e5684cc6c1d3bb451433394ddc4a64831f0e7f2..a12a8405067d2569298b6943eb03e3e6b1e33108:/src/surf/network_ns3.cpp diff --git a/src/surf/network_ns3.cpp b/src/surf/network_ns3.cpp index f8a827ea07..8cd88b5d3b 100644 --- a/src/surf/network_ns3.cpp +++ b/src/surf/network_ns3.cpp @@ -19,6 +19,7 @@ #include "src/instr/instr_private.hpp" // TRACE_is_enabled(). FIXME: remove by subscribing tracing to the surf signals #include "src/kernel/routing/NetPoint.hpp" +#include "simgrid/plugins/energy.h" #include "simgrid/s4u/Engine.hpp" #include "simgrid/s4u/NetZone.hpp" @@ -47,9 +48,9 @@ simgrid::xbt::Extension NetPoin NetPointNs3::NetPointNs3() { - ns3::Ptr node = ns3::CreateObject(0); - stack.Install(node); - nodes.Add(node); + ns3Node_ = ns3::CreateObject(0); + stack.Install(ns3Node_); + nodes.Add(ns3Node_); node_num = number_of_nodes++; } @@ -143,6 +144,9 @@ namespace simgrid { namespace surf { NetworkNS3Model::NetworkNS3Model() : NetworkModel() { + xbt_assert(not sg_link_energy_is_inited(), + "LinkEnergy plugin and NS3 network models are not compatible. Are you looking for Ecofen, maybe?"); + NetPointNs3::EXTENSION_ID = simgrid::kernel::routing::NetPoint::extension_create(); ns3_initialize(ns3_tcp_model.get().c_str()); @@ -152,6 +156,7 @@ NetworkNS3Model::NetworkNS3Model() : NetworkModel() { XBT_VERB("SimGrid's %s is known as node %d within NS3", pt->getCname(), pt->extension()->node_num); }); simgrid::surf::on_cluster.connect(&clusterCreation_cb); + simgrid::s4u::onPlatformCreated.connect(&postparse_cb); simgrid::s4u::NetZone::onRouteCreation.connect(&routeCreation_cb); } @@ -233,7 +238,7 @@ void NetworkNS3Model::updateActionsState(double now, double delta) XBT_DEBUG("Destroy socket %p of action %p", ns3Socket.c_str(), action); action->finish(Action::State::done); } else { - XBT_DEBUG("Socket %p sent %d bytes out of %d (%d remaining)", ns3Socket.c_str(), sgFlow->sentBytes_, + XBT_DEBUG("Socket %p sent %u bytes out of %u (%u remaining)", ns3Socket.c_str(), sgFlow->sentBytes_, sgFlow->totalBytes_, sgFlow->remaining_); } } @@ -341,8 +346,8 @@ void ns3_create_flow(simgrid::s4u::Host* src, simgrid::s4u::Host* dst, unsigned int node1 = src->pimpl_netpoint->extension()->node_num; unsigned int node2 = dst->pimpl_netpoint->extension()->node_num; - ns3::Ptr src_node = nodes.Get(node1); - ns3::Ptr dst_node = nodes.Get(node2); + ns3::Ptr src_node = src->pimpl_netpoint->extension()->ns3Node_; + ns3::Ptr dst_node = dst->pimpl_netpoint->extension()->ns3Node_; xbt_assert(node2 < IPV4addr.size(), "Element %s is unknown to NS3. Is it connected to any one-hop link?", dst->pimpl_netpoint->getCname()); @@ -449,8 +454,8 @@ void ns3_add_link(NetPointNs3* src, NetPointNs3* dst, double bw, double lat) { int srcNum = src->node_num; int dstNum = dst->node_num; - ns3::Ptr a = nodes.Get(srcNum); - ns3::Ptr b = nodes.Get(dstNum); + ns3::Ptr a = src->ns3Node_; + ns3::Ptr b = dst->ns3Node_; XBT_DEBUG("\tAdd PTP from %d to %d bw:'%f Bps' lat:'%fs'", srcNum, dstNum, bw, lat); pointToPoint.SetDeviceAttribute("DataRate",