fixing for ft
[charm.git] / src / conv-com / graphrouter.h
1 /**
2    @addtogroup ConvComlibRouter
3    @{
4    @file 
5    @brief Base class for graph based routers. Currently Unused????
6 */
7
8
9 #ifndef _GRAPHROUTER_H
10 #define _GRAPHROUTER_H
11
12 #include <math.h>
13 //#include <converse.h>
14 #include "petable.h"
15
16 #include "persistent.h"
17
18 class TopologyDescriptor {
19  public:
20     //TopologyDescriptor(int npes, int mype)=0;
21     //Entry methods which will define the specific graph.
22     virtual void getNeighbors(int &npes, int *pelist) = 0;
23     virtual int getNumStages() = 0;
24     virtual int getNumSteps(int stage) = 0;
25     virtual void getPesToSend(int step, int stage, int &npesToSend, 
26                               int *pelist, int &nextpe) = 0;
27     virtual int getNumMessagesExpected(int stage) = 0;
28 };
29
30 /// A generalized virtual topology based router. To make it a specific
31 /// router a new topology class needs to br created and passed to this.
32
33 /// At present this class is not used in the system!!!
34 class GraphRouter : public Router
35 {
36     PeTable *PeGraph;
37     TopologyDescriptor *tp;
38     
39     int *pesToSend, *gpes;
40     int numNeighbors, *neighborPeList, nstages;
41     
42     int MyPe, NumPes, currentIteration;
43     int *recvExpected, *recvCount;
44     int curStage, *stageComplete;
45
46     void sendMessages(comID id, int stage);
47     void init(int numPes, int myPe, TopologyDescriptor *tp);
48     
49 #if CMK_PERSISTENT_COM
50     PersistentHandle *handlerArrayOdd, *handlerArrayEven;
51 #endif          
52     
53  public:
54     GraphRouter(int numPes, int myPe, Strategy*);
55     //GraphRouter(int numPes, int myPe, int topid);
56     ~GraphRouter();
57   
58     //Router enrty methods overridden here.
59
60     void NumDeposits(comID, int);
61     void EachToAllMulticast(comID , int , void *, int);
62     void EachToManyMulticast(comID , int , void *, int, int *, int);
63     void RecvManyMsg(comID, char *);
64     void ProcManyMsg(comID, char *);
65     void DummyEP(comID id, int);
66     
67     void SetMap(int *);
68 };
69
70 #endif
71
72 /*@}*/