working version. needs small amount of placing tweaking to put
[charm.git] / examples / charm++ / pupDisk / pupDisk.h
1 //////////////////////////////////////
2 //
3 //  pupDisk.h  
4 //
5 //  Declaration of chares in pupDisk
6 //
7 //  Author: Eric Bohm
8 //  Date: 2012/01/23
9 //
10 //////////////////////////////////////
11
12 #include "pupDisk.decl.h"
13 #include <map>
14 #include "pup_stl.h"
15 class main : public CBase_main {
16 public:
17   main(CkMigrateMessage *m) {}
18   main(CkArgMsg *m);
19   void done(CkReductionMsg *m){
20     CkPrintf("done\n");
21     CkExit();
22   }
23   void initialized(CkReductionMsg *m);
24   void written(CkReductionMsg *m);
25   void read(CkReductionMsg *m);
26
27 };
28
29
30 class userData : public CBase_userData {
31 public:
32   userData(CkMigrateMessage *m) {}
33  userData(int _howbig, int _numElements, int _maxFiles): howBig(_howbig), numElements(_numElements), maxFiles(_maxFiles){ myData=new someData(howBig);}
34   ~userData(){ if(myData) delete myData;}
35   void init();
36   void read();
37   void write();
38   void writeDone();
39   void verify();
40   void acceptData(someData &inData);
41  private:
42   someData *myData;
43   int howBig;
44   int numElements;
45   int maxFiles;
46 };
47
48 class pupDisk : public CBase_pupDisk {
49 public:
50   pupDisk(CkMigrateMessage *m) {}
51   pupDisk(int _howbig, int _numElements, int _maxFiles);
52   ~pupDisk(){ ;}
53   void read(int sender);
54   void write(int sender, someData &data);
55   void diskWrite();
56   bool diskRead(int sender);
57  private:
58   someData *dataCache;
59   bool doneRead;
60   int count;
61   int howBig;
62   int numElements;
63   int maxFiles;
64   int elementsToWrite;
65   std::map<int, int> lookupIdx;
66   int nextSlot;
67 };