00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef ARSERVERMAP_H
00027 #define ARSERVERMAP_H
00028
00029 #include "Aria.h"
00030 #include "ArServerBase.h"
00031 #include "ArConfig.h"
00032
00033
00034 class ArServerClient;
00035
00036 class ArMap;
00037
00088 class ArServerHandlerMap
00089 {
00090 public:
00091 enum DataToSend { LINES = 1, POINTS = 2, BOTH = 3 };
00093 AREXPORT ArServerHandlerMap(ArServerBase *server, ArMap *arMap = NULL,
00094 DataToSend dataToSend = BOTH);
00096 AREXPORT virtual ~ArServerHandlerMap();
00098 AREXPORT bool loadMap(const char *mapFile);
00100 AREXPORT void useMap(ArMap *mapObj, bool takeOwnershipOfMap = false);
00102 AREXPORT ArMap *getMap(void);
00104 AREXPORT void serverGetMapName(ArServerClient *client,
00105 ArNetPacket *packet);
00107 AREXPORT void serverGetMap(ArServerClient *client,
00108 ArNetPacket *packet);
00110 AREXPORT void serverGetMapBinary(ArServerClient *client,
00111 ArNetPacket *packet);
00113 AREXPORT void serverGetGoals(ArServerClient *client,
00114 ArNetPacket *packet);
00116 AREXPORT void setDataToSend(DataToSend dataToSend)
00117 { myDataToSend = dataToSend; }
00119 DataToSend getDataToSend(void) { return myDataToSend; }
00120 protected:
00121 AREXPORT bool processFile(void);
00122 AREXPORT void mapChanged(void);
00123
00124 AREXPORT void writeMapToClient(const char *line, ArServerClient *client);
00125
00126
00127 AREXPORT void writePointsToClient(int pointCount,
00128 std::vector<ArPose> *points,
00129 ArServerClient *client);
00130
00131 AREXPORT void writeLinesToClient(int lineCount,
00132 std::vector<ArLineSegment> *points,
00133 ArServerClient *client);
00134
00135 ArServerBase *myServer;
00136 bool myOwnMap;
00137 DataToSend myDataToSend;
00138 ArMap *myMap;
00139 std::string myMapName;
00140 ArServerHandlerMap *myServerHandlerMap;
00141 bool myAlreadyLoaded;
00142 char myMapFileName[512];
00143 char myLastMapFile[1024];
00144 struct stat myLastMapFileStat;
00145 ArFunctor2C<ArServerHandlerMap,
00146 ArServerClient *, ArNetPacket *> myGetMapNameCB;
00147 ArFunctor2C<ArServerHandlerMap,
00148 ArServerClient *, ArNetPacket *> myGetMapCB;
00149 ArFunctor2C<ArServerHandlerMap,
00150 ArServerClient *, ArNetPacket *> myGetMapBinaryCB;
00151 ArFunctor2C<ArServerHandlerMap,
00152 ArServerClient *, ArNetPacket *> myGetGoalsCB;
00153 ArRetFunctorC<bool, ArServerHandlerMap> myProcessFileCB;
00154 ArFunctorC<ArServerHandlerMap> myMapChangedCB;
00155 };
00156
00157 #endif
00158