From d3e67b912a97834dbf0711b5d3dbbc0bd3d29ee8 Mon Sep 17 00:00:00 2001 From: "(no author)" <(no author)@0f7e0d06-a6f9-0310-a55f-d5f984f55e4c> Date: Thu, 10 Feb 2005 23:10:51 +0000 Subject: This commit was manufactured by cvs2svn to create branch 'hugues'. git-svn-id: file:///usr/local/opt/svn/repos/glagen@4 0f7e0d06-a6f9-0310-a55f-d5f984f55e4c --- .../glagen/algo_distribue/network/data/Data.hh | 78 ++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 branches/hugues/glagen/algo_distribue/network/data/Data.hh (limited to 'branches/hugues/glagen/algo_distribue/network/data/Data.hh') diff --git a/branches/hugues/glagen/algo_distribue/network/data/Data.hh b/branches/hugues/glagen/algo_distribue/network/data/Data.hh new file mode 100644 index 0000000..3b630ff --- /dev/null +++ b/branches/hugues/glagen/algo_distribue/network/data/Data.hh @@ -0,0 +1,78 @@ +// Classe Data + +// Dans le TYPEDATA, il faut l'implementation de toString (retourne un string) +// et de type (retourne unsigned short int) + +// Type 0: char +// Type 1: unsigned char +// Type 2: int +// Type 3: unsigned int +// Type 4: short int +// Type 5: unsigned short int +// Type 6: long int +// Type 7: unsigned long int +// Type 8: float +// Type 9: double +// Type 10: long double + +#ifndef DATA_HH_ +# define DATA_HH_ + +#include +#include +#include + +#include + +template class Data +{ +public: + Data() : _data(new std::list) {}; + + Data(std::list* data) : _data(data) {}; + + void error() + { + perror(""); + exit(errno); + } + + void add_data(const TYPEDATA& data) { _data->push_back(data); }; + + void send(const int& fd) const + { + std::list::iterator data = _data->begin(); + unsigned int size = _data->size(); + std::cout << "Taille a ecrire:" << size << std::endl; + write(fd, &size, sizeof(unsigned int)); + for (; data != _data->end(); ++data) + data->write_data(fd); + } + + void receive(const int& fd) + { + unsigned int size = 0; + do + { + errno = 0; + read(fd, &size, sizeof(unsigned int)); + } + while(errno == 4); + if (errno) + this->error(); + std::cout << "Taille lu: " << size << std::endl; + TYPEDATA data; + for (unsigned int i = 0; i < size; ++i) + { + data.read_data(fd); + _data->push_back(data); + } + } + + std::list* get_data() { return (_data); } + +private: + std::list* _data; +}; + +#endif // DATA_HH_ -- cgit v1.2.3