PaCO++  0.05
ParisBasicExample.h
Go to the documentation of this file.
00001 #ifndef PARIS_BASIC_EXAMPLE_H
00002 #define PARIS_BASIC_EXAMPLE_H
00003 
00004 #include "DistributionLibrairie.h"
00005 
00006 using namespace std;
00007 
00008 class ParisBasicExample : public DistributionLibrary
00009 {
00010  public:
00011   ParisBasicExample();
00012   virtual ~ParisBasicExample();
00013 
00014   // Common
00015   virtual void setSourceTopology(PaCO::PacoTopology_t topo); 
00016   virtual PaCO::PacoTopology_t getSourceTopology(); 
00017   virtual void setDestTopology(PaCO::PacoTopology_t topo); 
00018   virtual PaCO::PacoTopology_t getDestTopology(); 
00019   virtual void setNodeRank(long Rank);
00020   virtual long getNodeRank(); 
00021   virtual void setCommunicator(void * group) {}
00022 
00023   // Data description API
00024   void setEltSize(long size);
00025   void setNbElt(long elt_nb);
00026 
00027   // Client Side
00028   virtual PieceToSend* computePiecesToSend();
00029   virtual void setDataPtr(void* dataPtr);
00030   virtual void* getClientData(int server_node, long & size, long & length, bool & end);
00031   virtual void clientFree();
00032   virtual void * getDescr();
00033   // Server Side
00034   virtual bool insertData(void* rcptBuf); 
00035   virtual void* getServerData(long & length);
00036   virtual void serverFree() {}
00037   virtual void setDescr(void * descr);
00038   // Internal
00039   virtual void clientFree(int server_node);
00040 
00041  private:
00042 
00043   PaCO::PacoTopology_t _srcTopo;
00044   PaCO::PacoTopology_t _destTopo;
00045 
00046   CORBA::Short _length;
00047   long _data_size;
00048   long _data_elt_nb;
00049   long _my_rank;
00050   long _server_nb_nodes;
00051   
00052   long * _data_rst;
00053   long * position;
00054   char * _user_data;
00055   char * temp_buffer;
00056 };
00057 
00058 class ParisBasicExample_fab : virtual public paco_individual_fabrique_lib
00059 {
00060 
00061  public:
00062   ParisBasicExample_fab() {}
00063   ~ParisBasicExample_fab() {}
00064   
00065   DistributionLibrary * paco_create(Fabrique* f)
00066     {
00067       return new ParisBasicExample();
00068     }
00069 
00070 };
00071 
00072 #endif