PaCO++  0.05
ParisBlock.h
Go to the documentation of this file.
1 #ifndef BASIC_DISTRIBUTION_LIBRARY_IS_DEFINED
2 #define BASIC_DISTRIBUTION_LIBRARY_IS_DEFINED
3 
5 #include <stdio.h>
6 
7 #include "Type.h" // For ParisBlock_param_t
8 
10 {
11 private:
12  PaCO::distLoc_t _mode; // ClientSide, ServerSide, CommSide
16 
17  // We are waiting for native type to be supported ;(
18  LocalData_t _ld;
19 
20  void* _comm; // communicator
21 
22  Fabrique* _fab;
23  Abstrait* _darray;
24  vAbstrait* _vdarray;
25  int _remaining; // number of messages to yet to be received
26 
27  // hum
29 
30 public:
31  // Constructors
32  ParisBlock(Fabrique* f );
33 
34  ParisBlock(Fabrique* f, unsigned int blocksize );
35 
36  virtual ~ParisBlock();
37 
38  // Comm management
39  void setCommunicator(void* comm) { _comm = comm;}
40 
41  // Fabric managment
42  void setFabric(Fabrique* f);
43 
44  // Reset
45  void reset();
46 
47  // Methods
48  const PaCO::distLoc_t& getMode() const;
49 
50  bool setMode(const PaCO::distLoc_t mode); // true if ok
51 
52  bool setServerConfiguration(const PaCO::PacoTopology_t & stopo);
53  bool setClientConfiguration(const PaCO::PacoTopology_t & ctopo);
54 
57 
58  int setConfig(void * config);
59  void* getConfig();
60 
62  void computeSend(const void* data, vAbstrait& vdarray, vector<unsigned>& destid);
63 
65  bool computeReceive(Abstrait* darray);
66 
68  Abstrait* getResult() const ;
69 };
70 
71 class ParisBlock_fab : virtual public paco_individual_fabrique_lib
72 {
73 
74  public:
77 
79  {
80  return new ParisBlock(f);
81  }
82 
83 };
84 #endif
int setConfig(void *config)
Definition: ParisBlock.cc:44
bool setLocalDataConfiguration(const PaCO::PacoLocalData_t &ld)
Definition: ParisBlock.cc:37
void computeSend(const void *data, vAbstrait &vdarray, vector< unsigned > &destid)
Compute communication schedule on the client side.
Definition: ParisBlock.cc:53
void * getConfig()
Definition: ParisBlock.cc:49
bool setGlobalDataConfiguration(const PaCO::PacoGlobalData_t &gd)
Definition: ParisBlock.cc:36
Abstrait * _darray
Definition: ParisBlock.h:23
void setFabric(Fabrique *f)
Definition: ParisBlock.cc:25
bool computeReceive(Abstrait *darray)
Compute communication schedule on the server side.
Definition: ParisBlock.cc:59
vAbstrait * _vdarray
Definition: ParisBlock.h:24
const PaCO::distLoc_t & getMode() const
Definition: ParisBlock.cc:29
PaCO::PacoGlobalData_t _gd
Definition: ParisBlock.h:15
void setCommunicator(void *comm)
Definition: ParisBlock.h:39
void * _comm
Definition: ParisBlock.h:20
LocalData_t _ld
Definition: ParisBlock.h:18
virtual ~ParisBlock()
Definition: ParisBlock.cc:21
distLoc_t
Definition: PaCO++.idl:12
void reset()
Definition: ParisBlock.cc:27
PaCO::PacoTopology_t _clttopo
Definition: ParisBlock.h:13
int _remaining
Definition: ParisBlock.h:25
ParisBlock(Fabrique *f)
Definition: ParisBlock.cc:5
PaCO::PacoTopology_t _srvtopo
Definition: ParisBlock.h:14
PaCO::distLoc_t _mode
Definition: ParisBlock.h:12
Fabrique * _fab
Definition: ParisBlock.h:22
ParisBlock_param_t _param
Definition: ParisBlock.h:28
bool setClientConfiguration(const PaCO::PacoTopology_t &ctopo)
Definition: ParisBlock.cc:33
bool setMode(const PaCO::distLoc_t mode)
Definition: ParisBlock.cc:31
Abstrait * getResult() const
If computeReceive returns ok, get the data.
Definition: ParisBlock.cc:99
DistributionLibrary * paco_create(Fabrique *f)
Definition: ParisBlock.h:78
bool setServerConfiguration(const PaCO::PacoTopology_t &stopo)
Definition: ParisBlock.cc:34