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

ArCentralManager Class Reference

#include <ArCentralManager.h>

Inheritance diagram for ArCentralManager:

ArASyncTask ArThread List of all members.

Public Member Functions

void addForwarderAddedCallback (ArFunctor1< ArCentralForwarder * > *functor, int priority=0)
 Adds a callback for when a new forwarder is added.
void addForwarderRemovedCallback (ArFunctor1< ArCentralForwarder * > *functor, int priority=0)
 Adds a callback for when a new forwarder is destroyed.
 ArCentralManager (ArServerBase *robotServer, ArServerBase *clientServer)
 Constructor.
void netClientList (ArServerClient *client, ArNetPacket *packet)
 Networking command to get the list of clients.
void netServerSwitch (ArServerClient *client, ArNetPacket *packet)
 Networking command to switch the direction of a connection.
void remForwarderAddedCallback (ArFunctor1< ArCentralForwarder * > *functor)
 Removes a callback for when a new forwarder is added.
void remForwarderRemovedCallback (ArFunctor1< ArCentralForwarder * > *functor)
 Removes a callback for when a new forwarder is destroyed.
virtual void * runThread (void *arg)
 This should be its own thread here.
virtual ~ArCentralManager ()
 Destructor.

Protected Member Functions

void close (void)

Protected Attributes

ArFunctorC< ArCentralManagermyAriaExitCB
ArMutex myCallbackMutex
std::list< std::string > myClientNames
ArServerBasemyClientServer
std::list< ArSocket * > myClientSockets
ArMutex myDataMutex
std::multimap< int, ArFunctor1<
ArCentralForwarder * > * > 
myForwarderAddedCBList
std::multimap< int, ArFunctor1<
ArCentralForwarder * > * > 
myForwarderRemovedCBList
std::list< ArCentralForwarder * > myForwarders
double myHeartbeatTimeout
ArFunctor2C< ArCentralManager,
ArServerClient *, ArNetPacket * > 
myNetClientListCB
ArFunctor2C< ArCentralManager,
ArServerClient *, ArNetPacket * > 
myNetSwitchCB
int myOnSocket
ArServerBasemyRobotServer
std::set< int > myUsedPorts

Constructor & Destructor Documentation

ArCentralManager::ArCentralManager ArServerBase robotServer,
ArServerBase clientServer
 

Constructor.

Definition at line 30 of file ArCentralManager.cpp.

References ArServerBase::addData(), Aria::addExitCallback(), ArConfig::addParam(), Aria::getConfig(), myAriaExitCB, myClientServer, myHeartbeatTimeout, myNetClientListCB, myNetSwitchCB, myRobotServer, ArASyncTask::runAsync(), and ArFunctor::setName().

ArCentralManager::~ArCentralManager  )  [virtual]
 

Destructor.

Definition at line 69 of file ArCentralManager.cpp.


Member Function Documentation

void ArCentralManager::addForwarderAddedCallback ArFunctor1< ArCentralForwarder * > *  functor,
int  priority = 0
 

Adds a callback for when a new forwarder is added.

Definition at line 314 of file ArCentralManager.cpp.

References ArMutex::lock(), myCallbackMutex, myForwarderAddedCBList, and ArMutex::unlock().

void ArCentralManager::addForwarderRemovedCallback ArFunctor1< ArCentralForwarder * > *  functor,
int  priority = 0
 

Adds a callback for when a new forwarder is destroyed.

Definition at line 346 of file ArCentralManager.cpp.

References ArMutex::lock(), myCallbackMutex, myForwarderRemovedCBList, and ArMutex::unlock().

void ArCentralManager::close void   )  [protected]
 

Definition at line 73 of file ArCentralManager.cpp.

References ArLog::log(), myForwarderRemovedCBList, and myForwarders.

void ArCentralManager::netClientList ArServerClient client,
ArNetPacket packet
 

Networking command to get the list of clients.

Definition at line 163 of file ArCentralManager.cpp.

References client, ArCentralForwarder::getClient(), ArSocket::getIPString(), ArCentralForwarder::getPort(), ArCentralForwarder::getRobotName(), ArClientBase::getTcpSocket(), ArMutex::lock(), myDataMutex, myForwarders, ArClientBase::sendPacketTcp(), ArBasePacket::strToBuf(), ArBasePacket::uByte2ToBuf(), and ArMutex::unlock().

void ArCentralManager::netServerSwitch ArServerClient client,
ArNetPacket packet
 

Networking command to switch the direction of a connection.

acknowledge the switch

Definition at line 97 of file ArCentralManager.cpp.

References client, ArCentralForwarder::getRobotName(), ArClientBase::getTcpSocket(), ArMutex::lock(), ArLog::log(), myClientNames, myClientSockets, myDataMutex, myForwarders, ArClientBase::sendPacketTcp(), ArSocket::transfer(), and ArMutex::unlock().

