?? monitorserver.hh
字號:
/* * Little Green BATS (2006) * * Authors: Martin Klomp (martin@ai.rug.nl) * Mart van de Sanden (vdsanden@ai.rug.nl) * Sander van Dijk (sgdijk@ai.rug.nl) * A. Bram Neijt (bneijt@gmail.com) * Matthijs Platje (mplatje@gmail.com) * * Date: September 14, 2006 * * Website: http://www.littlegreenbats.nl * * Comment: Please feel free to contact us if you have any * problems or questions about the code. * * * License: 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. * */#ifndef __INC_BATS_MONITORSERVER_H_#define __INC_BATS_MONITORSERVER_H_#include <string>#include <map>#include "server.hh"#include "gamemodel.hh"#include "parser.hh"using namespace mvds;namespace bats { /** * This is a server with which the agents can communicate by * sending commands. It is used to enable the agents to * draw to the monitor (circle, arrows, lines, etc.). Which * is very usefull. * Commands are currently send in the predicate (list like) format * also used by the sockerserver and are, except for the identity message, * handled by Gamemodel. */ class MonitorServer : public Server { GameModel &d_gameModel; Parser d_parser; std::string d_buffer; struct Data : public SocketData { unsigned team, unum; char buffer[2048]; unsigned bufLen; }; void parseMessage(Data &info, std::string const &message); static void cIdentify(Data &info, rPredicate const &pred); public: /** * @param _port the port to bind to. */ MonitorServer(GameModel &gameModel, int _port) : Server(_port), d_gameModel(gameModel) { //socket.setBlocking(false); } virtual ~MonitorServer() { std::cerr << "Socket: Monitor Server Destroy." << std::endl; finish(); } /** * This is automatically called when a new connection comes in. */ virtual bool accept_connection(SocketInfo &_info) { Data* d = new Data; d->bufLen = 0; _info.data = d; _info.socket.setBlocking(false); std::cerr << "MonitorServer: accepting connection!" << std::endl; return true; } /** * This method is called when new date is available to read. */ virtual bool ready_to_read(SocketInfo &_info); /** * This method is called when buffer space is available to write data to. */ virtual bool ready_to_write(SocketInfo &_info); /** * This method is called when an out of bounds message is received. */ virtual bool ready_to_read_oob(SocketInfo &_info) { std::cerr << "OOB!?" << std::endl; return true; } /** * This method is called when a connection is closed. */ virtual void delete_connection(SocketInfo &_info) { delete _info.data; } };};#endif // __INC_MVDS_MONITORSERVER_H_
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -