From b49b62d6a72b21e7db08ce79d401fc731f33ec3c Mon Sep 17 00:00:00 2001 From: haller Date: Sun, 30 Apr 2006 18:26:43 +0000 Subject: * Codage du mini-serveur envoyeur de log en ram * Codage d'un test bidon pour (crée le serveur, faire un telnet pour tester) * Modification du Makefile.defs de log/ pour integrer le mini-serveur --- i/marvin/src/log/Makefile.defs | 5 +++- i/marvin/src/log/log_server.cc | 48 +++++++++++++++++++++++++++++++++++ i/marvin/src/log/log_server.hh | 50 +++++++++++++++++++++++++++++++++++++ i/marvin/src/log/test_log_server.cc | 45 +++++++++++++++++++++++++++++++++ 4 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 i/marvin/src/log/log_server.cc create mode 100644 i/marvin/src/log/log_server.hh create mode 100644 i/marvin/src/log/test_log_server.cc diff --git a/i/marvin/src/log/Makefile.defs b/i/marvin/src/log/Makefile.defs index ad0b76b..1325874 100644 --- a/i/marvin/src/log/Makefile.defs +++ b/i/marvin/src/log/Makefile.defs @@ -1,8 +1,11 @@ -PROGRAMS += test_log +PROGRAMS += test_log test_log_server log_OBJECTS = log.o log_message.o logger.o \ logger_stdout.o logger_file.o logger_ram.o \ data_circular_buffer_factory.o \ $(config_OBJECTS) $(data_OBJECTS) +log_server_OBJECTS = log_server.o $(socket_databuffer_OBJECTS) + test_log_OBJECTS = test_log.o $(log_OBJECTS) +test_log_server_OBJECTS = test_log_server.o $(log_server_OBJECTS) $(data_OBJECTS) diff --git a/i/marvin/src/log/log_server.cc b/i/marvin/src/log/log_server.cc new file mode 100644 index 0000000..bba80f5 --- /dev/null +++ b/i/marvin/src/log/log_server.cc @@ -0,0 +1,48 @@ +// log_server.cc +// marvin - programme du robot 2006. {{{ +// +// Copyright (C) 2006 Nicolas Haller +// +// Robot APB Team/Efrei 2005. +// Web: http://assos.efrei.fr/robot/ +// Email: robot AT efrei DOT fr +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// }}} +#include "log_server.hh" +#include "socket/socket_databuffer.hh" + +LogServer::LogServer(DataBuffer & db, const Address & address) + :ss_(address),db_(db) +{ +} + +LogServer::LogServer(DataBuffer & db, const std::string & address, + int port) + :ss_(address, port),db_(db) +{ +} + +void +LogServer::listen(void) +{ + // Ouvre les oreilles du socket + ss_.listen(1); + // Attend gentillement une connection + SocketDataBuffer sdb(ss_); + // Paf on envoie la sauce + sdb.write(db_); +} diff --git a/i/marvin/src/log/log_server.hh b/i/marvin/src/log/log_server.hh new file mode 100644 index 0000000..c9b9cf5 --- /dev/null +++ b/i/marvin/src/log/log_server.hh @@ -0,0 +1,50 @@ +#ifndef log_server_hh +#define log_server_hh +// log_server.hh +// marvin - programme du robot 2006. {{{ +// +// Copyright (C) 2006 Nicolas Haller +// +// Robot APB Team/Efrei 2005. +// Web: http://assos.efrei.fr/robot/ +// Email: robot AT efrei DOT fr +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// }}} + +#include "socket/socket_server.hh" +#include "data/data_buffer.hh" + +/// Classe pour récupérer les logs. +/// La classe construit un serveur en fin de match pour pouvoir récupérer les +/// logs de la pc104 +class LogServer +{ + private: + /// La socket serveur qui attend la ze connection + SocketServer ss_; + /// La dataBuffer à transmettre (avec les logs dedans c'est mieux) + DataBuffer & db_; + public: + /// Constructeur + LogServer(DataBuffer & db, const Address & address); + /// Constructeur + LogServer(DataBuffer & db, const std::string & address, int port); + /// Mise en écoute du serveur + void listen(void); +}; + +#endif // log_server_hh diff --git a/i/marvin/src/log/test_log_server.cc b/i/marvin/src/log/test_log_server.cc new file mode 100644 index 0000000..70792f6 --- /dev/null +++ b/i/marvin/src/log/test_log_server.cc @@ -0,0 +1,45 @@ +// test_log_server.cc +// marvin - programme du robot 2006. {{{ +// +// Copyright (C) 2006 Nicolas Haller +// +// Robot APB Team/Efrei 2005. +// Web: http://assos.efrei.fr/robot/ +// Email: robot AT efrei DOT fr +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// }}} + +#include "data/data_buffer.hh" +#include "log_server.hh" +#include "socket/address.hh" + +#include + +int main (void) +{ + // On fait un zolie DataBuffer + DataBuffer db_; + // On ecrit des betises dedans + char * betise = "J'aime bien la choucroute traditionnelle.\n"; + db_.write(reinterpret_cast(betise), strlen(betise)); + // On crée le serveur de la mort qui tue + LogServer ls(db_, std::string(), 2042); + // On écoute tranquillement + ls.listen(); + + return 0; +} -- cgit v1.2.3