Sirikata
|
Implementation of Proximity using manual traversal of the object tree. More...
#include <LibproxManualProximity.hpp>
Classes | |
struct | ProxQueryHandlerData |
struct | ReplicatedIndexQueryHandler |
struct | ReplicatedServerData |
Public Member Functions | |
LibproxManualProximity (SpaceContext *ctx, LocationService *locservice, CoordinateSegmentation *cseg, SpaceNetwork *net, AggregateManager *aggmgr) | |
~LibproxManualProximity () | |
virtual void | start () |
Start polling this service on this strand at the given maximum rate. | |
virtual void | stop () |
Stop scheduling this service. | |
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 | poll () |
Override this method to specify the work to be done when polling. | |
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 | replicaObjectRemoved (const UUID &uuid) |
virtual void | replicaLocationUpdated (const UUID &uuid, const TimedMotionVector3f &newval) |
virtual void | onLocationUpdateFromServer (const ServerID sid, const Sirikata::Protocol::Loc::LocationUpdate &update) |
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 | onObjectHostSession (const OHDP::NodeID &id, ObjectHostSessionPtr oh_sess) |
virtual void | onObjectHostSessionEnded (const OHDP::NodeID &id) |
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 (ProxQuery *query) |
Private Types | |
typedef Prox::ManualQueryHandler < ObjectProxSimulationTraits > | ProxQueryHandler |
typedef std::tr1::shared_ptr < ProxQueryHandler > | ProxQueryHandlerPtr |
typedef Prox::Aggregator < ObjectProxSimulationTraits > | ProxAggregator |
typedef Prox::ManualQuery < ObjectProxSimulationTraits > | ProxQuery |
typedef Prox::QueryEvent < ObjectProxSimulationTraits > | ProxQueryEvent |
typedef Prox::LocationServiceCache < ObjectProxSimulationTraits > | ProxLocCache |
typedef std::pair < OHDP::NodeID, Sirikata::Protocol::Object::ObjectMessage * > | OHResult |
typedef std::tr1::unordered_set < ObjectReference, ObjectReference::Hasher > | ObjectIDSet |
typedef std::tr1::unordered_set < OHDP::NodeID, OHDP::NodeID::Hasher > | OHQuerierSet |
typedef Pinto::Manual::ReplicatedClientWithID < ServerID > | ReplicatedClient |
typedef ReplicatedClient::Parent | ReplicatedClientParent |
typedef std::tr1::shared_ptr < ReplicatedClient > | ReplicatedClientPtr |
typedef std::tr1::unordered_map < ProxIndexID, ReplicatedIndexQueryHandler > | ReplicatedIndexQueryHandlerMap |
typedef std::tr1::unordered_map < ServerID, ReplicatedServerData > | ReplicatedServerDataMap |
typedef std::pair< ServerID, ProxIndexID > | NodeProxIndexID |
typedef std::tr1::unordered_map < ProxIndexID, NodeProxIndexID > | IndexToServerMap |
typedef std::tr1::unordered_map < ProxAggregator *, NodeProxIndexID > | InverseReplicatedIndexQueryHandlerMap |
typedef std::tr1::unordered_map < ProxIndexID, ProxQuery * > | IndexToQueryMap |
typedef std::tr1::unordered_map < ServerID, IndexToQueryMap > | ServerToIndexToQueryMap |
typedef std::tr1::unordered_map < OHDP::NodeID, ServerToIndexToQueryMap, OHDP::NodeID::Hasher > | OHQueryToServerToIndexToQueryMap |
typedef std::tr1::tuple < OHDP::NodeID, ServerID, ProxIndexID > | OHRemoteQueryID |
typedef std::tr1::unordered_map < ProxQuery *, OHRemoteQueryID > | InvertedOHRemoteQueryMap |
typedef std::tr1::unordered_map < OHDP::NodeID, ProxQuery *, OHDP::NodeID::Hasher > | OHQueryMap |
typedef std::tr1::unordered_map < ProxQuery *, OHDP::NodeID > | InvertedOHQueryMap |
typedef std::tr1::unordered_map < OHDP::NodeID, SeqNoPtr, OHDP::NodeID::Hasher > | OHSeqNoInfoMap |
typedef std::tr1::unordered_map < ServerID, ProxQuery * > | ServerQueryMap |
typedef std::tr1::unordered_map < ProxQuery *, ServerID > | InvertedServerQueryMap |
typedef std::tr1::unordered_map < ServerID, SeqNoPtr > | ServerSeqNoInfoMap |
Private Member Functions | |
virtual void | sendReplicatedClientProxMessage (ReplicatedClient *client, const ServerID &evt_src_server, const String &msg) |
void | handleUpdateServerQueryResultsToLocService (ServerID sid, const Sirikata::Protocol::Prox::ProximityResults &results) |
virtual int32 | objectHostQueries () const |
virtual int32 | serverQueries () const |
void | handleObjectHostSubstream (int success, OHDPSST::Stream::Ptr substream, SeqNoPtr seqNo) |
void | updateServerQuery (ServerID sid, const String &raw_query) |
void | updateServerQueryResults (ServerID sid, const Sirikata::Protocol::Prox::ProximityResults &results) |
void | tickQueryHandlers () |
virtual void | onCreatedReplicatedIndex (ReplicatedClient *client, const ServerID &evt_src_server, ProxIndexID proxid, ReplicatedLocationServiceCachePtr loccache, ServerID sid, bool dynamic_objects) |
virtual void | onDestroyedReplicatedIndex (ReplicatedClient *client, const ServerID &evt_src_server, ProxIndexID proxid) |
virtual void | handleForcedDisconnection (ServerID server) |
void | handleOnPintoServerResult (const Sirikata::Protocol::Prox::ProximityUpdate &update) |
void | handleOnPintoServerLocUpdate (const CopyableLocUpdate &update) |
void | handleUpdateServerQuery (ServerID sid, const String &raw_query) |
void | handleUpdateServerQueryResultsToReplicatedTrees (ServerID sid, const Sirikata::Protocol::Prox::ProximityResults &results) |
void | handleUpdateServerQueryResultsToRetryRequests (ServerID sid, const Sirikata::Protocol::Prox::ProximityResults &results) |
void | registerServerQuery (const ServerID &querier) |
void | unregisterServerQuery (const ServerID &querier) |
SeqNoPtr | getOrCreateSeqNoInfo (const ServerID server_id) |
void | eraseSeqNoInfo (const ServerID server_id) |
void | handleObjectHostProxMessage (const OHDP::NodeID &id, const String &data, SeqNoPtr seqNo) |
void | handleObjectHostSessionEnded (const OHDP::NodeID &id) |
void | destroyQuery (const OHDP::NodeID &id) |
void | registerOHQueryWithServerHandlers (const OHDP::NodeID &querier, ServerID queried_node) |
void | unregisterOHQueryWithServerHandlers (const OHDP::NodeID &querier, ServerID queried_node) |
void | registerOHQueryWithServerIndexHandler (const OHDP::NodeID &querier, ServerID queried_node, ProxIndexID queried_index) |
void | unregisterOHQueryWithServerIndexHandler (const OHDP::NodeID &querier, ServerID queried_node, ProxIndexID queried_index) |
bool | handlerShouldHandleObject (bool is_static_handler, bool is_global_handler, const ObjectReference &obj_id, bool is_local, bool is_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 | getSeqNoInfo (const OHDP::NodeID &node) |
void | eraseSeqNoInfo (const OHDP::NodeID &node) |
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, ProxQueryHandler **handler_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 | |
std::deque< Message * > | mServerResultsToSend |
std::deque< OHResult > | mOHResultsToSend |
ReplicatedServerDataMap | mReplicatedServerDataMap |
IndexToServerMap | mLocalToRemoteIndexMap |
InverseReplicatedIndexQueryHandlerMap | mAggregatorToIndexMap |
OHQueryToServerToIndexToQueryMap | mOHRemoteQueries |
InvertedOHRemoteQueryMap | mInvertedOHRemoteQueries |
OHQueryMap | mOHQueries [NUM_OBJECT_CLASSES] |
InvertedOHQueryMap | mInvertedOHQueries |
Sirikata::ThreadSafeQueue < OHResult > | mOHResults |
OHSeqNoInfoMap | mOHSeqNos |
ManualReplicatedRequestManager | mOHRequestsManager |
ServerQueryMap | mServerQueries [NUM_OBJECT_CLASSES] |
InvertedServerQueryMap | mInvertedServerQueries |
Sirikata::ThreadSafeQueue < Message * > | mServerResults |
ServerSeqNoInfoMap | mServerSeqNos |
ProxQueryHandlerData | mLocalQueryHandler [NUM_OBJECT_CLASSES] |
PollerService | mLocalHandlerPoller |
Implementation of Proximity using manual traversal of the object tree.
The Proximity library provides the tree and a simple interface to manage cuts and the client manages the cut.
typedef std::tr1::unordered_map<ProxIndexID, ProxQuery*> Sirikata::LibproxManualProximity::IndexToQueryMap [private] |
typedef std::tr1::unordered_map<ProxIndexID, NodeProxIndexID> Sirikata::LibproxManualProximity::IndexToServerMap [private] |
typedef std::tr1::unordered_map<ProxAggregator*, NodeProxIndexID> Sirikata::LibproxManualProximity::InverseReplicatedIndexQueryHandlerMap [private] |
typedef std::tr1::unordered_map<ProxQuery*, OHDP::NodeID> Sirikata::LibproxManualProximity::InvertedOHQueryMap [private] |
typedef std::tr1::unordered_map<ProxQuery*, OHRemoteQueryID> Sirikata::LibproxManualProximity::InvertedOHRemoteQueryMap [private] |
typedef std::tr1::unordered_map<ProxQuery*, ServerID> Sirikata::LibproxManualProximity::InvertedServerQueryMap [private] |
typedef std::pair<ServerID, ProxIndexID> Sirikata::LibproxManualProximity::NodeProxIndexID [private] |
typedef std::tr1::unordered_set<ObjectReference, ObjectReference::Hasher> Sirikata::LibproxManualProximity::ObjectIDSet [private] |
typedef std::tr1::unordered_set<OHDP::NodeID, OHDP::NodeID::Hasher> Sirikata::LibproxManualProximity::OHQuerierSet [private] |
typedef std::tr1::unordered_map<OHDP::NodeID, ProxQuery*, OHDP::NodeID::Hasher> Sirikata::LibproxManualProximity::OHQueryMap [private] |
typedef std::tr1::unordered_map<OHDP::NodeID, ServerToIndexToQueryMap, OHDP::NodeID::Hasher> Sirikata::LibproxManualProximity::OHQueryToServerToIndexToQueryMap [private] |
typedef std::tr1::tuple<OHDP::NodeID, ServerID, ProxIndexID> Sirikata::LibproxManualProximity::OHRemoteQueryID [private] |
typedef std::pair<OHDP::NodeID, Sirikata::Protocol::Object::ObjectMessage*> Sirikata::LibproxManualProximity::OHResult [private] |
typedef std::tr1::unordered_map<OHDP::NodeID, SeqNoPtr, OHDP::NodeID::Hasher> Sirikata::LibproxManualProximity::OHSeqNoInfoMap [private] |
typedef Prox::Aggregator<ObjectProxSimulationTraits> Sirikata::LibproxManualProximity::ProxAggregator [private] |
typedef Prox::LocationServiceCache<ObjectProxSimulationTraits> Sirikata::LibproxManualProximity::ProxLocCache [private] |
typedef Prox::ManualQuery<ObjectProxSimulationTraits> Sirikata::LibproxManualProximity::ProxQuery [private] |
typedef Prox::QueryEvent<ObjectProxSimulationTraits> Sirikata::LibproxManualProximity::ProxQueryEvent [private] |
typedef Prox::ManualQueryHandler<ObjectProxSimulationTraits> Sirikata::LibproxManualProximity::ProxQueryHandler [private] |
typedef std::tr1::shared_ptr<ProxQueryHandler> Sirikata::LibproxManualProximity::ProxQueryHandlerPtr [private] |
typedef Pinto::Manual::ReplicatedClientWithID<ServerID> Sirikata::LibproxManualProximity::ReplicatedClient [private] |
typedef ReplicatedClient::Parent Sirikata::LibproxManualProximity::ReplicatedClientParent [private] |
typedef std::tr1::shared_ptr<ReplicatedClient> Sirikata::LibproxManualProximity::ReplicatedClientPtr [private] |
typedef std::tr1::unordered_map<ProxIndexID, ReplicatedIndexQueryHandler> Sirikata::LibproxManualProximity::ReplicatedIndexQueryHandlerMap [private] |
typedef std::tr1::unordered_map<ServerID, ReplicatedServerData> Sirikata::LibproxManualProximity::ReplicatedServerDataMap [private] |
typedef std::tr1::unordered_map<ServerID, ProxQuery*> Sirikata::LibproxManualProximity::ServerQueryMap [private] |
typedef std::tr1::unordered_map<ServerID, SeqNoPtr> Sirikata::LibproxManualProximity::ServerSeqNoInfoMap [private] |
typedef std::tr1::unordered_map<ServerID, IndexToQueryMap> Sirikata::LibproxManualProximity::ServerToIndexToQueryMap [private] |
Sirikata::LibproxManualProximity::LibproxManualProximity | ( | SpaceContext * | ctx, |
LocationService * | locservice, | ||
CoordinateSegmentation * | cseg, | ||
SpaceNetwork * | net, | ||
AggregateManager * | aggmgr | ||
) |
References Sirikata::LibproxManualProximity::ProxQueryHandlerData::handler, handlerShouldHandleObject(), mLocalQueryHandler, Sirikata::LibproxProximityBase::mLocCache, Sirikata::LibproxProximityBase::mNumQueryHandlers, Sirikata::LibproxProximityBase::mSeparateDynamicObjects, Sirikata::LibproxProximityBase::NUM_OBJECT_CLASSES, and Sirikata::LibproxProximityBase::OBJECT_CLASS_STATIC.
Sirikata::LibproxManualProximity::~LibproxManualProximity | ( | ) |
void Sirikata::LibproxManualProximity::addQuery | ( | UUID | obj, |
SolidAngle | sa, | ||
uint32 | max_results | ||
) | [virtual] |
Implements Sirikata::Proximity.
void Sirikata::LibproxManualProximity::addQuery | ( | UUID | obj, |
const String & | params | ||
) | [virtual] |
Implements Sirikata::Proximity.
void Sirikata::LibproxManualProximity::aggregateBoundsUpdated | ( | ProxAggregator * | handler, |
const ObjectReference & | objid, | ||
const Vector3f & | bnds_center, | ||
const float32 | bnds_center_radius, | ||
const float32 | max_obj_size | ||
) | [virtual] |
References mLocalQueryHandler, and Sirikata::LibproxProximityBase::OBJECT_CLASS_STATIC.
void Sirikata::LibproxManualProximity::aggregateChildAdded | ( | ProxAggregator * | handler, |
const ObjectReference & | objid, | ||
const ObjectReference & | child, | ||
const Vector3f & | bnds_center, | ||
const float32 | bnds_center_radius, | ||
const float32 | max_obj_size | ||
) | [virtual] |
References mLocalQueryHandler, and Sirikata::LibproxProximityBase::OBJECT_CLASS_STATIC.
void Sirikata::LibproxManualProximity::aggregateChildRemoved | ( | ProxAggregator * | handler, |
const ObjectReference & | objid, | ||
const ObjectReference & | child, | ||
const Vector3f & | bnds_center, | ||
const float32 | bnds_center_radius, | ||
const float32 | max_obj_size | ||
) | [virtual] |
References mLocalQueryHandler, and Sirikata::LibproxProximityBase::OBJECT_CLASS_STATIC.
void Sirikata::LibproxManualProximity::aggregateCreated | ( | ProxAggregator * | handler, |
const ObjectReference & | objid | ||
) | [virtual] |
References mLocalQueryHandler, and Sirikata::LibproxProximityBase::OBJECT_CLASS_STATIC.
void Sirikata::LibproxManualProximity::aggregateDestroyed | ( | ProxAggregator * | handler, |
const ObjectReference & | objid | ||
) | [virtual] |
void Sirikata::LibproxManualProximity::aggregateObserved | ( | ProxAggregator * | handler, |
const ObjectReference & | objid, | ||
uint32 | nobservers, | ||
uint32 | nchildren | ||
) | [virtual] |
void Sirikata::LibproxManualProximity::commandForceRebuild | ( | const Command::Command & | cmd, |
Command::Commander * | cmdr, | ||
Command::CommandID | cmdid | ||
) | [private, virtual] |
Implements Sirikata::LibproxProximityBase.
References Sirikata::Command::EmptyResult(), parseHandlerName(), and Sirikata::Command::Commander::result().
void Sirikata::LibproxManualProximity::commandListHandlers | ( | const Command::Command & | cmd, |
Command::Commander * | cmdr, | ||
Command::CommandID | cmdid | ||
) | [private, virtual] |
Implements Sirikata::LibproxProximityBase.
References Sirikata::Command::EmptyResult(), Sirikata::LibproxManualProximity::ReplicatedServerData::handlers, mLocalQueryHandler, mOHQueries, mReplicatedServerDataMap, mServerQueries, Sirikata::LibproxProximityBase::NUM_OBJECT_CLASSES, Sirikata::LibproxProximityBase::ObjectClassToString(), and Sirikata::Command::Commander::result().
void Sirikata::LibproxManualProximity::commandListNodes | ( | const Command::Command & | cmd, |
Command::Commander * | cmdr, | ||
Command::CommandID | cmdid | ||
) | [private, virtual] |
void Sirikata::LibproxManualProximity::commandListQueriers | ( | const Command::Command & | cmd, |
Command::Commander * | cmdr, | ||
Command::CommandID | cmdid | ||
) | [private, virtual] |
References Sirikata::Command::EmptyResult(), mLocalQueryHandler, mOHQueries, mOHRemoteQueries, mServerQueries, Sirikata::LibproxProximityBase::NUM_OBJECT_CLASSES, Sirikata::LibproxProximityBase::OBJECT_CLASS_STATIC, Sirikata::LibproxProximityBase::ObjectClassToString(), and Sirikata::Command::Commander::result().
void Sirikata::LibproxManualProximity::commandProperties | ( | const Command::Command & | cmd, |
Command::Commander * | cmdr, | ||
Command::CommandID | cmdid | ||
) | [private, virtual] |
Implements Sirikata::LibproxProximityBase.
References Sirikata::Command::EmptyResult(), Sirikata::LibproxManualProximity::ProxQueryHandlerData::handler, mLocalQueryHandler, Sirikata::LibproxProximityBase::mMaxObject, Sirikata::LibproxProximityBase::mMoveToStaticDelay, Sirikata::LibproxProximityBase::mNumQueryHandlers, Sirikata::LibproxProximityBase::mObjectHostProxStreams, Sirikata::LibproxProximityBase::mSeparateDynamicObjects, mServerResultsToSend, objectHostQueries(), Sirikata::Command::Commander::result(), and serverQueries().
void Sirikata::LibproxManualProximity::destroyQuery | ( | const OHDP::NodeID & | id | ) | [private] |
References Sirikata::Logging::detailed, eraseSeqNoInfo(), Sirikata::LibproxProximityBase::handleRemoveAllOHLocSubscription(), Sirikata::SpaceContext::id(), Sirikata::Context::mainStrand, Sirikata::Proximity::mContext, mOHRemoteQueries, Sirikata::Network::IOStrand::post(), PROXLOG, and unregisterOHQueryWithServerHandlers().
Referenced by handleObjectHostProxMessage(), and handleObjectHostSessionEnded().
void Sirikata::LibproxManualProximity::eraseSeqNoInfo | ( | const ServerID | server_id | ) | [private] |
References mServerSeqNos.
Referenced by destroyQuery().
void Sirikata::LibproxManualProximity::eraseSeqNoInfo | ( | const OHDP::NodeID & | node | ) | [private] |
References mOHSeqNos.
std::string Sirikata::LibproxManualProximity::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.
SeqNoPtr Sirikata::LibproxManualProximity::getOrCreateSeqNoInfo | ( | const ServerID | server_id | ) | [private] |
References mServerSeqNos.
Referenced by queryHasEvents().
SeqNoPtr Sirikata::LibproxManualProximity::getSeqNoInfo | ( | const OHDP::NodeID & | node | ) | [private] |
References mOHSeqNos.
Referenced by queryHasEvents().
void Sirikata::LibproxManualProximity::handleCheckObjectClassForHandlers | ( | const ObjectReference & | objid, |
bool | is_static, | ||
ProxQueryHandlerData | handlers[NUM_OBJECT_CLASSES] | ||
) | [private] |
void Sirikata::LibproxManualProximity::handleForcedDisconnection | ( | ServerID | server | ) | [private, virtual] |
References PROXLOG, and Sirikata::Logging::warn.
void Sirikata::LibproxManualProximity::handleObjectHostProxMessage | ( | const OHDP::NodeID & | id, |
const String & | data, | ||
SeqNoPtr | seqNo | ||
) | [private] |
References Sirikata::ManualReplicatedRequestManager::addFailedRefine(), destroyQuery(), Sirikata::Logging::detailed, mLocalQueryHandler, mLocalToRemoteIndexMap, mOHQueries, mOHRemoteQueries, mOHRequestsManager, mOHSeqNos, Sirikata::LibproxProximityBase::NUM_OBJECT_CLASSES, PROXLOG, registerOHQueryWithServerHandlers(), and Sirikata::Logging::warn.
Referenced by handleObjectHostSubstream().
void Sirikata::LibproxManualProximity::handleObjectHostSessionEnded | ( | const OHDP::NodeID & | id | ) | [private] |
References destroyQuery().
Referenced by onObjectHostSessionEnded().
void Sirikata::LibproxManualProximity::handleObjectHostSubstream | ( | int | success, |
OHDPSST::Stream::Ptr | substream, | ||
SeqNoPtr | seqNo | ||
) | [private] |
References Sirikata::LibproxProximityBase::addObjectHostProxStreamInfo(), Sirikata::Logging::detailed, handleObjectHostProxMessage(), Sirikata::Proximity::mProxStrand, PROXLOG, Sirikata::LibproxProximityBase::readFramesFromObjectHostStream(), SST_IMPL_SUCCESS, and Sirikata::Network::IOStrand::wrap().
Referenced by onObjectHostSession().
void Sirikata::LibproxManualProximity::handleOnPintoServerLocUpdate | ( | const CopyableLocUpdate & | update | ) | [private] |
References mReplicatedServerDataMap.
Referenced by onPintoServerLocUpdate().
void Sirikata::LibproxManualProximity::handleOnPintoServerResult | ( | const Sirikata::Protocol::Prox::ProximityUpdate & | update | ) | [private] |
bool Sirikata::LibproxManualProximity::handlerShouldHandleObject | ( | bool | is_static_handler, |
bool | is_global_handler, | ||
const ObjectReference & | obj_id, | ||
bool | is_local, | ||
bool | is_aggregate, | ||
const TimedMotionVector3f & | pos, | ||
const BoundingSphere3f & | region, | ||
float | maxSize | ||
) | [private] |
void Sirikata::LibproxManualProximity::handleUpdateServerQuery | ( | ServerID | sid, |
const String & | raw_query | ||
) | [private] |
References Sirikata::Logging::detailed, mLocalQueryHandler, mServerQueries, Sirikata::LibproxProximityBase::NUM_OBJECT_CLASSES, Sirikata::LibproxProximityBase::ObjectClassToString(), PROXLOG, registerServerQuery(), unregisterServerQuery(), and Sirikata::Logging::warn.
Referenced by updateServerQuery().
void Sirikata::LibproxManualProximity::handleUpdateServerQueryResultsToLocService | ( | ServerID | sid, |
const Sirikata::Protocol::Prox::ProximityResults & | results | ||
) | [private] |
References Sirikata::LocationService::addReplicaObject(), handleUpdateServerQueryResultsToReplicatedTrees(), Sirikata::Proximity::mLocService, Sirikata::Proximity::mProxStrand, Sirikata::Network::IOStrand::post(), and Sirikata::LocationService::removeReplicaObject().
Referenced by updateServerQueryResults().
void Sirikata::LibproxManualProximity::handleUpdateServerQueryResultsToReplicatedTrees | ( | ServerID | sid, |
const Sirikata::Protocol::Prox::ProximityResults & | results | ||
) | [private] |
void Sirikata::LibproxManualProximity::handleUpdateServerQueryResultsToRetryRequests | ( | ServerID | sid, |
const Sirikata::Protocol::Prox::ProximityResults & | results | ||
) | [private] |
void Sirikata::LibproxManualProximity::localLocationUpdated | ( | const UUID & | uuid, |
bool | agg, | ||
const TimedMotionVector3f & | newval | ||
) | [virtual] |
Reimplemented from Sirikata::LocationServiceListener.
References Sirikata::LibproxProximityBase::checkObjectClass(), and Sirikata::LibproxProximityBase::mSeparateDynamicObjects.
void Sirikata::LibproxManualProximity::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::LibproxManualProximity::migrationClientTag | ( | ) | [virtual] |
The tag used to uniquely identify this component.
Implements Sirikata::Proximity.
int32 Sirikata::LibproxManualProximity::objectHostQueries | ( | ) | const [private, virtual] |
Reimplemented from Sirikata::Proximity.
References mOHQueries, and Sirikata::LibproxProximityBase::OBJECT_CLASS_STATIC.
Referenced by commandProperties().
void Sirikata::LibproxManualProximity::onCreatedReplicatedIndex | ( | ReplicatedClient * | client, |
const ServerID & | evt_src_server, | ||
ProxIndexID | proxid, | ||
ReplicatedLocationServiceCachePtr | loccache, | ||
ServerID | sid, | ||
bool | dynamic_objects | ||
) | [private, virtual] |
void Sirikata::LibproxManualProximity::onDestroyedReplicatedIndex | ( | ReplicatedClient * | client, |
const ServerID & | evt_src_server, | ||
ProxIndexID | proxid | ||
) | [private, virtual] |
void Sirikata::LibproxManualProximity::onLocationUpdateFromServer | ( | const ServerID | sid, |
const Sirikata::Protocol::Loc::LocationUpdate & | update | ||
) | [virtual] |
Reimplemented from Sirikata::LocationServiceListener.
References mReplicatedServerDataMap.
void Sirikata::LibproxManualProximity::onObjectHostSession | ( | const OHDP::NodeID & | id, |
ObjectHostSessionPtr | oh_sess | ||
) | [virtual] |
Reimplemented from Sirikata::Proximity.
References handleObjectHostSubstream(), and OBJECT_PORT_PROXIMITY.
void Sirikata::LibproxManualProximity::onObjectHostSessionEnded | ( | const OHDP::NodeID & | id | ) | [virtual] |
Reimplemented from Sirikata::Proximity.
References handleObjectHostSessionEnded(), Sirikata::Proximity::mProxStrand, and Sirikata::Network::IOStrand::post().
void Sirikata::LibproxManualProximity::onPintoServerLocUpdate | ( | const LocUpdate & | update | ) | [virtual] |
Implements Sirikata::LibproxProximityBase.
References handleOnPintoServerLocUpdate(), Sirikata::Proximity::mProxStrand, and Sirikata::Network::IOStrand::post().
void Sirikata::LibproxManualProximity::onPintoServerResult | ( | const Sirikata::Protocol::Prox::ProximityUpdate & | update | ) | [virtual] |
Implements Sirikata::LibproxProximityBase.
References handleOnPintoServerResult(), Sirikata::Proximity::mProxStrand, and Sirikata::Network::IOStrand::post().
bool Sirikata::LibproxManualProximity::parseHandlerName | ( | const String & | name, |
ProxQueryHandler ** | handler_out | ||
) | [private] |
void Sirikata::LibproxManualProximity::poll | ( | ) | [virtual] |
Override this method to specify the work to be done when polling.
Reimplemented from Sirikata::Proximity.
References mOHResults, mOHResultsToSend, mServerResults, mServerResultsToSend, Sirikata::LibproxProximityBase::sendObjectHostResult(), Sirikata::LibproxProximityBase::sendServerMessage(), and Sirikata::ThreadSafeQueue< T >::swap().
void Sirikata::LibproxManualProximity::queryHasEvents | ( | ProxQuery * | query | ) |
References Sirikata::UUID::asUInt32(), Sirikata::AggregateBoundingInfo::centerBoundsRadius, Sirikata::AggregateBoundingInfo::centerOffset, Sirikata::createObjectMessage(), Sirikata::Logging::detailed, Sirikata::Logging::error, Sirikata::ObjectReference::getAsUUID(), Sirikata::GetOptionValue< uint32 >(), getOrCreateSeqNoInfo(), getSeqNoInfo(), Sirikata::LibproxProximityBase::handleAddOHLocSubscriptionWithID(), Sirikata::LibproxProximityBase::handleAddServerLocSubscriptionWithID(), Sirikata::LibproxProximityBase::handleRemoveOHLocSubscriptionWithID(), Sirikata::LibproxProximityBase::handleRemoveServerLocSubscriptionWithID(), Sirikata::SpaceContext::id(), Sirikata::Logging::insane, Sirikata::Context::mainStrand, Sirikata::AggregateBoundingInfo::maxObjectRadius, Sirikata::Proximity::mContext, mInvertedOHQueries, mInvertedOHRemoteQueries, mInvertedServerQueries, mOHResults, Sirikata::Proximity::mProxStrand, Sirikata::LibproxProximityBase::mQueryHasEventsNotRentrant, mServerResults, Sirikata::UUID::null(), Sirikata::ObjectReference::null(), Sirikata::OHDP::NodeID::null(), OBJECT_PORT_PROXIMITY, Sirikata::TimedMotionQuaternion::position(), Sirikata::TimedMotionVector< MotionVectorType >::position(), Sirikata::Network::IOStrand::post(), PROX_MAX_PER_RESULT, PROXLOG, Sirikata::ThreadSafeQueue< T >::push(), registerOHQueryWithServerHandlers(), Sirikata::serializePBJMessage(), SERVER_PORT_PROX, Sirikata::Context::simTime(), unregisterOHQueryWithServerHandlers(), Sirikata::TimedMotionQuaternion::updateTime(), Sirikata::TimedMotionVector< MotionVectorType >::updateTime(), Sirikata::TimedMotionQuaternion::velocity(), and Sirikata::TimedMotionVector< MotionVectorType >::velocity().
void Sirikata::LibproxManualProximity::receiveMessage | ( | Message * | msg | ) | [virtual] |
Reimplemented from Sirikata::Proximity.
References Sirikata::Message::dest_port(), Sirikata::Message::id(), Sirikata::parsePBJMessage(), Sirikata::Message::payload(), PROXLOG, SERVER_PORT_PROX, Sirikata::LibproxProximityBase::serverMessageReceived(), Sirikata::Message::source_server(), updateServerQuery(), updateServerQueryResults(), and Sirikata::Logging::warn.
void Sirikata::LibproxManualProximity::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.
void Sirikata::LibproxManualProximity::registerOHQueryWithServerHandlers | ( | const OHDP::NodeID & | querier, |
ServerID | queried_node | ||
) | [private] |
References Sirikata::Logging::detailed, Sirikata::LibproxManualProximity::ProxQueryHandlerData::handler, Sirikata::LibproxManualProximity::ReplicatedServerData::handlers, Sirikata::SpaceContext::id(), Sirikata::Proximity::mContext, mInvertedOHQueries, mLocalQueryHandler, mOHQueries, mReplicatedServerDataMap, Sirikata::LibproxProximityBase::NUM_OBJECT_CLASSES, PROXLOG, Sirikata::LibproxManualProximity::ReplicatedServerData::queriers, registerOHQueryWithServerIndexHandler(), and Sirikata::Context::simTime().
Referenced by handleObjectHostProxMessage(), and queryHasEvents().
void Sirikata::LibproxManualProximity::registerOHQueryWithServerIndexHandler | ( | const OHDP::NodeID & | querier, |
ServerID | queried_node, | ||
ProxIndexID | queried_index | ||
) | [private] |
void Sirikata::LibproxManualProximity::registerServerQuery | ( | const ServerID & | querier | ) | [private] |
void Sirikata::LibproxManualProximity::removeQuery | ( | UUID | obj | ) | [virtual] |
Implements Sirikata::Proximity.
void Sirikata::LibproxManualProximity::replicaLocationUpdated | ( | const UUID & | uuid, |
const TimedMotionVector3f & | newval | ||
) | [virtual] |
Reimplemented from Sirikata::LocationServiceListener.
void Sirikata::LibproxManualProximity::replicaObjectRemoved | ( | const UUID & | uuid | ) | [virtual] |
Reimplemented from Sirikata::LocationServiceListener.
References Sirikata::Proximity::mProxStrand, Sirikata::Network::IOStrand::post(), and Sirikata::LibproxProximityBase::removeStaticObjectTimeout().
void Sirikata::LibproxManualProximity::sendReplicatedClientProxMessage | ( | ReplicatedClient * | client, |
const ServerID & | evt_src_server, | ||
const String & | msg | ||
) | [private, virtual] |
int32 Sirikata::LibproxManualProximity::serverQueries | ( | ) | const [private, virtual] |
Reimplemented from Sirikata::Proximity.
References mServerQueries, and Sirikata::LibproxProximityBase::OBJECT_CLASS_STATIC.
Referenced by commandProperties().
void Sirikata::LibproxManualProximity::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, mLocalHandlerPoller, and mOHRequestsManager.
void Sirikata::LibproxManualProximity::stop | ( | ) | [virtual] |
Stop scheduling this service.
Note that this does not immediately stop the service, it simply guarantees the service will not be scheduled again. This allows outstanding events to be handled properly.
Reimplemented from Sirikata::LibproxProximityBase.
References mReplicatedServerDataMap.
void Sirikata::LibproxManualProximity::tickQueryHandlers | ( | ) | [private] |
References Sirikata::LibproxManualProximity::ProxQueryHandlerData::additions, Sirikata::LibproxManualProximity::ProxQueryHandlerData::handler, Sirikata::Proximity::mContext, mLocalQueryHandler, mReplicatedServerDataMap, Sirikata::LibproxProximityBase::NUM_OBJECT_CLASSES, Sirikata::LibproxProximityBase::processExpiredStaticObjectTimeouts(), Sirikata::LibproxManualProximity::ProxQueryHandlerData::removals, and Sirikata::Context::simTime().
void Sirikata::LibproxManualProximity::trySwapHandlers | ( | bool | is_local, |
const ObjectReference & | objid, | ||
bool | is_static | ||
) | [private, virtual] |
Implements Sirikata::LibproxProximityBase.
References handleCheckObjectClassForHandlers(), and mLocalQueryHandler.
void Sirikata::LibproxManualProximity::unregisterOHQueryWithServerHandlers | ( | const OHDP::NodeID & | querier, |
ServerID | queried_node | ||
) | [private] |
References Sirikata::Logging::detailed, Sirikata::SpaceContext::id(), Sirikata::Proximity::mContext, mInvertedOHQueries, mLocalQueryHandler, mOHQueries, mReplicatedServerDataMap, Sirikata::LibproxProximityBase::NUM_OBJECT_CLASSES, PROXLOG, and unregisterOHQueryWithServerIndexHandler().
Referenced by destroyQuery(), and queryHasEvents().
void Sirikata::LibproxManualProximity::unregisterOHQueryWithServerIndexHandler | ( | const OHDP::NodeID & | querier, |
ServerID | queried_node, | ||
ProxIndexID | queried_index | ||
) | [private] |
References Sirikata::Logging::detailed, Sirikata::SpaceContext::id(), Sirikata::Proximity::mContext, mInvertedOHRemoteQueries, mOHRemoteQueries, mOHRequestsManager, PROXLOG, and Sirikata::ManualReplicatedRequestManager::removeQuerier().
Referenced by onDestroyedReplicatedIndex(), and unregisterOHQueryWithServerHandlers().
void Sirikata::LibproxManualProximity::unregisterServerQuery | ( | const ServerID & | querier | ) | [private] |
References mInvertedServerQueries, mLocalQueryHandler, mServerQueries, and Sirikata::LibproxProximityBase::NUM_OBJECT_CLASSES.
Referenced by handleUpdateServerQuery(), and ~LibproxManualProximity().
void Sirikata::LibproxManualProximity::updateServerQuery | ( | ServerID | sid, |
const String & | raw_query | ||
) | [private] |
References handleUpdateServerQuery(), Sirikata::Proximity::mProxStrand, and Sirikata::Network::IOStrand::post().
Referenced by receiveMessage().
void Sirikata::LibproxManualProximity::updateServerQueryResults | ( | ServerID | sid, |
const Sirikata::Protocol::Prox::ProximityResults & | results | ||
) | [private] |
InverseReplicatedIndexQueryHandlerMap Sirikata::LibproxManualProximity::mAggregatorToIndexMap [private] |
Referenced by aggregateDestroyed(), aggregateObserved(), and onCreatedReplicatedIndex().
Referenced by queryHasEvents(), registerOHQueryWithServerHandlers(), and unregisterOHQueryWithServerHandlers().
Referenced by queryHasEvents(), registerServerQuery(), and unregisterServerQuery().
Referenced by start().
ProxQueryHandlerData Sirikata::LibproxManualProximity::mLocalQueryHandler[NUM_OBJECT_CLASSES] [private] |
Referenced by aggregateBoundsUpdated(), aggregateChildAdded(), aggregateChildRemoved(), aggregateCreated(), aggregateDestroyed(), aggregateObserved(), commandListHandlers(), commandListQueriers(), commandProperties(), handleObjectHostProxMessage(), handleUpdateServerQuery(), LibproxManualProximity(), parseHandlerName(), registerOHQueryWithServerHandlers(), registerServerQuery(), tickQueryHandlers(), trySwapHandlers(), unregisterOHQueryWithServerHandlers(), unregisterServerQuery(), and ~LibproxManualProximity().
Referenced by handleObjectHostProxMessage(), and onCreatedReplicatedIndex().
OHQueryMap Sirikata::LibproxManualProximity::mOHQueries[NUM_OBJECT_CLASSES] [private] |
Referenced by poll(), and queryHasEvents().
std::deque<OHResult> Sirikata::LibproxManualProximity::mOHResultsToSend [private] |
Referenced by poll().
Referenced by eraseSeqNoInfo(), getSeqNoInfo(), and handleObjectHostProxMessage().
Referenced by aggregateDestroyed(), aggregateObserved(), commandListHandlers(), handleOnPintoServerLocUpdate(), handleOnPintoServerResult(), handleUpdateServerQueryResultsToReplicatedTrees(), onCreatedReplicatedIndex(), onDestroyedReplicatedIndex(), onLocationUpdateFromServer(), parseHandlerName(), registerOHQueryWithServerHandlers(), registerOHQueryWithServerIndexHandler(), stop(), tickQueryHandlers(), unregisterOHQueryWithServerHandlers(), and ~LibproxManualProximity().
ServerQueryMap Sirikata::LibproxManualProximity::mServerQueries[NUM_OBJECT_CLASSES] [private] |
Referenced by poll(), queryHasEvents(), and sendReplicatedClientProxMessage().
std::deque<Message*> Sirikata::LibproxManualProximity::mServerResultsToSend [private] |
Referenced by commandProperties(), and poll().
Referenced by eraseSeqNoInfo(), and getOrCreateSeqNoInfo().