Sirikata
|
MasterPintoServerQuerierBase uses a single, centralized master Pinto query server to discover which other space servers must be queried. More...
#include <MasterPintoServerQuerierBase.hpp>
Public Member Functions | |
MasterPintoServerQuerierBase (SpaceContext *ctx, const String ¶ms) | |
virtual | ~MasterPintoServerQuerierBase () |
virtual void | start () |
virtual void | stop () |
virtual void | updateRegion (const BoundingBox3f ®ion) |
Update this server's parameters. | |
virtual void | updateLargestObject (float max_radius) |
Update this server's parameters. | |
virtual void | updateQuery (const String &update)=0 |
Update query parameters with the server. | |
Protected Types | |
enum | QueueUpdateType { QueueUpdate, DoNotQueueUpdate } |
Protected Member Functions | |
virtual void | onConnected () |
virtual void | onDisconnected () |
virtual void | onPintoData (const String &data)=0 |
void | sendQueryUpdate (const String &data, QueueUpdateType queue=QueueUpdate) |
Protected Attributes | |
SpaceContext * | mContext |
Network::IOStrand * | mIOStrand |
Network::Stream * | mServerStream |
Private Member Functions | |
void | connect () |
bool | connected () |
void | handleServerConnection (Network::Stream::ConnectionStatus status, const std::string &reason) |
void | handleServerReceived (Network::Chunk &data, const Network::Stream::PauseReceiveCallback &pause) |
void | handleServerReadySend () |
void | tryServerUpdate () |
Private Attributes | |
String | mHost |
String | mPort |
bool | mConnecting |
bool | mConnected |
bool | mGaveID |
BoundingBox3f | mRegion |
bool | mRegionDirty |
float32 | mMaxRadius |
bool | mMaxRadiusDirty |
std::vector< String > | mQueuedQueryUpdates |
MasterPintoServerQuerierBase uses a single, centralized master Pinto query server to discover which other space servers must be queried.
Base class for specific implementation, e.g. using aggregated queries, or replicated top-level trees. It handles setting up the connection and managing updates for the required properties. Implementations need to handle query update requests from Proximity and deal with interaction over the connection generated by this class.
enum Sirikata::MasterPintoServerQuerierBase::QueueUpdateType [protected] |
Sirikata::MasterPintoServerQuerierBase::MasterPintoServerQuerierBase | ( | SpaceContext * | ctx, |
const String & | params | ||
) |
Sirikata::MasterPintoServerQuerierBase::~MasterPintoServerQuerierBase | ( | ) | [virtual] |
References mIOStrand, and mServerStream.
void Sirikata::MasterPintoServerQuerierBase::connect | ( | ) | [private] |
References Sirikata::OptionValue::as(), Sirikata::Network::Stream::connect(), Sirikata::Logging::debug, Sirikata::FactoryWithOptionsImpl< T, Ftype >::getConstructor(), Sirikata::FactoryWithOptionsImpl< T, Ftype >::getOptionParser(), Sirikata::OptionSet::getOptions(), Sirikata::Network::StreamFactory::getSingleton(), handleServerConnection(), handleServerReadySend(), handleServerReceived(), Sirikata::Network::Stream::ignoreSubstreamCallback(), mConnecting, mHost, mIOStrand, MP_LOG, mPort, mServerStream, OPT_MASTER_PINTO_PROTOCOL, OPT_MASTER_PINTO_PROTOCOL_OPTIONS, Sirikata::OptionSet::referenceOption(), and Sirikata::Network::Address::toString().
Referenced by sendQueryUpdate(), start(), and tryServerUpdate().
bool Sirikata::MasterPintoServerQuerierBase::connected | ( | ) | [inline, private] |
References mConnected.
Referenced by sendQueryUpdate().
void Sirikata::MasterPintoServerQuerierBase::handleServerConnection | ( | Network::Stream::ConnectionStatus | status, |
const std::string & | reason | ||
) | [private] |
References Sirikata::Network::Stream::Connected, Sirikata::Network::Stream::ConnectionFailed, Sirikata::Logging::debug, Sirikata::Network::Stream::Disconnected, mConnected, mConnecting, mGaveID, MP_LOG, mQueuedQueryUpdates, onConnected(), onDisconnected(), sendQueryUpdate(), and tryServerUpdate().
Referenced by connect().
void Sirikata::MasterPintoServerQuerierBase::handleServerReadySend | ( | ) | [private] |
Referenced by connect().
void Sirikata::MasterPintoServerQuerierBase::handleServerReceived | ( | Network::Chunk & | data, |
const Network::Stream::PauseReceiveCallback & | pause | ||
) | [private] |
References onPintoData().
Referenced by connect().
virtual void Sirikata::MasterPintoServerQuerierBase::onConnected | ( | ) | [inline, protected, virtual] |
Reimplemented in Sirikata::MasterPintoServerQuerier.
Referenced by handleServerConnection().
virtual void Sirikata::MasterPintoServerQuerierBase::onDisconnected | ( | ) | [inline, protected, virtual] |
Referenced by handleServerConnection().
virtual void Sirikata::MasterPintoServerQuerierBase::onPintoData | ( | const String & | data | ) | [protected, pure virtual] |
Implemented in Sirikata::MasterPintoManualServerQuerier, and Sirikata::MasterPintoServerQuerier.
Referenced by handleServerReceived().
void Sirikata::MasterPintoServerQuerierBase::sendQueryUpdate | ( | const String & | data, |
QueueUpdateType | queue = QueueUpdate |
||
) | [protected] |
References connect(), connected(), mQueuedQueryUpdates, mServerStream, QueueUpdate, Sirikata::Network::ReliableOrdered, Sirikata::Network::Stream::send(), and Sirikata::serializePBJMessage().
Referenced by handleServerConnection(), Sirikata::MasterPintoServerQuerier::updatePintoQuery(), and Sirikata::MasterPintoManualServerQuerier::updateQuery().
void Sirikata::MasterPintoServerQuerierBase::start | ( | ) | [virtual] |
Implements Sirikata::Service.
References connect().
void Sirikata::MasterPintoServerQuerierBase::stop | ( | ) | [virtual] |
Implements Sirikata::Service.
References Sirikata::Network::Stream::close(), mConnected, and mServerStream.
void Sirikata::MasterPintoServerQuerierBase::tryServerUpdate | ( | ) | [private] |
References connect(), Sirikata::SpaceContext::id(), mConnected, mContext, mGaveID, mMaxRadius, mMaxRadiusDirty, mRegion, mRegionDirty, mServerStream, Sirikata::Network::ReliableOrdered, Sirikata::Network::Stream::send(), and Sirikata::serializePBJMessage().
Referenced by handleServerConnection(), updateLargestObject(), and updateRegion().
void Sirikata::MasterPintoServerQuerierBase::updateLargestObject | ( | float | max_radius | ) | [virtual] |
Update this server's parameters.
max_radius | size of the largest object in the region |
Implements Sirikata::PintoServerQuerier.
References Sirikata::Logging::debug, mIOStrand, mMaxRadius, mMaxRadiusDirty, MP_LOG, Sirikata::Network::IOStrand::post(), and tryServerUpdate().
virtual void Sirikata::MasterPintoServerQuerierBase::updateQuery | ( | const String & | update | ) | [pure virtual] |
Update query parameters with the server.
update | a string containing the data to send to the server as an update |
Implements Sirikata::PintoServerQuerier.
Implemented in Sirikata::MasterPintoManualServerQuerier, and Sirikata::MasterPintoServerQuerier.
void Sirikata::MasterPintoServerQuerierBase::updateRegion | ( | const BoundingBox3f & | region | ) | [virtual] |
Update this server's parameters.
region | bounding box of the region covered by this server |
Implements Sirikata::PintoServerQuerier.
References Sirikata::Logging::debug, mIOStrand, MP_LOG, mRegion, mRegionDirty, Sirikata::Network::IOStrand::post(), and tryServerUpdate().
bool Sirikata::MasterPintoServerQuerierBase::mConnected [private] |
Referenced by connected(), handleServerConnection(), stop(), and tryServerUpdate().
bool Sirikata::MasterPintoServerQuerierBase::mConnecting [private] |
Referenced by connect(), and handleServerConnection().
Referenced by tryServerUpdate().
bool Sirikata::MasterPintoServerQuerierBase::mGaveID [private] |
Referenced by handleServerConnection(), and tryServerUpdate().
String Sirikata::MasterPintoServerQuerierBase::mHost [private] |
Referenced by connect(), and MasterPintoServerQuerierBase().
float32 Sirikata::MasterPintoServerQuerierBase::mMaxRadius [private] |
Referenced by tryServerUpdate(), and updateLargestObject().
bool Sirikata::MasterPintoServerQuerierBase::mMaxRadiusDirty [private] |
Referenced by tryServerUpdate(), and updateLargestObject().
String Sirikata::MasterPintoServerQuerierBase::mPort [private] |
Referenced by connect(), and MasterPintoServerQuerierBase().
std::vector<String> Sirikata::MasterPintoServerQuerierBase::mQueuedQueryUpdates [private] |
Referenced by handleServerConnection(), and sendQueryUpdate().
BoundingBox3f Sirikata::MasterPintoServerQuerierBase::mRegion [private] |
Referenced by tryServerUpdate(), and updateRegion().
bool Sirikata::MasterPintoServerQuerierBase::mRegionDirty [private] |
Referenced by tryServerUpdate(), and updateRegion().
Referenced by connect(), sendQueryUpdate(), stop(), tryServerUpdate(), and ~MasterPintoServerQuerierBase().