#include "simgrid/host.h"
#include "src/surf/xml/platf.hpp"
+#include <map>
+#include <string>
#include <vector>
SG_BEGIN_DECL()
const char* link_down;
} s_sg_platf_host_link_cbarg_t, *sg_platf_host_link_cbarg_t;
-typedef struct {
- const char* id;
- double bandwidth;
- tmgr_trace_t bandwidth_trace;
- double latency;
- tmgr_trace_t latency_trace;
- tmgr_trace_t state_trace;
- e_surf_link_sharing_policy_t policy;
- xbt_dict_t properties;
-} s_sg_platf_link_cbarg_t, *sg_platf_link_cbarg_t;
+class LinkCreationArgs {
+public:
+ std::string id;
+ double bandwidth = 0;
+ tmgr_trace_t bandwidth_trace = nullptr;
+ double latency = 0;
+ tmgr_trace_t latency_trace = nullptr;
+ tmgr_trace_t state_trace = nullptr;
+ e_surf_link_sharing_policy_t policy = SURF_LINK_FATPIPE;
+ xbt_dict_t properties = nullptr;
+};
typedef struct s_sg_platf_peer_cbarg *sg_platf_peer_cbarg_t;
typedef struct s_sg_platf_peer_cbarg {
typedef struct s_sg_platf_route_cbarg *sg_platf_route_cbarg_t;
typedef struct s_sg_platf_route_cbarg {
bool symmetrical;
- sg_netcard_t src;
- sg_netcard_t dst;
- sg_netcard_t gw_src;
- sg_netcard_t gw_dst;
- std::vector<Link*> *link_list;
+ sg_netpoint_t src;
+ sg_netpoint_t dst;
+ sg_netpoint_t gw_src;
+ sg_netpoint_t gw_dst;
+ std::vector<simgrid::surf::LinkImpl*>* link_list;
} s_sg_platf_route_cbarg_t;
typedef struct s_sg_platf_cluster_cbarg *sg_platf_cluster_cbarg_t;
const char* prefix;
const char* suffix;
std::vector<int>* radicals;
- double speed;
+ std::vector<double> speeds;
int core_amount;
double bw;
double lat;
const char* content;
const char* content_type;
xbt_dict_t properties;
- xbt_dict_t model_properties;
+ std::map<std::string, std::string>* model_properties;
sg_size_t size;
} s_sg_platf_storage_type_cbarg_t, *sg_platf_storage_type_cbarg_t;
#define SG_PLATF_AS_INITIALIZER {nullptr,0}
/********** Routing **********/
-void routing_cluster_add_backbone(Link* bb);
+void routing_cluster_add_backbone(simgrid::surf::LinkImpl* bb);
/*** END of the parsing cruft ***/
XBT_PUBLIC(void) sg_platf_begin(); // Start a new platform
XBT_PUBLIC(void) sg_platf_new_host (sg_platf_host_cbarg_t host); // Add an host to the currently described AS
XBT_PUBLIC(void) sg_platf_new_hostlink(sg_platf_host_link_cbarg_t h); // Add an host_link to the currently described AS
-XBT_PUBLIC(simgrid::kernel::routing::NetCard*)
+XBT_PUBLIC(simgrid::kernel::routing::NetPoint*)
sg_platf_new_router(const char* name, const char* coords); // Add a router to the currently described AS
-XBT_PUBLIC(void) sg_platf_new_link (sg_platf_link_cbarg_t link); // Add a link to the currently described AS
+XBT_PUBLIC(void) sg_platf_new_link(LinkCreationArgs* link); // Add a link to the currently described AS
XBT_PUBLIC(void) sg_platf_new_peer (sg_platf_peer_cbarg_t peer); // Add a peer to the currently described AS
XBT_PUBLIC(void) sg_platf_new_cluster(sg_platf_cluster_cbarg_t clust); // Add a cluster to the currently described AS
XBT_PUBLIC(void) sg_platf_new_cabinet(sg_platf_cabinet_cbarg_t cabinet); // Add a cabinet to the currently described AS
XBT_PUBLIC(void) routing_route_free(sg_platf_route_cbarg_t route);
/********** Instr. **********/
XBT_PRIVATE void sg_instr_AS_begin(sg_platf_AS_cbarg_t AS);
-XBT_PRIVATE void sg_instr_new_router(const char* name, const char* coords);
+XBT_PRIVATE void sg_instr_new_router(const char* name);
XBT_PRIVATE void sg_instr_new_host(simgrid::s4u::Host& host);
XBT_PRIVATE void sg_instr_AS_end();