Main Page   Class Hierarchy   Compound List   Compound Members  

ArBasePacket Class Reference

Base packet class. More...

#include <ArBasePacket.h>

Inheritance diagram for ArBasePacket::

ArAMPTUPacket ArDPPTUPacket ArRobotPacket ArSickPacket ArSonyPacket ArVCC4Packet List of all members.

Public Methods

 ArBasePacket (ArTypes::UByte2 bufferSize=0, ArTypes::UByte2 headerLength=0, char *buf=NULL)
 Constructor. More...

virtual ~ArBasePacket (void)
 Destructor.

virtual void empty (void)
 resets the length for more data to be added. More...

virtual void finalize (void)
 Finalizes the packet in preparation for sending, must be done.

virtual void print (void)
 ArLogs the contents of the packet.

virtual void printHex (void)
 ArLogs the contents of the packet in hex.

virtual void byteToBuf (ArTypes::Byte val)
 Puts ArTypes::Byte into packets buffer.

virtual void byte2ToBuf (ArTypes::Byte2 val)
 Puts ArTypes::Byte2 into packets buffer.

virtual void byte4ToBuf (ArTypes::Byte4 val)
 Puts ArTypes::Byte4 into packets buffer.

virtual void uByteToBuf (ArTypes::UByte val)
 Puts ArTypes::UByte into packets buffer.

virtual void uByte2ToBuf (ArTypes::UByte2 val)
 Puts ArTypes::UByte2 into packet buffer.

virtual void uByte4ToBuf (ArTypes::UByte4 val)
 Puts ArTypes::UByte 4 into packet buffer.

virtual void strToBuf (std::string str)
 Puts a string into packet buffer. More...

virtual void strNToBuf (const char *str, int length)
 Copies length bytes from str into packet buffer. More...

virtual void strToBufPadded (const char *str, int length)
 Copies length bytes from str, if str ends before length, pads data. More...

virtual void dataToBuf (const char *data, int length)
 Copies length bytes from data into packet buffer. More...

virtual ArTypes::Byte bufToByte (void)
 Gets a ArTypes::Byte from the buffer.

virtual ArTypes::Byte2 bufToByte2 (void)
 Gets a ArTypes::Byte2 from the buffer.

virtual ArTypes::Byte4 bufToByte4 (void)
 Gets a ArTypes::Byte4 from the buffer.

virtual ArTypes::UByte bufToUByte (void)
 Gets a ArTypes::UByte from the buffer.

virtual ArTypes::UByte2 bufToUByte2 (void)
 Gets a ArTypes::UByte2 from the buffer.

virtual ArTypes::UByte4 bufToUByte4 (void)
 Gets a ArTypes::UByte4 from the buffer.

virtual void bufToStr (char *buf, int len)
 Gets a string from the buffer. More...

virtual void bufToData (char *data, int length)
 Gets length bytes from buffer and puts them into data. More...

virtual void resetRead (void)
 Restart the reading process. More...

virtual ArTypes::UByte2 getLength (void)
 Gets the total length of the packet.

virtual ArTypes::UByte2 getReadLength (void)
 Gets how the length of the packet that has been read.

virtual ArTypes::UByte2 getHeaderLength (void)
 Gets the length of the header.

virtual ArTypes::UByte2 getMaxLength (void)
 Gets the maximum length packet.

virtual const char * getBuf (void)
 Gets a pointer to the buffer the packet uses.

virtual void setBuf (char *buf)
 Sets the buffer the packet is using.

virtual bool setLength (ArTypes::UByte2 length)
 Sets the length of the packet.

virtual bool setHeaderLength (ArTypes::UByte2 length)
 Sets the length of the header.

virtual void duplicatePacket (ArBasePacket *packet)
 Makes this packet a duplicate of another packet. More...


Detailed Description

Base packet class.

This class is a base class for all packets... most software will never need to use this class, it is there mostly to help people do more advanced client and server communications.

All of the functions are virtual so it can be completely overridden if desired... but the few most likely ones to be overridden are empty and finalize...

The theory of the packet works like this, the packet has a buffer, headerLength, readLength, length, and a maxLength. When the packet is initialized it is given a buffer and its maxLength. All of the functions that are somethingToBuf put data in at the current length of the packet, and advance the length. All of the functions that do bufToSomething get the data from where readLength points, and advance read length. resetRead sets readLength back to the header (since no one outside of the person who writes the class should touch the header). empty likewise sets the length back to the header since the header will be calculated in the finalize method.

The base class and most classes of this kind will have an integer before the string, denoting the strings length... this is hidden by the function calls, but something someone may want to be aware of... it should not matter much as this same packet class should be used on both sides.

Uses of this class that don't get newed and deleted a lot can just go ahead and use the constructor with buf = NULL, as this will have the packet manage its own memory, making life easier.


Constructor & Destructor Documentation

ArBasePacket::ArBasePacket ArTypes::UByte2    bufferSize = 0,
ArTypes::UByte2    headerLength = 0,
char *    buf = NULL
 

Constructor.

Parameters:
bufferSize  size of the buffer
headerLength  length of the header
buf  buffer packet uses, if NULL, instance will allocate memory


Member Function Documentation

void ArBasePacket::bufToData char *    data,
int    length
[virtual]
 

Gets length bytes from buffer and puts them into data.

copies length bytes from the buffer into data, length is passed in, not read from packet

Parameters:
data  character array to copy the data into
length  number of bytes to copy into data

void ArBasePacket::bufToStr char *    buf,
int    len
[virtual]
 

Gets a string from the buffer.

puts a string from the packets buffer into the given buffer, stopping when it reaches the end of the packets buffer or the length of the given buffer or a '\0'

void ArBasePacket::dataToBuf const char *    data,
int    length
[virtual]
 

Copies length bytes from data into packet buffer.

puts data into the buffer without putting in length first

Parameters:
data  chacter array to copy into buffer
legnth  how many botes to copy from data into packet

void ArBasePacket::duplicatePacket ArBasePacket *    packet [virtual]
 

Makes this packet a duplicate of another packet.

Copies the given packets buffer into the buffer of this packet, also sets this length and readlength to what the given packet has

Parameters:
packet  the packet to duplicate

void ArBasePacket::empty void    [virtual]
 

resets the length for more data to be added.

Sets the packet length back to be the packets header length again

void ArBasePacket::resetRead void    [virtual]
 

Restart the reading process.

Sets the length read back to the header length so the packet can be reread using the other methods

Reimplemented in ArRobotPacket, and ArSickPacket.

void ArBasePacket::strNToBuf const char *    str,
int    length
[virtual]
 

Copies length bytes from str into packet buffer.

first puts the length of the string into the buffer, then puts in string

Parameters:
str  character array to copy into buffer
length  how many bytes to copy from the str into packet

void ArBasePacket::strToBuf std::string    str [virtual]
 

Puts a string into packet buffer.

first puts the length of the string into the buffer, then puts in string

Parameters:
str  string to copy into buffer

void ArBasePacket::strToBufPadded const char *    str,
int    length
[virtual]
 

Copies length bytes from str, if str ends before length, pads data.

first puts the length of the string into the buffer, then puts in string, if string ends before length it pads the string

Parameters:
str  character array to copy into buffer
length  how many bytes to copy from the str into packet


The documentation for this class was generated from the following files:
Generated on Tue Nov 12 17:43:51 2002 for Aria by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001