* This class was designed with dragonfly type topologies in mind. Certain parts may not
* make sense for other types of topologies, they might work fine, but no guarantees.
*
* @note
* There is the property intermediateRouterToGroupMap and related methods that are implemented but the
* logistics to get this information from input file is more complicated than its worth so I have commented
* them out.
*
* @note
* This class assumes that each router group has the same number of routers in it: _num_routers_per_group.
*/
classConnectionManager{
map<int,vector<Connection>>intraGroupConnections;//direct connections within a group - IDs are group local
map<int,vector<Connection>>globalConnections;//direct connections between routers not in same group - IDs are global router IDs
map<int,vector<Connection>>terminalConnections;//direct connections between this router and its compute node terminals
map<int,vector<Connection>>intraGroupConnections;//direct connections within a group - IDs are group local - maps local id to list of connections to it
map<int,vector<Connection>>globalConnections;//direct connections between routers not in same group - IDs are global router IDs - maps global id to list of connections to it
map<int,vector<Connection>>terminalConnections;//direct connections between this router and its compute node terminals - maps terminal id to connections to it
map<int,Connection>_portMap;//Mapper for ports to connections
// map< int, vector< Connection > > intermediateRouterToGroupMap; //maps group id to list of routers that connect to it.
// //ex: intermediateRouterToGroupMap[3] returns a vector
// //of connections from this router to routers that have
// //direct connections to group 3
int_source_id_local;//local id (within group) of owner of this connection manager
int_source_id_global;//global id (not lp gid) of owner of this connection manager
int_source_group;//group id of the owner of this connection manager