adding a hook to get a strategy pointer in the user program from the instancehandle
[charm.git] / src / ck-com / PrioStreaming.h
1
2 #ifndef PRIO_STREAMING
3 #define PRIO_STREAMING
4
5 #include "ComlibManager.h"
6 #include "StreamingStrategy.h"
7
8
9 class PrioStreaming : public StreamingStrategy {
10  protected:
11     int basePriority;
12     
13  public:
14     /**
15      Create a priority based streaming strategy, suitable for passing
16      to ComlibManager.  
17      These are the criteria for flushing all pending messages: 
18
19      - it's been at least period (in ms) since the last flush, or 
20
21      - the processor just went idle.  Thses criteria flush a single 
22      PE's pending messages: 
23
24      - more than bufferMax messages to buffered for one PE.
25
26      - Current message is a high priority message
27     */
28
29     PrioStreaming(int periodMs=10, int bufferMax=1000, int prio=0);
30     PrioStreaming(CkMigrateMessage *){}
31     
32     virtual void insertMessage(CharmMessageHolder *msg);
33
34     inline void setBasePriority(int p) {
35         basePriority = p;
36     }
37
38     virtual void pup(PUP::er &p);
39     PUPable_decl(PrioStreaming);
40 };
41 #endif