Sirikata
|
#include <LibproxProximity.hpp>
Classes | |
struct | ProxQueryHandlerData |
Public Types | |
typedef Prox::Query < ObjectProxSimulationTraits > | Query |
typedef Prox::QueryEvent < ObjectProxSimulationTraits > | QueryEvent |
Public Member Functions | |
LibproxProximity (SpaceContext *ctx, LocationService *locservice, CoordinateSegmentation *cseg, SpaceNetwork *net, AggregateManager *aggmgr) | |
~LibproxProximity () | |
virtual void | start () |
Start polling this service on this strand at the given maximum rate. | |
virtual void | newSession (ObjectSession *session) |
virtual void | sessionClosed (ObjectSession *session) |
virtual void | addQuery (UUID obj, SolidAngle sa, uint32 max_results) |
virtual void | addQuery (UUID obj, const String ¶ms) |
virtual void | removeQuery (UUID obj) |
virtual void | onPintoServerResult (const Sirikata::Protocol::Prox::ProximityUpdate &update) |
virtual void | onPintoServerLocUpdate (const LocUpdate &update) |
virtual void | localObjectRemoved (const UUID &uuid, bool agg) |
virtual void | localLocationUpdated (const UUID &uuid, bool agg, const TimedMotionVector3f &newval) |
virtual void | localBoundsUpdated (const UUID &uuid, bool agg, const AggregateBoundingInfo &newval) |
virtual void | replicaObjectRemoved (const UUID &uuid) |
virtual void | replicaLocationUpdated (const UUID &uuid, const TimedMotionVector3f &newval) |
virtual void | receiveMessage (Message *msg) |
virtual std::string | migrationClientTag () |
The tag used to uniquely identify this component. | |
virtual std::string | generateMigrationData (const UUID &obj, ServerID source_server, ServerID dest_server) |
Produce data for the migration of obj from source_server to dest_server. | |
virtual void | receiveMigrationData (const UUID &obj, ServerID source_server, ServerID dest_server, const std::string &data) |
Receive data for the migration of obj from source_server to dest_server. | |
virtual void | aggregateCreated (ProxAggregator *handler, const ObjectReference &objid) |
virtual void | aggregateChildAdded (ProxAggregator *handler, const ObjectReference &objid, const ObjectReference &child, const Vector3f &bnds_center, const float32 bnds_center_radius, const float32 max_obj_size) |
virtual void | aggregateChildRemoved (ProxAggregator *handler, const ObjectReference &objid, const ObjectReference &child, const Vector3f &bnds_center, const float32 bnds_center_radius, const float32 max_obj_size) |
virtual void | aggregateBoundsUpdated (ProxAggregator *handler, const ObjectReference &objid, const Vector3f &bnds_center, const float32 bnds_center_radius, const float32 max_obj_size) |
virtual void | aggregateDestroyed (ProxAggregator *handler, const ObjectReference &objid) |
virtual void | aggregateObserved (ProxAggregator *handler, const ObjectReference &objid, uint32 nobservers, uint32 nchildren) |
void | queryHasEvents (Query *query) |
Private Types | |
typedef Prox::QueryHandler < ObjectProxSimulationTraits > | ProxQueryHandler |
typedef Prox::Aggregator < ObjectProxSimulationTraits > | ProxAggregator |
typedef std::tr1::unordered_set < ServerID > | ServerSet |
typedef std::set< UUID > | ObjectSet |
typedef std::tr1::unordered_map < ServerID, Query * > | ServerQueryMap |
typedef std::tr1::unordered_map< Query *, ServerID > | InvertedServerQueryMap |
typedef std::tr1::unordered_map< UUID, Query *, UUID::Hasher > | ObjectQueryMap |
typedef std::tr1::unordered_set< Query * > | FirstIterationObjectSet |
typedef std::tr1::unordered_map< Query *, UUID > | InvertedObjectQueryMap |
typedef std::tr1::shared_ptr < ObjectSet > | ObjectSetPtr |
typedef std::tr1::unordered_map < ServerID, ObjectSetPtr > | ServerQueryResultSet |
typedef std::map< UUID, SolidAngle > | ObjectQueryAngleMap |
typedef std::map< UUID, uint32 > | ObjectQueryMaxCountMap |
typedef std::tr1::unordered_set < ObjectReference, ObjectReference::Hasher > | ObjectIDSet |
typedef std::tr1::unordered_map < ServerID, SeqNoPtr > | ServerSeqNoInfoMap |
typedef std::tr1::unordered_map< UUID, SeqNoPtr, UUID::Hasher > | ObjectSeqNoInfoMap |
Private Member Functions | |
void | handleObjectProximityMessage (const UUID &objid, void *buffer, uint32 length) |
void | addAllServersForUpdate () |
void | getServersForAggregateQueryUpdate (ServerSet *servers_out) |
void | addServerForAggregateQueryUpdate (ServerID sid) |
void | updateAggregateQuery () |
uint32 | numServersQueried () |
virtual int32 | objectQueries () const |
virtual int32 | serverQueries () const |
void | poll () |
Override this method to specify the work to be done when polling. | |
void | updateQuery (ServerID sid, const TimedMotionVector3f &loc, const BoundingSphere3f &bounds, const SolidAngle &sa, uint32 max_results) |
void | removeQuery (ServerID sid) |
void | updateQuery (UUID obj, const TimedMotionVector3f &loc, const BoundingSphere3f &bounds, SolidAngle sa, uint32 max_results) |
void | sendQueryRequests () |
void | handleUpdateServerQuery (const ServerID &server, const TimedMotionVector3f &loc, const BoundingSphere3f &bounds, const SolidAngle &angle, uint32 max_results) |
void | handleRemoveServerQuery (const ServerID &server) |
virtual void | handleConnectedServer (ServerID server) |
virtual void | handleDisconnectedServer (ServerID server) |
void | handleUpdateObjectQuery (const UUID &object, const TimedMotionVector3f &loc, const BoundingSphere3f &bounds, const SolidAngle &angle, uint32 max_results, SeqNoPtr seqno) |
void | handleRemoveObjectQuery (const UUID &object, bool notify_main_thread) |
void | handleDisconnectedObject (const UUID &object) |
void | generateServerQueryEvents (Query *query) |
void | generateObjectQueryEvents (Query *query, bool do_first=false) |
bool | handlerShouldHandleObject (bool is_static_handler, bool is_global_handler, const ObjectReference &obj_id, bool local, bool aggregate, const TimedMotionVector3f &pos, const BoundingSphere3f ®ion, float maxSize) |
void | handleCheckObjectClassForHandlers (const ObjectReference &objid, bool is_static, ProxQueryHandlerData handlers[NUM_OBJECT_CLASSES]) |
virtual void | trySwapHandlers (bool is_local, const ObjectReference &objid, bool is_static) |
SeqNoPtr | getOrCreateSeqNoInfo (const ServerID server_id) |
void | eraseSeqNoInfo (const ServerID server_id) |
SeqNoPtr | getSeqNoInfo (const UUID &obj_id) |
void | eraseSeqNoInfo (const UUID &obj_id) |
void | tickQueryHandler (ProxQueryHandlerData qh[NUM_OBJECT_CLASSES]) |
void | rebuildHandlerType (ProxQueryHandlerData *handler, ObjectClass objtype) |
void | rebuildHandler (ObjectClass objtype) |
void | recomputeAggregateQueryBounds () |
virtual void | commandProperties (const Command::Command &cmd, Command::Commander *cmdr, Command::CommandID cmdid) |
virtual void | commandListHandlers (const Command::Command &cmd, Command::Commander *cmdr, Command::CommandID cmdid) |
bool | parseHandlerName (const String &name, ProxQueryHandlerData **handlers_out, ObjectClass *class_out) |
virtual void | commandForceRebuild (const Command::Command &cmd, Command::Commander *cmdr, Command::CommandID cmdid) |
virtual void | commandListNodes (const Command::Command &cmd, Command::Commander *cmdr, Command::CommandID cmdid) |
virtual void | commandListQueriers (const Command::Command &cmd, Command::Commander *cmdr, Command::CommandID cmdid) |
Private Attributes | |
boost::mutex | mServerSetMutex |
ServerSet | mServersQueried |
ServerSet | mNeedServerQueryUpdate |
float32 | mDistanceQueryDistance |
ObjectQueryAngleMap | mObjectQueryAngles |
ObjectQueryMaxCountMap | mObjectQueryMaxCounts |
AggregateBoundingInfo | mLastAggregateQuerierBounds |
SolidAngle | mMinObjectQueryAngle |
uint32 | mMaxMaxCount |
std::deque< Message * > | mServerResultsToSend |
std::deque < Sirikata::Protocol::Object::ObjectMessage * > | mObjectResultsToSend |
ServerQueryMap | mServerQueries [NUM_OBJECT_CLASSES] |
InvertedServerQueryMap | mInvertedServerQueries |
ProxQueryHandlerData | mServerQueryHandler [NUM_OBJECT_CLASSES] |
bool | mServerDistance |
ServerQueryResultSet | mServerQueryResults |
PollerService | mServerHandlerPoller |
PollerService | mServerQueryBoundsPoller |
ObjectQueryMap | mObjectQueries [NUM_OBJECT_CLASSES] |
InvertedObjectQueryMap | mInvertedObjectQueries |
FirstIterationObjectSet | mObjectQueriesFirstIteration |
ProxQueryHandlerData | mObjectQueryHandler [NUM_OBJECT_CLASSES] |
bool | mObjectDistance |
PollerService | mObjectHandlerPoller |
PollerService | mStaticRebuilderPoller |
PollerService | mDynamicRebuilderPoller |
ServerSeqNoInfoMap | mServerSeqNos |
ObjectSeqNoInfoMap | mObjectSeqNos |
Sirikata::ThreadSafeQueue < Message * > | mServerResults |
Sirikata::ThreadSafeQueue < Sirikata::Protocol::Object::ObjectMessage * > | mObjectResults |
typedef std::tr1::unordered_set<Query*> Sirikata::LibproxProximity::FirstIterationObjectSet [private] |
typedef std::tr1::unordered_map<Query*, UUID> Sirikata::LibproxProximity::InvertedObjectQueryMap [private] |
typedef std::tr1::unordered_map<Query*, ServerID> Sirikata::LibproxProximity::InvertedServerQueryMap [private] |
typedef std::tr1::unordered_set<ObjectReference, ObjectReference::Hasher> Sirikata::LibproxProximity::ObjectIDSet [private] |
typedef std::map<UUID, SolidAngle> Sirikata::LibproxProximity::ObjectQueryAngleMap [private] |
typedef std::tr1::unordered_map<UUID, Query*, UUID::Hasher> Sirikata::LibproxProximity::ObjectQueryMap [private] |
typedef std::map<UUID, uint32> Sirikata::LibproxProximity::ObjectQueryMaxCountMap [private] |
typedef std::tr1::unordered_map<UUID, SeqNoPtr, UUID::Hasher> Sirikata::LibproxProximity::ObjectSeqNoInfoMap [private] |
typedef std::set<UUID> Sirikata::LibproxProximity::ObjectSet [private] |
typedef std::tr1::shared_ptr<ObjectSet> Sirikata::LibproxProximity::ObjectSetPtr [private] |
typedef Prox::Aggregator<ObjectProxSimulationTraits> Sirikata::LibproxProximity::ProxAggregator [private] |
typedef Prox::QueryHandler<ObjectProxSimulationTraits> Sirikata::LibproxProximity::ProxQueryHandler [private] |
typedef Prox::Query<ObjectProxSimulationTraits> Sirikata::LibproxProximity::Query |
typedef Prox::QueryEvent<ObjectProxSimulationTraits> Sirikata::LibproxProximity::QueryEvent |
Reimplemented from Sirikata::LibproxProximityBase.
typedef std::tr1::unordered_map<ServerID, Query*> Sirikata::LibproxProximity::ServerQueryMap [private] |
typedef std::tr1::unordered_map<ServerID, ObjectSetPtr> Sirikata::LibproxProximity::ServerQueryResultSet [private] |
typedef std::tr1::unordered_map<ServerID, SeqNoPtr> Sirikata::LibproxProximity::ServerSeqNoInfoMap [private] |
typedef std::tr1::unordered_set<ServerID> Sirikata::LibproxProximity::ServerSet [private] |
Sirikata::LibproxProximity::LibproxProximity | ( | SpaceContext * | ctx, |
LocationService * | locservice, | ||
CoordinateSegmentation * | cseg, | ||
SpaceNetwork * | net, | ||
AggregateManager * | aggmgr | ||
) |
References Sirikata::GetOptionValue< String >(), Sirikata::LibproxProximity::ProxQueryHandlerData::handler, handlerShouldHandleObject(), mDistanceQueryDistance, Sirikata::LibproxProximityBase::mLocCache, Sirikata::LibproxProximityBase::mNumQueryHandlers, mObjectDistance, mObjectQueryHandler, Sirikata::LibproxProximityBase::mSeparateDynamicObjects, mServerDistance, mServerQueryHandler, Sirikata::LibproxProximityBase::NUM_OBJECT_CLASSES, Sirikata::LibproxProximityBase::OBJECT_CLASS_STATIC, OPT_PROX_OBJECT_QUERY_HANDLER_OPTIONS, OPT_PROX_OBJECT_QUERY_HANDLER_TYPE, OPT_PROX_QUERY_RANGE, OPT_PROX_SERVER_QUERY_HANDLER_OPTIONS, and OPT_PROX_SERVER_QUERY_HANDLER_TYPE.
Sirikata::LibproxProximity::~LibproxProximity | ( | ) |
void Sirikata::LibproxProximity::addAllServersForUpdate | ( | ) | [private] |
References mNeedServerQueryUpdate, mServerSetMutex, and mServersQueried.
Referenced by updateAggregateQuery().
void Sirikata::LibproxProximity::addQuery | ( | UUID | obj, |
const String & | params | ||
) | [virtual] |
void Sirikata::LibproxProximity::addQuery | ( | UUID | obj, |
SolidAngle | sa, | ||
uint32 | max_results | ||
) | [virtual] |
Implements Sirikata::Proximity.
References Sirikata::LocationService::bounds(), Sirikata::AggregateBoundingInfo::fullBounds(), Sirikata::LocationService::location(), Sirikata::Proximity::mLocService, and updateQuery().
Referenced by receiveMigrationData().
void Sirikata::LibproxProximity::addServerForAggregateQueryUpdate | ( | ServerID | sid | ) | [private] |
References mNeedServerQueryUpdate, and mServerSetMutex.
Referenced by sendQueryRequests().
void Sirikata::LibproxProximity::aggregateBoundsUpdated | ( | ProxAggregator * | handler, |
const ObjectReference & | objid, | ||
const Vector3f & | bnds_center, | ||
const float32 | bnds_center_radius, | ||
const float32 | max_obj_size | ||
) | [virtual] |
void Sirikata::LibproxProximity::aggregateChildAdded | ( | ProxAggregator * | handler, |
const ObjectReference & | objid, | ||
const ObjectReference & | child, | ||
const Vector3f & | bnds_center, | ||
const float32 | bnds_center_radius, | ||
const float32 | max_obj_size | ||
) | [virtual] |
void Sirikata::LibproxProximity::aggregateChildRemoved | ( | ProxAggregator * | handler, |
const ObjectReference & | objid, | ||
const ObjectReference & | child, | ||
const Vector3f & | bnds_center, | ||
const float32 | bnds_center_radius, | ||
const float32 | max_obj_size | ||
) | [virtual] |
void Sirikata::LibproxProximity::aggregateCreated | ( | ProxAggregator * | handler, |
const ObjectReference & | objid | ||
) | [virtual] |
void Sirikata::LibproxProximity::aggregateDestroyed | ( | ProxAggregator * | handler, |
const ObjectReference & | objid | ||
) | [virtual] |
void Sirikata::LibproxProximity::aggregateObserved | ( | ProxAggregator * | handler, |
const ObjectReference & | objid, | ||
uint32 | nobservers, | ||
uint32 | nchildren | ||
) | [virtual] |
void Sirikata::LibproxProximity::commandForceRebuild | ( | const Command::Command & | cmd, |
Command::Commander * | cmdr, | ||
Command::CommandID | cmdid | ||
) | [private, virtual] |
Implements Sirikata::LibproxProximityBase.
References Sirikata::Command::EmptyResult(), parseHandlerName(), rebuildHandlerType(), and Sirikata::Command::Commander::result().
void Sirikata::LibproxProximity::commandListHandlers | ( | const Command::Command & | cmd, |
Command::Commander * | cmdr, | ||
Command::CommandID | cmdid | ||
) | [private, virtual] |
void Sirikata::LibproxProximity::commandListNodes | ( | const Command::Command & | cmd, |
Command::Commander * | cmdr, | ||
Command::CommandID | cmdid | ||
) | [private, virtual] |
void Sirikata::LibproxProximity::commandListQueriers | ( | const Command::Command & | cmd, |
Command::Commander * | cmdr, | ||
Command::CommandID | cmdid | ||
) | [private, virtual] |
References Sirikata::Command::EmptyResult(), mObjectQueries, mObjectQueryHandler, mServerQueries, mServerQueryHandler, Sirikata::LibproxProximityBase::NUM_OBJECT_CLASSES, Sirikata::LibproxProximityBase::OBJECT_CLASS_STATIC, Sirikata::LibproxProximityBase::ObjectClassToString(), and Sirikata::Command::Commander::result().
void Sirikata::LibproxProximity::commandProperties | ( | const Command::Command & | cmd, |
Command::Commander * | cmdr, | ||
Command::CommandID | cmdid | ||
) | [private, virtual] |
Implements Sirikata::LibproxProximityBase.
References Sirikata::SolidAngle::asFloat(), Sirikata::Command::EmptyResult(), Sirikata::LibproxProximity::ProxQueryHandlerData::handler, mDistanceQueryDistance, mMaxMaxCount, Sirikata::LibproxProximityBase::mMaxObject, mMinObjectQueryAngle, Sirikata::LibproxProximityBase::mMoveToStaticDelay, Sirikata::LibproxProximityBase::mNumQueryHandlers, mObjectDistance, Sirikata::LibproxProximityBase::mObjectProxStreams, mObjectQueries, mObjectQueryHandler, mObjectResults, mObjectResultsToSend, Sirikata::LibproxProximityBase::mSeparateDynamicObjects, mServerDistance, mServerQueries, mServerQueryHandler, mServerResults, mServerResultsToSend, numServersQueried(), Sirikata::Command::Commander::result(), and Sirikata::ThreadSafeQueue< T >::size().
void Sirikata::LibproxProximity::eraseSeqNoInfo | ( | const ServerID | server_id | ) | [private] |
References mServerSeqNos.
Referenced by handleRemoveObjectQuery(), and handleRemoveServerQuery().
void Sirikata::LibproxProximity::eraseSeqNoInfo | ( | const UUID & | obj_id | ) | [private] |
References mObjectSeqNos.
std::string Sirikata::LibproxProximity::generateMigrationData | ( | const UUID & | obj, |
ServerID | source_server, | ||
ServerID | dest_server | ||
) | [virtual] |
Produce data for the migration of obj from source_server to dest_server.
Implements Sirikata::Proximity.
References Sirikata::SolidAngle::asFloat(), mObjectQueryAngles, mObjectQueryMaxCounts, removeQuery(), and Sirikata::serializePBJMessage().
void Sirikata::LibproxProximity::generateObjectQueryEvents | ( | Query * | query, |
bool | do_first = false |
||
) | [private] |
References Sirikata::CBRLocationServiceCache::bounds(), Sirikata::AggregateBoundingInfo::centerBoundsRadius, Sirikata::AggregateBoundingInfo::centerOffset, Sirikata::LibproxProximityBase::coalesceEvents(), Sirikata::createObjectMessage(), Sirikata::Logging::detailed, Sirikata::ObjectReference::getAsUUID(), Sirikata::GetOptionValue< uint32 >(), getSeqNoInfo(), Sirikata::LibproxProximityBase::handleAddObjectLocSubscription(), Sirikata::LibproxProximityBase::handleRemoveObjectLocSubscription(), Sirikata::SpaceContext::id(), Sirikata::CBRLocationServiceCache::isAggregate(), Sirikata::CBRLocationServiceCache::location(), Sirikata::Context::mainStrand, Sirikata::AggregateBoundingInfo::maxObjectRadius, Sirikata::Proximity::mContext, Sirikata::CBRLocationServiceCache::mesh(), mInvertedObjectQueries, Sirikata::LibproxProximityBase::mLocCache, mObjectQueriesFirstIteration, mObjectResults, Sirikata::UUID::null(), OBJECT_PORT_PROXIMITY, Sirikata::CBRLocationServiceCache::orientation(), Sirikata::CBRLocationServiceCache::physics(), Sirikata::TimedMotionQuaternion::position(), Sirikata::TimedMotionVector< MotionVectorType >::position(), Sirikata::Network::IOStrand::post(), PROX_MAX_PER_RESULT, PROXLOG, Sirikata::serializePBJMessage(), Sirikata::Context::simTime(), Sirikata::CBRLocationServiceCache::tracking(), Sirikata::TimedMotionQuaternion::updateTime(), Sirikata::TimedMotionVector< MotionVectorType >::updateTime(), Sirikata::TimedMotionQuaternion::velocity(), and Sirikata::TimedMotionVector< MotionVectorType >::velocity().
Referenced by queryHasEvents(), and tickQueryHandler().
void Sirikata::LibproxProximity::generateServerQueryEvents | ( | Query * | query | ) | [private] |
References Sirikata::CBRLocationServiceCache::bounds(), Sirikata::AggregateBoundingInfo::centerBoundsRadius, Sirikata::AggregateBoundingInfo::centerOffset, Sirikata::ObjectReference::getAsUUID(), Sirikata::GetOptionValue< uint32 >(), getOrCreateSeqNoInfo(), Sirikata::LibproxProximityBase::handleAddServerLocSubscription(), Sirikata::LibproxProximityBase::handleRemoveServerLocSubscription(), Sirikata::SpaceContext::id(), Sirikata::CBRLocationServiceCache::location(), Sirikata::Context::mainStrand, Sirikata::AggregateBoundingInfo::maxObjectRadius, Sirikata::Proximity::mContext, Sirikata::CBRLocationServiceCache::mesh(), mInvertedServerQueries, Sirikata::LibproxProximityBase::mLocCache, mServerResults, Sirikata::CBRLocationServiceCache::orientation(), Sirikata::CBRLocationServiceCache::physics(), Sirikata::TimedMotionQuaternion::position(), Sirikata::TimedMotionVector< MotionVectorType >::position(), Sirikata::Network::IOStrand::post(), PROX_MAX_PER_RESULT, Sirikata::ThreadSafeQueue< T >::push(), Sirikata::serializePBJMessage(), SERVER_PORT_PROX, Sirikata::Context::simTime(), Sirikata::CBRLocationServiceCache::tracking(), Sirikata::TimedMotionQuaternion::updateTime(), Sirikata::TimedMotionVector< MotionVectorType >::updateTime(), Sirikata::TimedMotionQuaternion::velocity(), and Sirikata::TimedMotionVector< MotionVectorType >::velocity().
Referenced by queryHasEvents().
SeqNoPtr Sirikata::LibproxProximity::getOrCreateSeqNoInfo | ( | const ServerID | server_id | ) | [private] |
{uuid} | obj_id The uuid of the object that we're sending proximity messages to. |
Gets or creates sequence number information for the given querier.
References mServerSeqNos.
Referenced by generateServerQueryEvents().
References mObjectSeqNos.
Referenced by generateObjectQueryEvents().
void Sirikata::LibproxProximity::getServersForAggregateQueryUpdate | ( | ServerSet * | servers_out | ) | [private] |
References mNeedServerQueryUpdate, and mServerSetMutex.
Referenced by sendQueryRequests().
void Sirikata::LibproxProximity::handleCheckObjectClassForHandlers | ( | const ObjectReference & | objid, |
bool | is_static, | ||
ProxQueryHandlerData | handlers[NUM_OBJECT_CLASSES] | ||
) | [private] |
void Sirikata::LibproxProximity::handleConnectedServer | ( | ServerID | server | ) | [private, virtual] |
Reimplemented from Sirikata::LibproxProximityBase.
References mNeedServerQueryUpdate, mServerSetMutex, and mServersQueried.
void Sirikata::LibproxProximity::handleDisconnectedObject | ( | const UUID & | object | ) | [private] |
References handleRemoveObjectQuery().
Referenced by sessionClosed().
void Sirikata::LibproxProximity::handleDisconnectedServer | ( | ServerID | server | ) | [private, virtual] |
void Sirikata::LibproxProximity::handleObjectProximityMessage | ( | const UUID & | objid, |
void * | buffer, | ||
uint32 | length | ||
) | [private] |
References Sirikata::LocationService::bounds(), Sirikata::Logging::error, Sirikata::AggregateBoundingInfo::fullBounds(), Sirikata::LocationService::location(), LOG_INVALID_MESSAGE_BUFFER, Sirikata::Proximity::mLocService, Sirikata::LibproxProximityBase::mStats, Sirikata::LibproxProximityBase::Stats::objectReceivedBytes, Sirikata::LibproxProximityBase::Stats::objectReceivedMessages, and updateQuery().
Referenced by newSession().
void Sirikata::LibproxProximity::handleRemoveObjectQuery | ( | const UUID & | object, |
bool | notify_main_thread | ||
) | [private] |
References eraseSeqNoInfo(), Sirikata::LibproxProximityBase::handleRemoveAllObjectLocSubscription(), Sirikata::Context::mainStrand, Sirikata::Proximity::mContext, mInvertedObjectQueries, mObjectQueries, mObjectQueriesFirstIteration, mObjectQueryHandler, Sirikata::LibproxProximityBase::NUM_OBJECT_CLASSES, and Sirikata::Network::IOStrand::post().
Referenced by handleDisconnectedObject(), and removeQuery().
void Sirikata::LibproxProximity::handleRemoveServerQuery | ( | const ServerID & | server | ) | [private] |
References Sirikata::Logging::debug, eraseSeqNoInfo(), Sirikata::LibproxProximityBase::handleRemoveAllServerLocSubscription(), Sirikata::Context::mainStrand, Sirikata::Proximity::mContext, mInvertedServerQueries, mServerQueries, mServerQueryHandler, Sirikata::LibproxProximityBase::NUM_OBJECT_CLASSES, Sirikata::Network::IOStrand::post(), and PROXLOG.
Referenced by handleDisconnectedServer(), and removeQuery().
bool Sirikata::LibproxProximity::handlerShouldHandleObject | ( | bool | is_static_handler, |
bool | is_global_handler, | ||
const ObjectReference & | obj_id, | ||
bool | local, | ||
bool | aggregate, | ||
const TimedMotionVector3f & | pos, | ||
const BoundingSphere3f & | region, | ||
float | maxSize | ||
) | [private] |
void Sirikata::LibproxProximity::handleUpdateObjectQuery | ( | const UUID & | object, |
const TimedMotionVector3f & | loc, | ||
const BoundingSphere3f & | bounds, | ||
const SolidAngle & | angle, | ||
uint32 | max_results, | ||
SeqNoPtr | seqno | ||
) | [private] |
References Sirikata::SolidAngle::asFloat(), Sirikata::Logging::detailed, Sirikata::LibproxProximity::ProxQueryHandlerData::handler, mDistanceQueryDistance, Sirikata::SolidAngle::Min, mInvertedObjectQueries, mObjectDistance, mObjectQueries, mObjectQueriesFirstIteration, mObjectQueryHandler, mObjectSeqNos, Sirikata::LibproxProximityBase::NUM_OBJECT_CLASSES, PROXLOG, and Sirikata::JS::JSPresence::toString().
Referenced by updateQuery().
void Sirikata::LibproxProximity::handleUpdateServerQuery | ( | const ServerID & | server, |
const TimedMotionVector3f & | loc, | ||
const BoundingSphere3f & | bounds, | ||
const SolidAngle & | angle, | ||
uint32 | max_results | ||
) | [private] |
References Sirikata::SolidAngle::asFloat(), Sirikata::Logging::debug, Sirikata::LibproxProximity::ProxQueryHandlerData::handler, mDistanceQueryDistance, Sirikata::SolidAngle::Min, mInvertedServerQueries, mServerDistance, mServerQueries, mServerQueryHandler, Sirikata::LibproxProximityBase::NUM_OBJECT_CLASSES, Sirikata::LibproxProximityBase::ObjectClassToString(), Sirikata::TimedMotionVector< MotionVectorType >::position(), PROXLOG, Sirikata::TimedMotionVector< MotionVectorType >::updateTime(), and Sirikata::TimedMotionVector< MotionVectorType >::velocity().
Referenced by updateQuery().
void Sirikata::LibproxProximity::localBoundsUpdated | ( | const UUID & | uuid, |
bool | agg, | ||
const AggregateBoundingInfo & | newval | ||
) | [virtual] |
Reimplemented from Sirikata::LibproxProximityBase.
References Sirikata::AggregateBoundingInfo::fullBounds(), Sirikata::LocationService::location(), Sirikata::Proximity::mLocService, and updateQuery().
void Sirikata::LibproxProximity::localLocationUpdated | ( | const UUID & | uuid, |
bool | agg, | ||
const TimedMotionVector3f & | newval | ||
) | [virtual] |
Reimplemented from Sirikata::LocationServiceListener.
References Sirikata::LocationService::bounds(), Sirikata::LibproxProximityBase::checkObjectClass(), Sirikata::AggregateBoundingInfo::fullBounds(), Sirikata::Proximity::mLocService, Sirikata::LibproxProximityBase::mSeparateDynamicObjects, and updateQuery().
void Sirikata::LibproxProximity::localObjectRemoved | ( | const UUID & | uuid, |
bool | agg | ||
) | [virtual] |
Reimplemented from Sirikata::LibproxProximityBase.
References Sirikata::Proximity::mProxStrand, Sirikata::Network::IOStrand::post(), and Sirikata::LibproxProximityBase::removeStaticObjectTimeout().
std::string Sirikata::LibproxProximity::migrationClientTag | ( | ) | [virtual] |
The tag used to uniquely identify this component.
Implements Sirikata::Proximity.
void Sirikata::LibproxProximity::newSession | ( | ObjectSession * | session | ) | [virtual] |
Reimplemented from Sirikata::Proximity.
References Sirikata::SST::Stream< EndPointType >::connection(), Sirikata::ObjectReference::getAsUUID(), Sirikata::ObjectSession::getStream(), handleObjectProximityMessage(), Sirikata::SpaceObjectReference::object(), OBJECT_PORT_PROXIMITY, Sirikata::SST::Connection< EndPointType >::registerReadDatagramCallback(), and Sirikata::SST::Connection< EndPointType >::remoteEndPoint().
uint32 Sirikata::LibproxProximity::numServersQueried | ( | ) | [private] |
References mServerSetMutex, and mServersQueried.
Referenced by commandProperties().
int32 Sirikata::LibproxProximity::objectQueries | ( | ) | const [private, virtual] |
Reimplemented from Sirikata::Proximity.
References mObjectQueries, and Sirikata::LibproxProximityBase::OBJECT_CLASS_STATIC.
void Sirikata::LibproxProximity::onPintoServerLocUpdate | ( | const LocUpdate & | update | ) | [virtual] |
Implements Sirikata::LibproxProximityBase.
void Sirikata::LibproxProximity::onPintoServerResult | ( | const Sirikata::Protocol::Prox::ProximityUpdate & | update | ) | [virtual] |
bool Sirikata::LibproxProximity::parseHandlerName | ( | const String & | name, |
ProxQueryHandlerData ** | handlers_out, | ||
ObjectClass * | class_out | ||
) | [private] |
void Sirikata::LibproxProximity::poll | ( | ) | [private, virtual] |
Override this method to specify the work to be done when polling.
Reimplemented from Sirikata::Proximity.
References mObjectResults, mObjectResultsToSend, mServerResults, mServerResultsToSend, Sirikata::LibproxProximityBase::sendObjectResult(), sendQueryRequests(), Sirikata::LibproxProximityBase::sendServerMessage(), and Sirikata::ThreadSafeQueue< T >::swap().
void Sirikata::LibproxProximity::queryHasEvents | ( | Query * | query | ) |
References generateObjectQueryEvents(), generateServerQueryEvents(), Sirikata::LibproxProximity::ProxQueryHandlerData::handler, Sirikata::LibproxProximityBase::mQueryHasEventsNotRentrant, mServerQueryHandler, Sirikata::LibproxProximityBase::OBJECT_CLASS_DYNAMIC, and Sirikata::LibproxProximityBase::OBJECT_CLASS_STATIC.
void Sirikata::LibproxProximity::rebuildHandler | ( | ObjectClass | objtype | ) | [private] |
References mObjectQueryHandler, mServerQueryHandler, and rebuildHandlerType().
void Sirikata::LibproxProximity::rebuildHandlerType | ( | ProxQueryHandlerData * | handler, |
ObjectClass | objtype | ||
) | [private] |
References Sirikata::LibproxProximity::ProxQueryHandlerData::handler.
Referenced by commandForceRebuild(), and rebuildHandler().
void Sirikata::LibproxProximity::receiveMessage | ( | Message * | msg | ) | [virtual] |
Reimplemented from Sirikata::Proximity.
References Sirikata::LocationService::addReplicaObject(), Sirikata::Message::dest_port(), Sirikata::Message::id(), Sirikata::SolidAngle::Max, Sirikata::Proximity::mLocService, mServerQueryResults, Sirikata::parsePBJMessage(), Sirikata::Message::payload(), PROXLOG, removeQuery(), Sirikata::LocationService::removeReplicaObject(), SERVER_PORT_PROX, Sirikata::LibproxProximityBase::serverMessageReceived(), Sirikata::Message::source_server(), updateQuery(), and Sirikata::Logging::warn.
void Sirikata::LibproxProximity::receiveMigrationData | ( | const UUID & | obj, |
ServerID | source_server, | ||
ServerID | dest_server, | ||
const std::string & | data | ||
) | [virtual] |
Receive data for the migration of obj from source_server to dest_server.
Implements Sirikata::Proximity.
References addQuery(), Sirikata::Logging::error, and LOG_INVALID_MESSAGE.
void Sirikata::LibproxProximity::recomputeAggregateQueryBounds | ( | ) | [private] |
References Sirikata::LibproxProximityBase::aggregateBBoxes(), Sirikata::AggregateBoundingInfo::centerBoundsRadius, Sirikata::AggregateBoundingInfo::centerOffset, Sirikata::Logging::detailed, Sirikata::SpaceContext::id(), Sirikata::Proximity::mContext, Sirikata::Proximity::mCSeg, Sirikata::AggregateBoundingInfo::mergeIn(), mLastAggregateQuerierBounds, mObjectQueries, Sirikata::LibproxProximityBase::OBJECT_CLASS_STATIC, PROXLOG, Sirikata::CoordinateSegmentation::serverRegion(), Sirikata::Context::simTime(), and updateAggregateQuery().
void Sirikata::LibproxProximity::removeQuery | ( | ServerID | sid | ) | [private] |
void Sirikata::LibproxProximity::removeQuery | ( | UUID | obj | ) | [virtual] |
Implements Sirikata::Proximity.
References Sirikata::Logging::debug, handleRemoveObjectQuery(), Sirikata::SolidAngle::Max, mMaxMaxCount, mMinObjectQueryAngle, mObjectQueryAngles, mObjectQueryMaxCounts, Sirikata::Proximity::mProxStrand, obj, Sirikata::Network::IOStrand::post(), PROXLOG, and updateAggregateQuery().
Referenced by generateMigrationData(), and receiveMessage().
void Sirikata::LibproxProximity::replicaLocationUpdated | ( | const UUID & | uuid, |
const TimedMotionVector3f & | newval | ||
) | [virtual] |
Reimplemented from Sirikata::LocationServiceListener.
References Sirikata::LibproxProximityBase::checkObjectClass(), and Sirikata::LibproxProximityBase::mSeparateDynamicObjects.
void Sirikata::LibproxProximity::replicaObjectRemoved | ( | const UUID & | uuid | ) | [virtual] |
Reimplemented from Sirikata::LocationServiceListener.
References Sirikata::Proximity::mProxStrand, Sirikata::Network::IOStrand::post(), and Sirikata::LibproxProximityBase::removeStaticObjectTimeout().
void Sirikata::LibproxProximity::sendQueryRequests | ( | ) | [private] |
References addServerForAggregateQueryUpdate(), Sirikata::SolidAngle::asFloat(), Sirikata::AggregateBoundingInfo::fullBounds(), getServersForAggregateQueryUpdate(), Sirikata::SpaceContext::id(), Sirikata::Proximity::mContext, mLastAggregateQuerierBounds, mMaxMaxCount, mMinObjectQueryAngle, Sirikata::TimedMotionVector< MotionVectorType >::position(), Sirikata::LibproxProximityBase::sendServerMessage(), Sirikata::serializePBJMessage(), SERVER_PORT_PROX, Sirikata::TimedMotionVector< MotionVectorType >::updateTime(), and Sirikata::TimedMotionVector< MotionVectorType >::velocity().
Referenced by poll().
int32 Sirikata::LibproxProximity::serverQueries | ( | ) | const [private, virtual] |
Reimplemented from Sirikata::Proximity.
References mServerQueries, and Sirikata::LibproxProximityBase::OBJECT_CLASS_STATIC.
void Sirikata::LibproxProximity::sessionClosed | ( | ObjectSession * | session | ) | [virtual] |
void Sirikata::LibproxProximity::start | ( | ) | [virtual] |
Start polling this service on this strand at the given maximum rate.
Reimplemented from Sirikata::LibproxProximityBase.
References Sirikata::Context::add(), Sirikata::Proximity::mContext, mDynamicRebuilderPoller, mObjectHandlerPoller, mServerHandlerPoller, mServerQueryBoundsPoller, and mStaticRebuilderPoller.
void Sirikata::LibproxProximity::tickQueryHandler | ( | ProxQueryHandlerData | qh[NUM_OBJECT_CLASSES] | ) | [private] |
void Sirikata::LibproxProximity::trySwapHandlers | ( | bool | is_local, |
const ObjectReference & | objid, | ||
bool | is_static | ||
) | [private, virtual] |
Implements Sirikata::LibproxProximityBase.
References handleCheckObjectClassForHandlers(), mObjectQueryHandler, and mServerQueryHandler.
void Sirikata::LibproxProximity::updateAggregateQuery | ( | ) | [private] |
References addAllServersForUpdate(), Sirikata::SolidAngle::asFloat(), Sirikata::Logging::debug, mMaxMaxCount, mMinObjectQueryAngle, Sirikata::LibproxProximityBase::mServerQuerier, PROXLOG, and Sirikata::PintoServerQuerier::updateQuery().
Referenced by recomputeAggregateQueryBounds(), removeQuery(), and updateQuery().
void Sirikata::LibproxProximity::updateQuery | ( | UUID | obj, |
const TimedMotionVector3f & | loc, | ||
const BoundingSphere3f & | bounds, | ||
SolidAngle | sa, | ||
uint32 | max_results | ||
) | [private] |
References Sirikata::ObjectSession::getSeqNoPtr(), Sirikata::ObjectSessionManager::getSession(), handleUpdateObjectQuery(), Sirikata::Proximity::mContext, mMaxMaxCount, mMinObjectQueryAngle, mObjectQueryAngles, mObjectQueryMaxCounts, Sirikata::Proximity::mProxStrand, obj, Sirikata::SpaceContext::objectSessionManager(), Sirikata::Network::IOStrand::post(), and updateAggregateQuery().
void Sirikata::LibproxProximity::updateQuery | ( | ServerID | sid, |
const TimedMotionVector3f & | loc, | ||
const BoundingSphere3f & | bounds, | ||
const SolidAngle & | sa, | ||
uint32 | max_results | ||
) | [private] |
References handleUpdateServerQuery(), Sirikata::Proximity::mProxStrand, and Sirikata::Network::IOStrand::post().
Referenced by addQuery(), handleObjectProximityMessage(), localBoundsUpdated(), localLocationUpdated(), and receiveMessage().
float32 Sirikata::LibproxProximity::mDistanceQueryDistance [private] |
Referenced by commandProperties(), handleUpdateObjectQuery(), handleUpdateServerQuery(), and LibproxProximity().
Referenced by start().
Referenced by generateObjectQueryEvents(), handleRemoveObjectQuery(), and handleUpdateObjectQuery().
Referenced by generateServerQueryEvents(), handleRemoveServerQuery(), and handleUpdateServerQuery().
Referenced by recomputeAggregateQueryBounds(), and sendQueryRequests().
uint32 Sirikata::LibproxProximity::mMaxMaxCount [private] |
Referenced by commandProperties(), removeQuery(), sendQueryRequests(), updateAggregateQuery(), and updateQuery().
Referenced by commandProperties(), removeQuery(), sendQueryRequests(), updateAggregateQuery(), and updateQuery().
bool Sirikata::LibproxProximity::mObjectDistance [private] |
Referenced by commandProperties(), handleUpdateObjectQuery(), and LibproxProximity().
Referenced by start().
ObjectQueryMap Sirikata::LibproxProximity::mObjectQueries[NUM_OBJECT_CLASSES] [private] |
Referenced by generateObjectQueryEvents(), handleRemoveObjectQuery(), handleUpdateObjectQuery(), and tickQueryHandler().
Referenced by generateMigrationData(), removeQuery(), and updateQuery().
ProxQueryHandlerData Sirikata::LibproxProximity::mObjectQueryHandler[NUM_OBJECT_CLASSES] [private] |
Referenced by generateMigrationData(), removeQuery(), and updateQuery().
Sirikata::ThreadSafeQueue<Sirikata::Protocol::Object::ObjectMessage*> Sirikata::LibproxProximity::mObjectResults [private] |
Referenced by commandProperties(), generateObjectQueryEvents(), and poll().
std::deque<Sirikata::Protocol::Object::ObjectMessage*> Sirikata::LibproxProximity::mObjectResultsToSend [private] |
Referenced by commandProperties(), and poll().
Referenced by eraseSeqNoInfo(), getSeqNoInfo(), and handleUpdateObjectQuery().
bool Sirikata::LibproxProximity::mServerDistance [private] |
Referenced by commandProperties(), handleUpdateServerQuery(), and LibproxProximity().
Referenced by start().
ServerQueryMap Sirikata::LibproxProximity::mServerQueries[NUM_OBJECT_CLASSES] [private] |
Referenced by commandListQueriers(), commandProperties(), handleRemoveServerQuery(), handleUpdateServerQuery(), and serverQueries().
Referenced by start().
ProxQueryHandlerData Sirikata::LibproxProximity::mServerQueryHandler[NUM_OBJECT_CLASSES] [private] |
Referenced by handleDisconnectedServer(), and receiveMessage().
Referenced by commandProperties(), generateServerQueryEvents(), and poll().
std::deque<Message*> Sirikata::LibproxProximity::mServerResultsToSend [private] |
Referenced by commandProperties(), and poll().
Referenced by eraseSeqNoInfo(), and getOrCreateSeqNoInfo().
boost::mutex Sirikata::LibproxProximity::mServerSetMutex [private] |
Referenced by addAllServersForUpdate(), handleConnectedServer(), numServersQueried(), and onPintoServerResult().
Referenced by start().