Adding communication library in src/ck-com and src/conv-com
[charm.git] / src / ck-com / MsgPacker.h
1 #ifndef MESSAGE_PACKER_H
2 #define MESSAGE_PACKER_H
3
4 #include "charm++.h"
5 #include "envelope.h"
6
7 #define MAX_MESSAGE_SIZE 65535
8
9 class short_envelope {
10  public:
11     UShort epIdx;
12     UShort size;  //Can only send messages up to 64KB :)    
13     CkArrayIndexMax idx;
14     char *data;
15
16     short_envelope();
17     ~short_envelope();
18     short_envelope(CkMigrateMessage *){}
19     
20     void pup(PUP::er &p);
21 };
22 PUPmarshall(short_envelope);
23
24 struct CombinedMessage{
25
26     char header[CmiReservedHeaderSize];
27     CkArrayID aid;
28     int srcPE;
29     int nmsgs;
30 };
31
32 class MsgPacker {        
33     CkArrayID aid;
34     short_envelope * msgList;
35     int nShortMsgs;   
36
37  public:
38     MsgPacker();
39     ~MsgPacker();    
40     MsgPacker(CkQ<CharmMessageHolder*> &cmsg_list, int n_msgs);
41     void getMessage(CombinedMessage *&msg, int &size);
42
43     static void deliver(CombinedMessage *cmb_msg);
44 };
45
46 #endif