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

ArNetPacketReceiverTcp Class Reference

This class receives TCP packets from a socket, you need to have an open socket and give it to the socket with setSocket, then you need to set up a callback to process packets with setProcessPacketCB, finally call readData which will read in all the data and call the processPacketCB. More...

#include <ArNetPacketReceiverTcp.h>

List of all members.

Public Member Functions

 ArNetPacketReceiverTcp ()
 Constructor.
ArFunctor1< ArNetPacket * > * getProcessPacketCB (void)
 Gets the callback used when a packet is received.
bool getQuiet (void)
 Gets whether we're quiet about errors or not.
ArSocketgetSocket (void)
 Gets the socket this receiver uses.
bool readData (void)
 Reads in all the data available calling the processPacketCB.
void setProcessPacketCB (ArFunctor1< ArNetPacket * > *functor)
 Sets the callback for use when a packet is received.
void setQuiet (bool quiet)
 Sets whether we're quiet about errors or not.
void setSocket (ArSocket *socket)
 Sets the socket this receiver uses.
 ~ArNetPacketReceiverTcp ()
 Destructor.

Protected Types

enum  Ret {
  RET_CONN_CLOSED, RET_GOT_PACKET, RET_BAD_PACKET, RET_FAILED_READ,
  RET_TIMED_OUT
}
enum  State {
  STATE_SYNC1, STATE_SYNC2, STATE_LENGTH1, STATE_LENGTH2,
  STATE_ACQUIRE_DATA
}

Protected Member Functions

Ret readPacket (int msWait)
 Reads in a single packet, returns NULL if not one.

Protected Attributes

ArTime myLastPacket
ArNetPacket myPacket
ArFunctor1< ArNetPacket * > * myProcessPacketCB
bool myQuiet
char myReadBuff [ArNetPacket::MAX_LENGTH+ArNetPacket::HEADER_LENGTH+ArNetPacket::FOOTER_LENGTH]
int myReadCommand
int myReadCount
int myReadLength
ArSocketmySocket
State myState
unsigned char mySync1
unsigned char mySync2


Detailed Description

This class receives TCP packets from a socket, you need to have an open socket and give it to the socket with setSocket, then you need to set up a callback to process packets with setProcessPacketCB, finally call readData which will read in all the data and call the processPacketCB.

Definition at line 39 of file ArNetPacketReceiverTcp.h.


Member Enumeration Documentation

enum ArNetPacketReceiverTcp::Ret [protected]
 

Enumeration values:
RET_CONN_CLOSED 
RET_GOT_PACKET 
RET_BAD_PACKET 
RET_FAILED_READ 
RET_TIMED_OUT 

Definition at line 66 of file ArNetPacketReceiverTcp.h.

enum ArNetPacketReceiverTcp::State [protected]
 

Enumeration values:
STATE_SYNC1 
STATE_SYNC2 
STATE_LENGTH1 
STATE_LENGTH2 
STATE_ACQUIRE_DATA 

Definition at line 76 of file ArNetPacketReceiverTcp.h.


Constructor & Destructor Documentation

ArNetPacketReceiverTcp::ArNetPacketReceiverTcp  ) 
 

Constructor.

Definition at line 33 of file ArNetPacketReceiverTcp.cpp.

References myProcessPacketCB, myQuiet, mySocket, myState, mySync1, mySync2, and STATE_SYNC1.

ArNetPacketReceiverTcp::~ArNetPacketReceiverTcp  ) 
 

Destructor.

Definition at line 43 of file ArNetPacketReceiverTcp.cpp.


Member Function Documentation

ArFunctor1< ArNetPacket * > * ArNetPacketReceiverTcp::getProcessPacketCB void   ) 
 

Gets the callback used when a packet is received.

Returns:
the callback used when a packet needs to be processed

Definition at line 315 of file ArNetPacketReceiverTcp.cpp.

References myProcessPacketCB.

bool ArNetPacketReceiverTcp::getQuiet void   )  [inline]
 

Gets whether we're quiet about errors or not.

Definition at line 64 of file ArNetPacketReceiverTcp.h.

References myQuiet.

ArSocket * ArNetPacketReceiverTcp::getSocket void   ) 
 

Gets the socket this receiver uses.

Definition at line 63 of file ArNetPacketReceiverTcp.cpp.

References mySocket.

bool ArNetPacketReceiverTcp::readData void   ) 
 

Reads in all the data available calling the processPacketCB.

If an error occurs that is unrecoverable false will be returned which means that the socket owner who is calling this should close the socket and clean up.

Returns:
false on an error that should cause the socket to be closed, true with no errors

Definition at line 77 of file ArNetPacketReceiverTcp.cpp.

References ArSocket::inAddr(), ArFunctor1< P1 >::invoke(), ArLog::log(), myPacket, myProcessPacketCB, myQuiet, mySocket, readPacket(), RET_BAD_PACKET, RET_CONN_CLOSED, RET_FAILED_READ, RET_GOT_PACKET, RET_TIMED_OUT, and ArNetPacket::setPacketSource().

