SimGrid  3.18
Versatile Simulation of Distributed Systems
simgrid::kernel::routing::DijkstraZone Class Reference

Detailed Description

NetZone with an explicit routing computed on need with Dijsktra.

The path between components is computed each time you request it, using the Dijkstra algorithm. A cache can be used to reduce the computation.

This result in rather small platform file, very fast initialization, and very low memory requirements, but somehow long path resolution times.

#include <DijkstraZone.hpp>

Inheritance diagram for simgrid::kernel::routing::DijkstraZone:
simgrid::kernel::routing::RoutedZone simgrid::kernel::routing::NetZoneImpl simgrid::s4u::NetZone

Public Member Functions

 DijkstraZone (NetZone *father, std::string name, bool cached)
 
void seal () override
 Seal your netzone once you're done adding content, and before routing stuff through it. More...
 
 ~DijkstraZone () override
 
xbt_node_t routeGraphNewNode (int id, int graph_id)
 
xbt_node_t nodeMapSearch (int id)
 
void newRoute (int src_id, int dst_id, sg_platf_route_cbarg_t e_route)
 
void getLocalRoute (NetPoint *src, NetPoint *dst, sg_platf_route_cbarg_t route, double *lat) override
 Probe the routing path between two points that are local to the called NetZone. More...
 
void addRoute (NetPoint *src, NetPoint *dst, NetPoint *gw_src, NetPoint *gw_dst, std::vector< simgrid::surf::LinkImpl *> &link_list, bool symmetrical) override
 
- Public Member Functions inherited from simgrid::kernel::routing::RoutedZone
 RoutedZone (NetZone *father, std::string name)
 
void getGraph (xbt_graph_t graph, std::map< std::string, xbt_node_t > *nodes, std::map< std::string, xbt_edge_t > *edges) override
 
virtual sg_platf_route_cbarg_t newExtendedRoute (RoutingMode hierarchy, NetPoint *src, NetPoint *dst, NetPoint *gw_src, NetPoint *gw_dst, std::vector< simgrid::surf::LinkImpl *> &link_list, bool symmetrical, bool change_order)
 
- Public Member Functions inherited from simgrid::kernel::routing::NetZoneImpl
simgrid::s4u::HostcreateHost (const char *name, std::vector< double > *speedPerPstate, int coreAmount, std::map< std::string, std::string > *props)
 Make an host within that NetZone. More...
 
void addBypassRoute (NetPoint *src, NetPoint *dst, NetPoint *gw_src, NetPoint *gw_dst, std::vector< simgrid::surf::LinkImpl *> &link_list, bool symmetrical) override
 Creates a new route in this NetZone. More...
 
- Public Member Functions inherited from simgrid::s4u::NetZone
const std::stringgetName () const
 Retrieves the name of that netzone as a C++ string. More...
 
const char * getCname () const
 Retrieves the name of that netzone as a C string. More...
 
NetZonegetFather ()
 
std::vector< NetZone * > * getChildren ()
 
void getHosts (std::vector< s4u::Host *> *whereto)
 
std::unordered_map< std::string, std::string > * getProperties ()
 Get the properties assigned to a host. More...
 
const char * getProperty (const char *key)
 Retrieve the property value (or nullptr if not set) More...
 
void setProperty (const char *key, const char *value)
 
virtual int addComponent (kernel::routing::NetPoint *elm)
 

Public Attributes

xbt_graph_t routeGraph_ = nullptr
 
std::map< int, xbt_node_tgraphNodeMap_
 
bool cached_
 
std::map< int, std::vector< int > > routeCache_
 
- Public Attributes inherited from simgrid::kernel::routing::NetZoneImpl
RoutingMode hierarchy_ = RoutingMode::unset
 

Additional Inherited Members

- Public Types inherited from simgrid::kernel::routing::NetZoneImpl
enum  RoutingMode { RoutingMode::unset = 0, RoutingMode::base, RoutingMode::recursive }
 
- Static Public Member Functions inherited from simgrid::kernel::routing::NetZoneImpl
static void getGlobalRoute (routing::NetPoint *src, routing::NetPoint *dst, std::vector< surf::LinkImpl *> &links, double *latency)
 
