SimGrid  3.21
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>

Inherits simgrid::kernel::routing::RoutedZone.

Public Member Functions

 DijkstraZone (NetZoneImpl *father, std::string name, resource::NetworkModel *netmodel, bool cached)
 
void seal () override
 Seal your netzone once you're done adding content, and before routing stuff through it. More...
 
 ~DijkstraZone () override
 
void get_local_route (NetPoint *src, NetPoint *dst, RouteCreationArgs *route, double *lat) override
 Probe the routing path between two points that are local to the called NetZone. More...
 
void add_route (NetPoint *src, NetPoint *dst, NetPoint *gw_src, NetPoint *gw_dst, std::vector< resource::LinkImpl *> &link_list, bool symmetrical) override
 
- Public Member Functions inherited from simgrid::kernel::routing::RoutedZone
 RoutedZone (NetZoneImpl *father, std::string name, resource::NetworkModel *netmodel)
 
void get_graph (xbt_graph_t graph, std::map< std::string, xbt_node_t > *nodes, std::map< std::string, xbt_edge_t > *edges) override
 
- Public Member Functions inherited from simgrid::kernel::routing::NetZoneImpl
s4u::NetZoneget_iface ()
 
simgrid::s4u::Hostcreate_host (const char *name, std::vector< double > *speed_per_pstate, int core_count, std::map< std::string, std::string > *props)
 Make an host within that NetZone. More...
 
virtual void add_bypass_route (NetPoint *src, NetPoint *dst, NetPoint *gw_src, NetPoint *gw_dst, std::vector< resource::LinkImpl *> &link_list, bool symmetrical)
 Creates a new route in this NetZone. More...
 
virtual int add_component (kernel::routing::NetPoint *elm)
 
virtual void add_route (kernel::routing::NetPoint *src, kernel::routing::NetPoint *dst, kernel::routing::NetPoint *gw_src, kernel::routing::NetPoint *gw_dst, std::vector< kernel::resource::LinkImpl *> &link_list, bool symmetrical)
 
unsigned int get_table_size ()
 
std::vector< kernel::routing::NetPoint * > get_vertices ()
 
NetZoneImplget_father ()
 
std::vector< NetZoneImpl * > * get_children ()
 
const std::string & get_name () const
 Retrieves the name of that netzone as a C++ string. More...
 
const char * get_cname () const
 Retrieves the name of that netzone as a C string. More...
 
std::vector< s4u::Host * > get_all_hosts ()
 
int get_host_count ()
 

Public Attributes

xbt_graph_t route_graph_ = nullptr
 
std::map< int, xbt_node_tgraph_node_map_
 
bool cached_
 
std::map< int, std::vector< int > > route_cache_
 
- Public Attributes inherited from simgrid::kernel::routing::NetZoneImpl
resource::NetworkModel * network_model_
 
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 get_global_route (routing::NetPoint *src, routing::NetPoint *dst, std::vector< resource::LinkImpl *> &links, double *latency)
 
- Protected Member Functions inherited from simgrid::kernel::routing::RoutedZone
virtual RouteCreationArgs * new_extended_route (RoutingMode hierarchy, NetPoint *src, NetPoint *dst, NetPoint *gw_src, NetPoint *gw_dst, std::vector< resource::LinkImpl *> &link_list, bool symmetrical, bool change_order)
 
void get_route_check_params (NetPoint *src, NetPoint *dst)
 
void add_route_check_params (NetPoint *src, NetPoint *dst, NetPoint *gw_src, NetPoint *gw_dst, std::vector< resource::LinkImpl *> &link_list, bool symmetrical)
 
virtual RouteCreationArgs * newExtendedRoute (RoutingMode hierarchy, NetPoint *src, NetPoint *dst, NetPoint *gw_src, NetPoint *gw_dst, std::vector< resource::LinkImpl *> &link_list, bool symmetrical, bool change_order)
 
void getRouteCheckParams (NetPoint *src, NetPoint *dst)
 
void addRouteCheckParams (NetPoint *src, NetPoint *dst, NetPoint *gw_src, NetPoint *gw_dst, std::vector< resource::LinkImpl *> &link_list, bool symmetrical)
 
- Protected Member Functions inherited from simgrid::kernel::routing::NetZoneImpl
 NetZoneImpl (NetZoneImpl *father, std::string name, resource::NetworkModel *network_model)
 
virtual ~NetZoneImpl ()
 
bool get_bypass_route (routing::NetPoint *src, routing::NetPoint *dst, std::vector< resource::LinkImpl *> &links, double *latency)
 retrieves the list of all routes of size 1 (of type src x dst x Link) More...
 

Constructor & Destructor Documentation

◆ DijkstraZone()

simgrid::kernel::routing::DijkstraZone::DijkstraZone ( NetZoneImpl father,
std::string  name,
resource::NetworkModel *  netmodel,
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::kernel::routing::NetZoneImpl.

◆ get_local_route()

void simgrid::kernel::routing::DijkstraZone::get_local_route ( NetPoint src,
NetPoint dst,
RouteCreationArgs *  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.

◆ add_route()

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

Member Data Documentation

◆ route_graph_

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

◆ graph_node_map_

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

◆ cached_

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

◆ route_cache_

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

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