PaCO++  0.05
BasicDistributionLibrary.h
Go to the documentation of this file.
00001 #ifndef BASIC_DISTRIBUTION_LIBRARY_IS_DEFINED
00002 #define BASIC_DISTRIBUTION_LIBRARY_IS_DEFINED
00003 
00004 #include <DistributionLibrairie.h>
00005 #include <stdio.h>
00006 
00007 class BasicDistributionLibrary : public DistributionLibrary
00008 {
00009 private:
00010   PaCO::distLoc_t _mode; // ClientSide, ServerSide, CommSide
00011   PaCO::PacoTopology_t   _clttopo;
00012   PaCO::PacoTopology_t   _srvtopo;
00013   PaCO::PacoGlobalData_t _gd;
00014 
00015   // We are waiting for native type to be supported ;(
00016   LocalData_t  _ld;
00017 
00018   void* _comm; // communicator
00019 
00020   Fabrique*  _fab;
00021   Abstrait*  _darray;
00022   vAbstrait* _vdarray;
00023   int        _remaining; // number of messages to yet to be received
00024 public:
00025   // Constructors
00026   BasicDistributionLibrary(Fabrique* f);
00027   BasicDistributionLibrary(Fabrique* f, void* comm);
00028 
00029   virtual ~BasicDistributionLibrary();
00030 
00031   // Comm management
00032   void setCommunicator(void* comm);
00033 
00034   // Fabric managment
00035   void setFabric(Fabrique* f);
00036 
00037   // Reset
00038   void reset();
00039 
00040   // Methods
00041   const PaCO::distLoc_t& getMode() const;
00042 
00043   bool setMode(const PaCO::distLoc_t mode); // true if ok
00044 
00045   bool setServerConfiguration(const PaCO::PacoTopology_t & stopo);
00046   bool setClientConfiguration(const PaCO::PacoTopology_t & ctopo);
00047 
00048   bool setGlobalDataConfiguration(const PaCO::PacoGlobalData_t& gd);
00049   bool setLocalDataConfiguration (const PaCO::PacoLocalData_t&  ld);
00050 
00052   void computeSend(const void* data, vAbstrait& vdarray, vector<unsigned>& destid);
00053 
00055   bool computeReceive(Abstrait* darray);
00056 
00058   Abstrait* getResult() const ;
00059 };
00060 
00061 
00062 #endif