- Static Public Attributes inherited from simgrid::s4u::NetZone
static simgrid::xbt::signal< void(bool symmetrical, kernel::routing::NetPoint *src, kernel::routing::NetPoint *dst, kernel::routing::NetPoint *gw_src, kernel::routing::NetPoint *gw_dst, std::vector< surf::LinkImpl * > &link_list)> onRouteCreation
 
static simgrid::xbt::signal< void(NetZone &)> onCreation
 
static simgrid::xbt::signal< void(NetZone &)> onSeal
 
- Protected Member Functions inherited from simgrid::kernel::routing::RoutedZone
void getRouteCheckParams (NetPoint *src, NetPoint *dst)
 
void addRouteCheckParams (kernel::routing::NetPoint *src, kernel::routing::NetPoint *dst, kernel::routing::NetPoint *gw_src, kernel::routing::NetPoint *gw_dst, std::vector< simgrid::surf::LinkImpl *> &link_list, bool symmetrical)
 
- Protected Member Functions inherited from simgrid::kernel::routing::NetZoneImpl
 NetZoneImpl (NetZone *father, std::string name)
 
virtual ~NetZoneImpl ()
 
bool getBypassRoute (routing::NetPoint *src, routing::NetPoint *dst, std::vector< surf::LinkImpl *> &links, double *latency)
 retrieves the list of all routes of size 1 (of type src x dst x Link) More...
 
- Protected Member Functions inherited from simgrid::s4u::NetZone
 NetZone (NetZone *father, std::string name)
 
virtual ~NetZone ()
 
unsigned int getTableSize ()
 
std::vector< kernel::routing::NetPoint * > getVertices ()
 

Constructor & Destructor Documentation

◆ DijkstraZone()

simgrid::kernel::routing::DijkstraZone::DijkstraZone ( NetZone father,
std::string  name,
bool  cached 
)

◆ ~DijkstraZone()

simgrid::kernel::routing::DijkstraZone::~DijkstraZone ( )
override

Member Function Documentation

◆ seal()

void simgrid::kernel::routing::DijkstraZone::seal ( )
overridevirtual

Seal your netzone once you're done adding content, and before routing stuff through it.

Reimplemented from simgrid::s4u::NetZone.

◆ routeGraphNewNode()

xbt_node_t simgrid::kernel::routing::DijkstraZone::routeGraphNewNode ( int  id,
int  graph_id 
)

◆ nodeMapSearch()

xbt_node_t simgrid::kernel::routing::DijkstraZone::nodeMapSearch ( int  id)

◆ newRoute()

void simgrid::kernel::routing::DijkstraZone::newRoute ( int  src_id,
int  dst_id,
sg_platf_route_cbarg_t  e_route 
)

◆ getLocalRoute()

void simgrid::kernel::routing::DijkstraZone::getLocalRoute ( NetPoint src,
NetPoint dst,
sg_platf_route_cbarg_t  into,
double *  latency 
)
overridevirtual

Probe the routing path between two points that are local to the called NetZone.

Parameters
srcwhere from
dstwhere to
intoContainer into which the traversed links and gateway informations should be pushed
latencyAccumulator in which the latencies should be added (caller must set it to 0)

Implements simgrid::kernel::routing::NetZoneImpl.

◆ addRoute()

void simgrid::kernel::routing::DijkstraZone::addRoute ( NetPoint src,
NetPoint dst,
NetPoint gw_src,
NetPoint gw_dst,
std::vector< simgrid::surf::LinkImpl *> &  link_list,
bool  symmetrical 
)
overridevirtual

Reimplemented from simgrid::s4u::NetZone.

Member Data Documentation

◆ routeGraph_

xbt_graph_t simgrid::kernel::routing::DijkstraZone::routeGraph_ = nullptr

◆ graphNodeMap_

std::map<int, xbt_node_t> simgrid::kernel::routing::DijkstraZone::graphNodeMap_

◆ cached_

bool simgrid::kernel::routing::DijkstraZone::cached_

◆ routeCache_

std::map<int, std::vector<int> > simgrid::kernel::routing::DijkstraZone::routeCache_

The documentation for this class was generated from the following files: