Main Page | Class Hierarchy | Class List | Directories | File List | Class Members | File Members | Related Pages | Examples

ArServerInfoDrawings Class Reference

Service to provide clients with information about graphical figures to be displayed with the map. More...

#include <ArServerInfoDrawings.h>

List of all members.

Public Member Functions

bool addDrawing (ArDrawingData *drawingData, const char *name, ArFunctor2< ArServerClient *, ArNetPacket * > *functor)
 Adds a shape to the set of figures.
bool addRangeDevice (ArRangeDevice *rangeDevice)
 Adds a specific range device to be drawn (using its default shape).
bool addRobotsRangeDevices (ArRobot *robot)
 Adds all of the robot's range devices (using their default shape).
 ArServerInfoDrawings (ArServerBase *server)
 Constructor.
void netGetDrawingList (ArServerClient *client, ArNetPacket *packet)
void netListDrawings (ArServerClient *client, ArNetPacket *packet)
 Client callback: Puts the list of shapes that can be drawn and their metadata into a reply packet (internal use mostly).
void netRangeDeviceCumulative (ArServerClient *client, ArNetPacket *packet, ArRangeDevice *device)
 Client callback utilit: Puts the cumulative buffer of the given range device into a reply packet (internal use mostly).
void netRangeDeviceCurrent (ArServerClient *client, ArNetPacket *packet, ArRangeDevice *device)
 Client callback utility: Puts the current data for the given range device into a reply packet (internal use mostly).
virtual ~ArServerInfoDrawings ()
 Destructor.

Protected Attributes

std::map< std::string, ArFunctor *,
ArStrCaseCmpOp > 
myDrawingCallbacks
std::map< std::string, ArDrawingData *,
ArStrCaseCmpOp > 
myDrawingDatas
ArFunctor2C< ArServerInfoDrawings,
ArServerClient *, ArNetPacket * > 
myNetGetDrawingListCB
ArFunctor2C< ArServerInfoDrawings,
ArServerClient *, ArNetPacket * > 
myNetListDrawingsCB
ArServerBasemyServer


Detailed Description

Service to provide clients with information about graphical figures to be displayed with the map.

Use addDrawing() to add a figure, or use addRangeDevice() or addRobotsRangeDevice() to automatically create standard drawings for range devices.

Clients may use the listDrawings data request to receive a list of figures and metadata about those figures. The reply packet to the listDrawings request is as follows:

  1. Number of figures (4-byte integer)Then, for each figure, the following values are given
  2. For each figure:
    1. Figure name (null-terminated string)
    2. Shape ID (null-terminated string)
    3. Primary color:
      1. Unused (byte)
      2. Red (byte)
      3. Green (byte)
      4. Blue (byte)
    4. Shape size (4-byte integer)
    5. Layer number (4-byte integer)
    6. Suggested refresh time (4-byte integer)
    7. Secordary color:
      1. Unused (byte)
      2. Red (byte)
      3. Green (byte)
      4. Blue (byte)

This command is in the SensorInfo permission group for users.

Examples:

drawingsExampleWithRobot.cpp, popupExample.cpp, and serverDemo.cpp.

Definition at line 71 of file ArServerInfoDrawings.h.


Constructor & Destructor Documentation

ArServerInfoDrawings::ArServerInfoDrawings ArServerBase server  ) 
 

Constructor.

Definition at line 30 of file ArServerInfoDrawings.cpp.

References ArServerBase::addData(), myNetGetDrawingListCB, myNetListDrawingsCB, and myServer.

ArServerInfoDrawings::~ArServerInfoDrawings  )  [virtual]
 

Destructor.

Definition at line 53 of file ArServerInfoDrawings.cpp.


Member Function Documentation

bool ArServerInfoDrawings::addDrawing ArDrawingData drawingData,
const char *  name,
ArFunctor2< ArServerClient *, ArNetPacket * > *  functor
 

Adds a shape to the set of figures.

If the name is unique, the given drawing data is stored to be returned in response to the "listDrawings" client request, and a new data request is created with the given name and functor. This functor must send a reply packet to the client containing a 4-byte integer indicating the number of coordinates or vertices in the figure, followed by a pair of 4-byte integers for each coordinate or vertex in global map space. For example, if drawingData describes a polyDots shape, then the functor must create a packet, add a 4-byte integer indicating the number of dots, then for each dot, add an integer for the X coordinate followed by an integer for the Y coordinate.

