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