PaCO++  0.05
ParisBlockMPC.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 
8 {
9 private:
10  PaCO::distLoc_t _mode; // ClientSide, ServerSide, CommSide
14 
15  // We are waiting for native type to be supported ;(
16  LocalData_t _ld;
17 
18  void* _comm; // communicator
19 
20  Fabrique* _fab;
21  Abstrait* _darray;
22  vAbstrait* _vdarray;
23  int _remaining; // number of messages to yet to be received
24 public:
25  // Constructors
26  ParisBlockMPC(Fabrique* f );
27 
28  virtual ~ParisBlockMPC();
29 
30  // Comm management
31  void setCommunicator(void* comm) {_comm = comm;}
32 
33  // Fabric managment
34  void setFabric(Fabrique* f);
35 
36  // Reset
37  void reset();
38 
39  // Methods
40  const PaCO::distLoc_t& getMode() const;
41 
42  bool setMode(const PaCO::distLoc_t mode); // true if ok
43 
44  bool setServerConfiguration(const PaCO::PacoTopology_t & stopo);
45  bool setClientConfiguration(const PaCO::PacoTopology_t & ctopo);
46 
49 
51  void computeSend(const void* data, vAbstrait& vdarray, vector<unsigned>& destid);
52 
54  bool computeReceive(Abstrait* darray);
55 
57  Abstrait* getResult() const ;
58 };
59 
60 class ParisBlockMPC_fab : virtual public paco_individual_fabrique_lib
61 {
62  public:
65 
67  {
68  return new ParisBlockMPC(f);
69  }
70 };
71 #endif
ParisBlockMPC(Fabrique *f)
Definition: ParisBlockMPC.cc:5
void setCommunicator(void *comm)
Definition: ParisBlockMPC.h:31
bool computeReceive(Abstrait *darray)
Compute communication schedule on the server side.
LocalData_t _ld
Definition: ParisBlockMPC.h:16
PaCO::distLoc_t _mode
Definition: ParisBlockMPC.h:10
bool setServerConfiguration(const PaCO::PacoTopology_t &stopo)
PaCO::PacoTopology_t _clttopo
Definition: ParisBlockMPC.h:11
Abstrait * getResult() const
If computeReceive returns ok, get the data.
bool setLocalDataConfiguration(const PaCO::PacoLocalData_t &ld)
virtual ~ParisBlockMPC()
DistributionLibrary * paco_create(Fabrique *f)
Definition: ParisBlockMPC.h:66
vAbstrait * _vdarray
Definition: ParisBlockMPC.h:22
Fabrique * _fab
Definition: ParisBlockMPC.h:20
bool setGlobalDataConfiguration(const PaCO::PacoGlobalData_t &gd)
distLoc_t
Definition: PaCO++.idl:12
void setFabric(Fabrique *f)
void computeSend(const void *data, vAbstrait &vdarray, vector< unsigned > &destid)
Compute communication schedule on the client side.
const PaCO::distLoc_t & getMode() const
PaCO::PacoGlobalData_t _gd
Definition: ParisBlockMPC.h:13
PaCO::PacoTopology_t _srvtopo
Definition: ParisBlockMPC.h:12
bool setClientConfiguration(const PaCO::PacoTopology_t &ctopo)
bool setMode(const PaCO::distLoc_t mode)
Abstrait * _darray
Definition: ParisBlockMPC.h:21