void ArCentralManager::remForwarderAddedCallback ArFunctor1< ArCentralForwarder * > *  functor  ) 
 

Removes a callback for when a new forwarder is added.

Definition at line 324 of file ArCentralManager.cpp.

References ArMutex::lock(), myCallbackMutex, myForwarderAddedCBList, and ArMutex::unlock().

void ArCentralManager::remForwarderRemovedCallback ArFunctor1< ArCentralForwarder * > *  functor  ) 
 

Removes a callback for when a new forwarder is destroyed.

Definition at line 356 of file ArCentralManager.cpp.

References ArMutex::lock(), myCallbackMutex, myForwarderRemovedCBList, and ArMutex::unlock().

void * ArCentralManager::runThread void *  arg  )  [virtual]
 

This should be its own thread here.

Implements ArASyncTask.

Definition at line 186 of file ArCentralManager.cpp.

References ArServerBase::broadcastPacketTcp(), ArCentralForwarder::callOnce(), ArCentralForwarder::getClient(), ArSocket::getIPString(), ArCentralForwarder::getPort(), ArCentralForwarder::getRobotName(), ArThread::getRunning(), ArServerBase::getTcpPort(), ArClientBase::getTcpSocket(), ArCentralForwarder::isConnected(), ArMutex::lock(), ArLog::log(), myClientNames, myClientServer, myClientSockets, myDataMutex, myForwarderAddedCBList, myForwarderRemovedCBList, myForwarders, myHeartbeatTimeout, myUsedPorts, ArThread::setThreadName(), ArUtil::sleep(), ArBasePacket::strToBuf(), ArThread::threadStarted(), ArBasePacket::uByte2ToBuf(), and ArMutex::unlock().


Member Data Documentation

ArFunctorC<ArCentralManager> ArCentralManager::myAriaExitCB [protected]
 

Definition at line 77 of file ArCentralManager.h.

Referenced by ArCentralManager().

ArMutex ArCentralManager::myCallbackMutex [protected]
 

Definition at line 66 of file ArCentralManager.h.

Referenced by addForwarderAddedCallback(), addForwarderRemovedCallback(), remForwarderAddedCallback(), and remForwarderRemovedCallback().

std::list<std::string> ArCentralManager::myClientNames [protected]
 

Definition at line 63 of file ArCentralManager.h.

Referenced by netServerSwitch(), and runThread().

ArServerBase* ArCentralManager::myClientServer [protected]
 

Definition at line 60 of file ArCentralManager.h.

Referenced by ArCentralManager(), and runThread().

std::list<ArSocket *> ArCentralManager::myClientSockets [protected]
 

Definition at line 62 of file ArCentralManager.h.

Referenced by netServerSwitch(), and runThread().

ArMutex ArCentralManager::myDataMutex [protected]
 

Definition at line 71 of file ArCentralManager.h.

Referenced by netClientList(), netServerSwitch(), and runThread().

std::multimap<int, ArFunctor1<ArCentralForwarder *> *> ArCentralManager::myForwarderAddedCBList [protected]
 

Definition at line 68 of file ArCentralManager.h.

Referenced by addForwarderAddedCallback(), remForwarderAddedCallback(), and runThread().

std::multimap<int, ArFunctor1<ArCentralForwarder *> *> ArCentralManager::myForwarderRemovedCBList [protected]
 

Definition at line 70 of file ArCentralManager.h.

Referenced by addForwarderRemovedCallback(), close(), remForwarderRemovedCallback(), and runThread().

std::list<ArCentralForwarder *> ArCentralManager::myForwarders [protected]
 

Definition at line 64 of file ArCentralManager.h.

Referenced by close(), netClientList(), netServerSwitch(), and runThread().

double ArCentralManager::myHeartbeatTimeout [protected]
 

Definition at line 61 of file ArCentralManager.h.

Referenced by ArCentralManager(), and runThread().

ArFunctor2C<ArCentralManager, ArServerClient *, ArNetPacket *> ArCentralManager::myNetClientListCB [protected]
 

Definition at line 76 of file ArCentralManager.h.

Referenced by ArCentralManager().

ArFunctor2C<ArCentralManager, ArServerClient *, ArNetPacket *> ArCentralManager::myNetSwitchCB [protected]
 

Definition at line 74 of file ArCentralManager.h.

Referenced by ArCentralManager().

int ArCentralManager::myOnSocket [protected]
 

Definition at line 72 of file ArCentralManager.h.

ArServerBase* ArCentralManager::myRobotServer [protected]
 

Definition at line 59 of file ArCentralManager.h.

Referenced by ArCentralManager().

std::set<int> ArCentralManager::myUsedPorts [protected]
 

Definition at line 65 of file ArCentralManager.h.

Referenced by runThread().


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