Referenced by ArClientBase::loopOnce(), and ArServerClient::tcpCallback().

ArNetPacketReceiverTcp::Ret ArNetPacketReceiverTcp::readPacket int  msWait  )  [protected]
 

Reads in a single packet, returns NULL if not one.

Definition at line 139 of file ArNetPacketReceiverTcp.cpp.

References ArTime::addMSec(), ArBasePacket::dataToBuf(), ArNetPacket::empty(), ArNetPacket::getCommand(), ArBasePacket::getFooterLength(), ArBasePacket::getHeaderLength(), ArLog::log(), ArTime::mSecTo(), myPacket, myQuiet, myReadBuff, myReadCount, myReadLength, mySocket, myState, mySync1, mySync2, ArSocket::read(), ArNetPacket::resetRead(), RET_BAD_PACKET, RET_CONN_CLOSED, RET_FAILED_READ, RET_GOT_PACKET, RET_TIMED_OUT, ArBasePacket::setLength(), ArTime::setToNow(), STATE_ACQUIRE_DATA, STATE_LENGTH1, STATE_LENGTH2, STATE_SYNC1, STATE_SYNC2, ArBasePacket::uByteToBuf(), and ArNetPacket::verifyCheckSum().

Referenced by readData().

void ArNetPacketReceiverTcp::setProcessPacketCB ArFunctor1< ArNetPacket * > *  functor  ) 
 

Sets the callback for use when a packet is received.

Parameters:
functor the callback to use when a packet needs to be processed

Definition at line 306 of file ArNetPacketReceiverTcp.cpp.

References myProcessPacketCB.

Referenced by ArClientBase::ArClientBase(), ArServerClient::ArServerClient(), and ArServerClient::~ArServerClient().

void ArNetPacketReceiverTcp::setQuiet bool  quiet  )  [inline]
 

Sets whether we're quiet about errors or not.

Definition at line 62 of file ArNetPacketReceiverTcp.h.

References myQuiet.

Referenced by ArClientBase::internalBlockingConnect().

void ArNetPacketReceiverTcp::setSocket ArSocket socket  ) 
 

Sets the socket this receiver uses.

Parameters:
socket the socket to use for receiving data

Definition at line 54 of file ArNetPacketReceiverTcp.cpp.

References mySocket.

Referenced by ArClientBase::ArClientBase(), ArServerClient::ArServerClient(), and ArServerClient::~ArServerClient().


Member Data Documentation

ArTime ArNetPacketReceiverTcp::myLastPacket [protected]
 

Definition at line 82 of file ArNetPacketReceiverTcp.h.

ArNetPacket ArNetPacketReceiverTcp::myPacket [protected]
 

Definition at line 83 of file ArNetPacketReceiverTcp.h.

Referenced by readData(), and readPacket().

ArFunctor1<ArNetPacket *>* ArNetPacketReceiverTcp::myProcessPacketCB [protected]
 

Definition at line 79 of file ArNetPacketReceiverTcp.h.

Referenced by ArNetPacketReceiverTcp(), getProcessPacketCB(), readData(), and setProcessPacketCB().

bool ArNetPacketReceiverTcp::myQuiet [protected]
 

Definition at line 80 of file ArNetPacketReceiverTcp.h.

Referenced by ArNetPacketReceiverTcp(), getQuiet(), readData(), readPacket(), and setQuiet().

char ArNetPacketReceiverTcp::myReadBuff[ArNetPacket::MAX_LENGTH+ArNetPacket::HEADER_LENGTH+ArNetPacket::FOOTER_LENGTH] [protected]
 

Definition at line 84 of file ArNetPacketReceiverTcp.h.

Referenced by readPacket().

int ArNetPacketReceiverTcp::myReadCommand [protected]
 

Definition at line 87 of file ArNetPacketReceiverTcp.h.

int ArNetPacketReceiverTcp::myReadCount [protected]
 

Definition at line 85 of file ArNetPacketReceiverTcp.h.

Referenced by readPacket().

int ArNetPacketReceiverTcp::myReadLength [protected]
 

Definition at line 86 of file ArNetPacketReceiverTcp.h.

Referenced by readPacket().

ArSocket* ArNetPacketReceiverTcp::mySocket [protected]
 

Definition at line 81 of file ArNetPacketReceiverTcp.h.

Referenced by ArNetPacketReceiverTcp(), getSocket(), readData(), readPacket(), and setSocket().

State ArNetPacketReceiverTcp::myState [protected]
 

Definition at line 78 of file ArNetPacketReceiverTcp.h.

Referenced by ArNetPacketReceiverTcp(), and readPacket().

unsigned char ArNetPacketReceiverTcp::mySync1 [protected]
 

Definition at line 88 of file ArNetPacketReceiverTcp.h.

Referenced by ArNetPacketReceiverTcp(), and readPacket().

unsigned char ArNetPacketReceiverTcp::mySync2 [protected]
 

Definition at line 89 of file ArNetPacketReceiverTcp.h.

Referenced by ArNetPacketReceiverTcp(), and readPacket().


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