X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7c878c7f73356568b2cf6c801d90e44a08a1e233..e6bc6eb53997f4648bf3207348c060e9f50ee282:/src/surf/gtnets/gtnets_topology.h diff --git a/src/surf/gtnets/gtnets_topology.h b/src/surf/gtnets/gtnets_topology.h index 6202438c15..a73ad4d925 100644 --- a/src/surf/gtnets/gtnets_topology.h +++ b/src/surf/gtnets/gtnets_topology.h @@ -1,3 +1,8 @@ +/* Copyright (c) 2007, 2009, 2010. The SimGrid Team. + * All rights reserved. */ + +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ #ifndef _GTNETS_TOPOLOGY_H @@ -5,97 +10,92 @@ #include #include +#include #include -#define LEFTSIDE 0 -#define RIGHTSIDE 1 - using namespace std; -class SGLink; - -class SGNode{ +class GTNETS_Link; - public: - SGNode(int id, int hostid); - ~SGNode(); +class GTNETS_Node { - void add_link(SGLink*); +public: + GTNETS_Node(int); + GTNETS_Node(const GTNETS_Node & node); + ~GTNETS_Node(); - //get other link than the link with the given id. - //Note it's only for the case the node has two links. - SGLink* other_link(int); - - bool has_link(SGLink*); //TODO can do const SGLink*? - void print_links(); + int add_host(int); + int add_router(int); + int id() { + return ID_; + }; + bool is_router(); + bool include(int); void print_hosts(); - - vector& links(); - vector& hosts(); - int id(){return ID_;}; - private: +private: int ID_; - bool ishost_; - vector hosts_; //simgrid hosts - vector links_; + int is_router_; + set < int >hosts_; //simgrid hosts }; -class SGLink{ - - public: - SGLink(int id, SGNode* left, SGNode* right); - ~SGLink(); - - //for a temporary link set, that is, a link has at most two neibours. - SGLink* left_link(); - SGLink* right_link(); - - - SGNode* left_node(); - SGNode* right_node(); - - bool is_inleft(SGLink*); - bool is_inright(SGLink*); - - void add_left_link(SGLink*, int side); - void add_right_link(SGLink*, int side); - - int id(){return ID_;}; - - void print(); - - private: +class GTNETS_Link { + +public: + GTNETS_Link(); + GTNETS_Link(int id); + GTNETS_Link(const GTNETS_Link &); + ~GTNETS_Link(); + + GTNETS_Node *src_node(); + GTNETS_Node *dst_node(); + int peer_node(int); + int id() { + return ID_; + }; + void print_link_status(); + int add_src(GTNETS_Node *); + int add_dst(GTNETS_Node *); + bool route_exists(); + +private: int ID_; - SGNode* left_node_; - SGNode* right_node_; + GTNETS_Node *src_node_; + GTNETS_Node *dst_node_; }; - -class SGTopology{ - public: - SGTopology(); - ~SGTopology(); - - void add_link(int src, int dst, int* links, int nsize); - - void create_tmplink(int src, int dst, int* links, int nsize); - - void merge_link(SGLink*); - - void add_tmplink_to_links(map tmplink); //??? - +// To create a topology: +// 1. add links +// 2. add routers +// 3. add onehop links +class GTNETS_Topology { +public: + GTNETS_Topology(); + ~GTNETS_Topology(); + + bool is_router(int id); + int peer_node_id(int linkid, int cur_id); + int add_link(int id); + int add_router(int id); + int add_onehop_route(int src, int dst, int link); + + int nodeid_from_hostid(int); + int link_size(); + int node_size(); void print_topology(); - - void create_gtnets_topology(); + const vector < GTNETS_Node * >&nodes(); + const map < int, GTNETS_Link * >&links(); - map& get_links(); +private: - private: int nodeID_; - map links_; - map nodes_; + map < int, GTNETS_Link * >links_; + vector < GTNETS_Node * >nodes_; + + map < int, int >hosts_; //hostid->nodeid + + set < int >routers_; }; #endif