PaCO++  0.05
GaBro.h
Go to the documentation of this file.
1 #ifndef _GABRO_H
2 #define _GABRO_H
3 
5 #include "GaBroIdl.h"
6 
7 using namespace std;
8 
9 class GaBro : public DistributionLibrary
10 {
11  public:
12  GaBro();
13  virtual ~GaBro();
14 
15  // Common
16  virtual void setSourceTopology(PaCO::PacoTopology_t topo);
17  virtual PaCO::PacoTopology_t getSourceTopology();
18  virtual void setDestTopology(PaCO::PacoTopology_t topo);
19  virtual PaCO::PacoTopology_t getDestTopology();
20  virtual void setNodeRank(long Rank);
21  virtual long getNodeRank();
22  virtual void setCommunicator(void * group) {}
23 
24  // Data description API
25  void setEltSize(long size);
26  void setNodeNbElt(long elt_node_nb);
27  void setTotalNbElt(long elt_nb);
28  void setNodePos(long node_pos);
29 
30  // Client Side
31  virtual PieceToSend* computePiecesToSend(unsigned& size);
32  virtual void setDataPtr(void* dataPtr);
33  virtual void* getClientData(void* pid, int server_node, long & size, long & length, bool & end);
34  virtual void clientFree();
35  virtual void * getDescr();
36 
37  virtual bool setComId(long id);
38  virtual bool freeComId(long id);
39 
40  // Server Side
41  virtual bool insertData(void* rcptBuf, unsigned long element_nb);
42  virtual void* getServerData(long & length);
43  virtual void serverFree();
44  virtual void setDescr(void * descr);
45 
46  private:
47 
50 
51  // Descr
53 
54  // Common
55  long _data_size;
57  long _my_rank;
59 
60  // Client Side
62  int * _pos;
64  long _node_pos;
65 
66  typedef struct {
67  long _data_size;
71  long _node_pos;
72  } info_t;
73 
74  typedef map<long, info_t*> info_list_map_t; // - 1 = none
75  info_list_map_t _info_list_map;
76 
77  long _cur_id; // - 1 = none
79 
80  // Server Side
82  long * _nb_rcp;
88 };
89 
90 class GaBro_fab : virtual public paco_fabrique_distribution
91 {
92 
93  public:
94  GaBro_fab() {}
96 
98  {
99  return new GaBro();
100  }
101 };
102 
103 #endif
long _cur_id
Definition: GaBro.h:77
long * _nb_rcp
Definition: GaBro.h:82
info_list_map_t _info_list_map
Definition: GaBro.h:75
long _my_rank
Definition: GaBro.h:57
long _server_nb_nodes
Definition: GaBro.h:58
long _data_elt_nb
Definition: GaBro.h:56
Definition: GaBro.h:9
char * _server_buffer
Definition: GaBro.h:81
long _node_pos
Definition: GaBro.h:64
long _data_size
Definition: GaBro.h:67
long _data_elt_nb
Definition: GaBro.h:70
PaCO::PacoTopology_t _destTopo
Definition: GaBro.h:49
char * _client_buffer
Definition: GaBro.h:61
DistributionLibrary * create()
Definition: GaBro.h:97
long _current_data_size
Definition: GaBro.h:87
PaCO::PacoTopology_t _srcTopo
Definition: GaBro.h:48
long _current_pos
Definition: GaBro.h:84
long _server_nb_nodes
Definition: GaBro.h:69
long _elt_node_nb
Definition: GaBro.h:63
map< long, info_t * > info_list_map_t
Definition: GaBro.h:74
int * _pos
Definition: GaBro.h:62
long _elt_node_nb
Definition: GaBro.h:68
long _node_pos
Definition: GaBro.h:71
virtual void setCommunicator(void *group)
Definition: GaBro.h:22
int _current_rcp
Definition: GaBro.h:83
info_t * _cur_info
Definition: GaBro.h:78
GaBroLib::GaBroDescr _descr
Definition: GaBro.h:52
long _data_size
Definition: GaBro.h:55
long _total_data_nb
Definition: GaBro.h:85
GaBro_fab()
Definition: GaBro.h:94
~GaBro_fab()
Definition: GaBro.h:95
long _node_data_nb
Definition: GaBro.h:86