ArServerHandlerMap Class Reference

#include <ArServerHandlerMap.h>

List of all members.


Detailed Description

Service providing the contents of a map file to the client.

A map can be provided from an ArMap object, or else the filename can be given in the global ArConfig object (see Aria::getConfig()) as "Map" in the "Files" section. This handler can also be configured to only send "point" data, "line" data, or both kinds of data from the map.

This service accepts the following data requests:

The following data types will also be broadcast to all clients to indicate certain events:

The getMapId request replies with... TODO

The getMapName request replies with a packet containing a NULL-terminated string containing the filename of the map, or an empty string ("") if there is no map.

The getMap request replies with a packet containing the map as it appears in the map file (see the documentation for ArMap for the file format).

The getGoals request replies with a series of NULL-terminated strings containing the names of the Goal objects in the map.

The getMapBinary request replies with the map headers and objects list (see ArMap for map file format) as text, but supplies point "DATA" and/or "LINES" as an undelimited sequence of 2-byte integers. (In the case of point data, each pair of integers is a point; for lines, each sequence of four integers defines a line). This binary representation of data is more compact than the ASCII text representation.

The getMapMultiScans request is similar to getMapBinary, but it includes a list of the scan sources, along with the point and lines for each scan source in binary format.

The mapUpdated packet is sent to all connected clients whenever a new map is loaded or the map is changed. The packet contains no data; the new map can be downloaded using one of the above requests.

The goalsUpdated packet is sent to all connected clients whenever the list of Goal objects changes in the map or a new map is loaded. The packet contains no data; the new list of goals can be downloaded using getGoals, or by downloading the entire map.


Public Types

enum  DataToSend { LINES = 1, POINTS = 2, BOTH = 3 }

Public Member Functions

 ArServerHandlerMap (ArServerBase *server, ArMapInterface *arMap=NULL, DataToSend dataToSend=BOTH)
 Constructor.
DataToSend getDataToSend (void)
 Gets which kind of data we send.
ArMapInterfacegetMap (void)
 Gets the map object this is using.
bool loadMap (const char *mapFile)
 Loads the map from a file.
void serverGetGoals (ArServerClient *client, ArNetPacket *packet)
 The command that'll get the goals.
void serverGetMap (ArServerClient *client, ArNetPacket *packet)
 The command that'll get the map itself.
void serverGetMapBinary (ArServerClient *client, ArNetPacket *packet)
 The command that gets the map, with the data in binary format for improved performance.
void serverGetMapId (ArServerClient *client, ArNetPacket *packet)
 Handles the request for the map ID.
void serverGetMapMultiScans (ArServerClient *client, ArNetPacket *packet)
 Requests that the server send the map, including scan data for multiple sources if available.
void serverGetMapName (ArServerClient *client, ArNetPacket *packet)
 The command that gets the map name.
void serverGetMapWithMaxCategory (ArServerClient *client, ArNetPacket *packet)
 Requests that the server send the map with the specified maximum features.
void setDataToSend (DataToSend dataToSend)
 Sets which kind of data we send.
void useMap (ArMapInterface *mapObj, bool takeOwnershipOfMap=false)
 Uses a map already loaded.
virtual ~ArServerHandlerMap ()
 Destructor.

Protected Member Functions

void handleCheckMap (ArServerClient *client, ArNetPacket *packet)
void mapChanged (void)
bool processFile (void)
void sendMapWithMaxCategory (ArServerClient *client, const char *maxCategory)
void writeLinesToClient (int lineCount, std::vector< ArLineSegment > *points, ArServerClient *client)
void writeMapToClient (const char *line, ArServerClient *client)
void writePointsToClient (int pointCount, std::vector< ArPose > *points, ArServerClient *client)

Protected Attributes

bool myAlreadyLoaded
ArFunctor2C< ArServerHandlerMap,
ArServerClient *, ArNetPacket * > 
myCheckMapCB
DataToSend myDataToSend
ArFunctor2C< ArServerHandlerMap,
ArServerClient *, ArNetPacket * > 
myGetGoalsCB
ArFunctor2C< ArServerHandlerMap,
ArServerClient *, ArNetPacket * > 
myGetMapBinaryCB
ArFunctor2C< ArServerHandlerMap,
ArServerClient *, ArNetPacket * > 
myGetMapCB
ArFunctor2C< ArServerHandlerMap,
ArServerClient *, ArNetPacket * > 
myGetMapIdCB
ArFunctor2C< ArServerHandlerMap,
ArServerClient *, ArNetPacket * > 
myGetMapMaxCategoryCB
ArFunctor2C< ArServerHandlerMap,
ArServerClient *, ArNetPacket * > 
myGetMapMultiScansCB
ArFunctor2C< ArServerHandlerMap,
ArServerClient *, ArNetPacket * > 
myGetMapNameCB
char myLastMapFile [1024]
stat myLastMapFileStat
ArMapInterfacemyMap
ArFunctorC< ArServerHandlerMapmyMapChangedCB
char myMapFileName [512]
std::string myMapName
bool myOwnMap
ArRetFunctorC< bool, ArServerHandlerMapmyProcessFileCB
ArServerBasemyServer
ArServerHandlerMapmyServerHandlerMap


The documentation for this class was generated from the following file:
Generated on Thu Aug 6 09:40:12 2009 for ArNetworking by  doxygen 1.5.1