Definition at line 71 of file ArServerInfoDrawings.cpp.

References ArServerBase::addData(), ArLog::log(), myDrawingCallbacks, myDrawingDatas, and myServer.

Referenced by addRangeDevice(), and main().

bool ArServerInfoDrawings::addRangeDevice ArRangeDevice rangeDevice  ) 
 

Adds a specific range device to be drawn (using its default shape).

Definition at line 147 of file ArServerInfoDrawings.cpp.

References addDrawing(), ArLog::log(), myServer, netRangeDeviceCumulative(), and netRangeDeviceCurrent().

Referenced by addRobotsRangeDevices(), and main().

bool ArServerInfoDrawings::addRobotsRangeDevices ArRobot robot  ) 
 

Adds all of the robot's range devices (using their default shape).

Definition at line 183 of file ArServerInfoDrawings.cpp.

References addRangeDevice(), ArRangeDevice::lockDevice(), ArLog::log(), and ArRangeDevice::unlockDevice().

Referenced by main().

void ArServerInfoDrawings::netGetDrawingList ArServerClient client,
ArNetPacket packet
 

Definition at line 116 of file ArServerInfoDrawings.cpp.

References ArBasePacket::byte4ToBuf(), client, ArNetPacket::empty(), myDrawingDatas, ArClientBase::sendPacketTcp(), ArBasePacket::strToBuf(), and ArBasePacket::uByte4ToBuf().

void ArServerInfoDrawings::netListDrawings ArServerClient client,
ArNetPacket packet
 

Client callback: Puts the list of shapes that can be drawn and their metadata into a reply packet (internal use mostly).

Definition at line 96 of file ArServerInfoDrawings.cpp.

References ArBasePacket::byte4ToBuf(), client, myDrawingDatas, ArClientBase::sendPacketTcp(), ArBasePacket::strToBuf(), and ArBasePacket::uByte4ToBuf().

void ArServerInfoDrawings::netRangeDeviceCumulative ArServerClient client,
ArNetPacket packet,
ArRangeDevice device
 

Client callback utilit: Puts the cumulative buffer of the given range device into a reply packet (internal use mostly).

Definition at line 236 of file ArServerInfoDrawings.cpp.

References ArBasePacket::byte4ToBuf(), client, ArLog::log(), and ArClientBase::sendPacketUdp().

Referenced by addRangeDevice().

void ArServerInfoDrawings::netRangeDeviceCurrent ArServerClient client,
ArNetPacket packet,
ArRangeDevice device
 

Client callback utility: Puts the current data for the given range device into a reply packet (internal use mostly).

Definition at line 206 of file ArServerInfoDrawings.cpp.

References ArBasePacket::byte4ToBuf(), client, ArRangeDevice::getCurrentBuffer(), ArRangeDevice::lockDevice(), ArLog::log(), ArClientBase::sendPacketUdp(), and ArRangeDevice::unlockDevice().

Referenced by addRangeDevice().


Member Data Documentation

std::map<std::string, ArFunctor *, ArStrCaseCmpOp> ArServerInfoDrawings::myDrawingCallbacks [protected]
 

Definition at line 102 of file ArServerInfoDrawings.h.

Referenced by addDrawing().

std::map<std::string, ArDrawingData *, ArStrCaseCmpOp> ArServerInfoDrawings::myDrawingDatas [protected]
 

Definition at line 101 of file ArServerInfoDrawings.h.

Referenced by addDrawing(), netGetDrawingList(), and netListDrawings().

ArFunctor2C<ArServerInfoDrawings, ArServerClient *, ArNetPacket *> ArServerInfoDrawings::myNetGetDrawingListCB [protected]
 

Definition at line 104 of file ArServerInfoDrawings.h.

Referenced by ArServerInfoDrawings().

ArFunctor2C<ArServerInfoDrawings, ArServerClient *, ArNetPacket *> ArServerInfoDrawings::myNetListDrawingsCB [protected]
 

Definition at line 103 of file ArServerInfoDrawings.h.

Referenced by ArServerInfoDrawings().

ArServerBase* ArServerInfoDrawings::myServer [protected]
 

Definition at line 100 of file ArServerInfoDrawings.h.

Referenced by addDrawing(), addRangeDevice(), and ArServerInfoDrawings().


The documentation for this class was generated from the following files:
Generated on Tue Feb 20 10:51:51 2007 for ArNetworking by  doxygen 1.4.0