PaCO++
0.05
|
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