Sirikata
|
Standard location service, which functions entirely based on location updates from objects and other spaces servers. More...
#include <StandardLocationService.hpp>
Classes | |
struct | LocationInfo |
Public Member Functions | |
StandardLocationService (SpaceContext *ctx, LocationUpdatePolicy *update_policy) | |
virtual bool | contains (const UUID &uuid) const |
Indicates whether this location service is tracking the given object. | |
bool | isLocal (const UUID &uuid) const |
bool | isReplica (const UUID &uuid) const |
virtual void | service () |
virtual uint64 | epoch (const UUID &uuid) |
Methods dealing with information requests. | |
virtual TimedMotionVector3f | location (const UUID &uuid) |
virtual Vector3f | currentPosition (const UUID &uuid) |
virtual TimedMotionQuaternion | orientation (const UUID &uuid) |
virtual Quaternion | currentOrientation (const UUID &uuid) |
virtual AggregateBoundingInfo | bounds (const UUID &uuid) |
virtual const String & | mesh (const UUID &uuid) |
virtual const String & | physics (const UUID &uuid) |
virtual void | addLocalObject (const UUID &uuid, const TimedMotionVector3f &loc, const TimedMotionQuaternion &orient, const AggregateBoundingInfo &bounds, const String &mesh, const String &physics, const String &zernike) |
Methods dealing with local objects. | |
virtual void | removeLocalObject (const UUID &uuid) |
virtual void | addLocalAggregateObject (const UUID &uuid, const TimedMotionVector3f &loc, const TimedMotionQuaternion &orient, const AggregateBoundingInfo &bounds, const String &mesh, const String &physics) |
Aggregate objects are handled separately from other local objects. | |
virtual void | removeLocalAggregateObject (const UUID &uuid) |
virtual void | updateLocalAggregateLocation (const UUID &uuid, const TimedMotionVector3f &newval) |
virtual void | updateLocalAggregateOrientation (const UUID &uuid, const TimedMotionQuaternion &newval) |
virtual void | updateLocalAggregateBounds (const UUID &uuid, const AggregateBoundingInfo &newval) |
virtual void | updateLocalAggregateMesh (const UUID &uuid, const String &newval) |
virtual void | updateLocalAggregatePhysics (const UUID &uuid, const String &newval) |
virtual void | addReplicaObject (const Time &t, const UUID &uuid, bool agg, const TimedMotionVector3f &loc, const TimedMotionQuaternion &orient, const AggregateBoundingInfo &bounds, const String &mesh, const String &physics, const String &zernike) |
Methods dealing with replica objects. | |
virtual void | removeReplicaObject (const Time &t, const UUID &uuid) |
virtual void | receiveMessage (Message *msg) |
MessageRecipient Interface. | |
virtual bool | locationUpdate (UUID source, void *buffer, uint32 length) |
virtual void | commandProperties (const Command::Command &cmd, Command::Commander *cmdr, Command::CommandID cmdid) |
Get basic properties about this location service, e.g. | |
virtual void | commandObjectProperties (const Command::Command &cmd, Command::Commander *cmdr, Command::CommandID cmdid) |
Get all the properties stored about an object. | |
Private Types | |
typedef std::tr1::unordered_map< UUID, LocationInfo, UUID::Hasher > | LocationMap |
Private Attributes | |
LocationMap | mLocations |
Standard location service, which functions entirely based on location updates from objects and other spaces servers.
typedef std::tr1::unordered_map<UUID, LocationInfo, UUID::Hasher> Sirikata::StandardLocationService::LocationMap [private] |
Sirikata::StandardLocationService::StandardLocationService | ( | SpaceContext * | ctx, |
LocationUpdatePolicy * | update_policy | ||
) |
void Sirikata::StandardLocationService::addLocalAggregateObject | ( | const UUID & | uuid, |
const TimedMotionVector3f & | loc, | ||
const TimedMotionQuaternion & | orient, | ||
const AggregateBoundingInfo & | bounds, | ||
const String & | mesh, | ||
const String & | physics | ||
) | [virtual] |
Aggregate objects are handled separately from other local objects.
All the information is tracked, but listeners are notified about them separately. This is necessary since not filtering them would cause them to filter back into whatever system generated them. In general, users other than Proximity should learn about aggregates and treat them as normal objects. Proximity ignores them since it is the one that generates them.
Implements Sirikata::LocationService.
References Sirikata::StandardLocationService::LocationInfo::aggregate, bounds(), Sirikata::StandardLocationService::LocationInfo::local, location(), mesh(), mLocations, Sirikata::LocationService::notifyLocalObjectAdded(), orientation(), physics(), Sirikata::StandardLocationService::LocationInfo::props, Sirikata::SequencedPresenceProperties::reset(), Sirikata::SequencedPresenceProperties::setBounds(), Sirikata::SequencedPresenceProperties::setLocation(), Sirikata::SequencedPresenceProperties::setMesh(), Sirikata::SequencedPresenceProperties::setOrientation(), and Sirikata::SequencedPresenceProperties::setPhysics().
void Sirikata::StandardLocationService::addLocalObject | ( | const UUID & | uuid, |
const TimedMotionVector3f & | loc, | ||
const TimedMotionQuaternion & | orient, | ||
const AggregateBoundingInfo & | bounds, | ||
const String & | mesh, | ||
const String & | physics, | ||
const String & | zernike | ||
) | [virtual] |
Methods dealing with local objects.
Implements Sirikata::LocationService.
References Sirikata::StandardLocationService::LocationInfo::aggregate, bounds(), CONTEXT_SPACETRACE, Sirikata::SpaceContext::id(), Sirikata::StandardLocationService::LocationInfo::local, location(), Sirikata::LocationService::mContext, mesh(), mLocations, Sirikata::LocationService::notifyLocalObjectAdded(), Sirikata::LocationService::notifyReplicaObjectRemoved(), orientation(), physics(), Sirikata::StandardLocationService::LocationInfo::props, Sirikata::SequencedPresenceProperties::reset(), Sirikata::SequencedPresenceProperties::setBounds(), Sirikata::SequencedPresenceProperties::setLocation(), Sirikata::SequencedPresenceProperties::setMesh(), Sirikata::SequencedPresenceProperties::setOrientation(), and Sirikata::SequencedPresenceProperties::setPhysics().
void Sirikata::StandardLocationService::addReplicaObject | ( | const Time & | t, |
const UUID & | uuid, | ||
bool | agg, | ||
const TimedMotionVector3f & | loc, | ||
const TimedMotionQuaternion & | orient, | ||
const AggregateBoundingInfo & | bounds, | ||
const String & | mesh, | ||
const String & | physics, | ||
const String & | zernike | ||
) | [virtual] |
Methods dealing with replica objects.
Implements Sirikata::LocationService.
References Sirikata::StandardLocationService::LocationInfo::aggregate, bounds(), CONTEXT_SPACETRACE, Sirikata::SpaceContext::id(), Sirikata::StandardLocationService::LocationInfo::local, location(), Sirikata::LocationService::mContext, mesh(), mLocations, Sirikata::LocationService::notifyReplicaObjectAdded(), orientation(), physics(), Sirikata::StandardLocationService::LocationInfo::props, Sirikata::SequencedPresenceProperties::reset(), Sirikata::SequencedPresenceProperties::setBounds(), Sirikata::SequencedPresenceProperties::setLocation(), Sirikata::SequencedPresenceProperties::setMesh(), Sirikata::SequencedPresenceProperties::setOrientation(), and Sirikata::SequencedPresenceProperties::setPhysics().
AggregateBoundingInfo Sirikata::StandardLocationService::bounds | ( | const UUID & | uuid | ) | [virtual] |
Implements Sirikata::LocationService.
References Sirikata::PresenceProperties::bounds(), mLocations, and Sirikata::StandardLocationService::LocationInfo::props.
Referenced by addLocalAggregateObject(), addLocalObject(), and addReplicaObject().
void Sirikata::StandardLocationService::commandObjectProperties | ( | const Command::Command & | cmd, |
Command::Commander * | cmdr, | ||
Command::CommandID | cmdid | ||
) | [virtual] |
Get all the properties stored about an object.
Implements Sirikata::LocationService.
References Sirikata::Command::EmptyResult(), Sirikata::LocationService::mContext, mLocations, Sirikata::Context::recentSimTime(), and Sirikata::Command::Commander::result().
void Sirikata::StandardLocationService::commandProperties | ( | const Command::Command & | cmd, |
Command::Commander * | cmdr, | ||
Command::CommandID | cmdid | ||
) | [virtual] |
Get basic properties about this location service, e.g.
type, number of objects tracked, etc.
Implements Sirikata::LocationService.
References Sirikata::Command::EmptyResult(), mLocations, and Sirikata::Command::Commander::result().
bool Sirikata::StandardLocationService::contains | ( | const UUID & | uuid | ) | const [virtual] |
Indicates whether this location service is tracking the given object.
It is only safe to request information
Implements Sirikata::LocationService.
References mLocations.
Referenced by receiveMessage().
Quaternion Sirikata::StandardLocationService::currentOrientation | ( | const UUID & | uuid | ) | [virtual] |
Vector3f Sirikata::StandardLocationService::currentPosition | ( | const UUID & | uuid | ) | [virtual] |
uint64 Sirikata::StandardLocationService::epoch | ( | const UUID & | uuid | ) | [virtual] |
Methods dealing with information requests.
Implements Sirikata::LocationService.
References Sirikata::SequencedPresenceProperties::maxSeqNo(), mLocations, and Sirikata::StandardLocationService::LocationInfo::props.
Referenced by locationUpdate(), and receiveMessage().
bool Sirikata::StandardLocationService::isLocal | ( | const UUID & | uuid | ) | const |
References mLocations.
Referenced by isReplica(), locationUpdate(), and receiveMessage().
bool Sirikata::StandardLocationService::isReplica | ( | const UUID & | uuid | ) | const [inline] |
References isLocal().
TimedMotionVector3f Sirikata::StandardLocationService::location | ( | const UUID & | uuid | ) | [virtual] |
Implements Sirikata::LocationService.
References Sirikata::PresenceProperties::location(), mLocations, and Sirikata::StandardLocationService::LocationInfo::props.
Referenced by addLocalAggregateObject(), addLocalObject(), addReplicaObject(), and currentPosition().
bool Sirikata::StandardLocationService::locationUpdate | ( | UUID | source, |
void * | buffer, | ||
uint32 | length | ||
) | [virtual] |
Implements Sirikata::LocationService.
References CONTEXT_SPACETRACE, epoch(), Sirikata::Logging::error, Sirikata::SpaceContext::id(), isLocal(), LOG_INVALID_MESSAGE_BUFFER, Sirikata::LocationService::mContext, mLocations, Sirikata::LocationService::notifyLocalBoundsUpdated(), Sirikata::LocationService::notifyLocalLocationUpdated(), Sirikata::LocationService::notifyLocalMeshUpdated(), Sirikata::LocationService::notifyLocalOrientationUpdated(), Sirikata::LocationService::notifyLocalPhysicsUpdated(), and Sirikata::UUID::toString().
const String & Sirikata::StandardLocationService::mesh | ( | const UUID & | uuid | ) | [virtual] |
Implements Sirikata::LocationService.
References Sirikata::StandardLocationService::LocationInfo::mesh_copied_str, and mLocations.
Referenced by addLocalAggregateObject(), addLocalObject(), and addReplicaObject().
TimedMotionQuaternion Sirikata::StandardLocationService::orientation | ( | const UUID & | uuid | ) | [virtual] |
Implements Sirikata::LocationService.
References mLocations, Sirikata::PresenceProperties::orientation(), and Sirikata::StandardLocationService::LocationInfo::props.
Referenced by addLocalAggregateObject(), addLocalObject(), addReplicaObject(), and currentOrientation().
const String & Sirikata::StandardLocationService::physics | ( | const UUID & | uuid | ) | [virtual] |
Implements Sirikata::LocationService.
References mLocations, and Sirikata::StandardLocationService::LocationInfo::physics_copied_str.
Referenced by addLocalAggregateObject(), addLocalObject(), and addReplicaObject().
void Sirikata::StandardLocationService::receiveMessage | ( | Message * | msg | ) | [virtual] |
MessageRecipient Interface.
Implements Sirikata::LocationService.
References contains(), CONTEXT_SPACETRACE, Sirikata::Message::dest_port(), epoch(), Sirikata::SpaceContext::id(), isLocal(), Sirikata::LocationService::mContext, mLocations, Sirikata::LocationService::notifyOnLocationUpdateFromServer(), Sirikata::LocationService::notifyReplicaBoundsUpdated(), Sirikata::LocationService::notifyReplicaLocationUpdated(), Sirikata::LocationService::notifyReplicaMeshUpdated(), Sirikata::LocationService::notifyReplicaOrientationUpdated(), Sirikata::LocationService::notifyReplicaPhysicsUpdated(), Sirikata::parsePBJMessage(), Sirikata::Message::payload(), SERVER_PORT_LOCATION, and Sirikata::Message::source_server().
void Sirikata::StandardLocationService::removeLocalAggregateObject | ( | const UUID & | uuid | ) | [virtual] |
Implements Sirikata::LocationService.
References mLocations, and Sirikata::LocationService::notifyLocalObjectRemoved().
void Sirikata::StandardLocationService::removeLocalObject | ( | const UUID & | uuid | ) | [virtual] |
void Sirikata::StandardLocationService::service | ( | ) | [virtual] |
Implements Sirikata::LocationService.
References Sirikata::LocationService::mUpdatePolicy, and Sirikata::LocationUpdatePolicy::service().
void Sirikata::StandardLocationService::updateLocalAggregateBounds | ( | const UUID & | uuid, |
const AggregateBoundingInfo & | newval | ||
) | [virtual] |
Implements Sirikata::LocationService.
References mLocations, and Sirikata::LocationService::notifyLocalBoundsUpdated().
void Sirikata::StandardLocationService::updateLocalAggregateLocation | ( | const UUID & | uuid, |
const TimedMotionVector3f & | newval | ||
) | [virtual] |
Implements Sirikata::LocationService.
References mLocations, and Sirikata::LocationService::notifyLocalLocationUpdated().
void Sirikata::StandardLocationService::updateLocalAggregateMesh | ( | const UUID & | uuid, |
const String & | newval | ||
) | [virtual] |
Implements Sirikata::LocationService.
References mLocations, and Sirikata::LocationService::notifyLocalMeshUpdated().
void Sirikata::StandardLocationService::updateLocalAggregateOrientation | ( | const UUID & | uuid, |
const TimedMotionQuaternion & | newval | ||
) | [virtual] |
Implements Sirikata::LocationService.
References mLocations, and Sirikata::LocationService::notifyLocalOrientationUpdated().
void Sirikata::StandardLocationService::updateLocalAggregatePhysics | ( | const UUID & | uuid, |
const String & | newval | ||
) | [virtual] |
Implements Sirikata::LocationService.
References mLocations, and Sirikata::LocationService::notifyLocalPhysicsUpdated().
Referenced by addLocalAggregateObject(), addLocalObject(), addReplicaObject(), bounds(), commandObjectProperties(), commandProperties(), contains(), epoch(), isLocal(), location(), locationUpdate(), mesh(), orientation(), physics(), receiveMessage(), removeLocalAggregateObject(), removeLocalObject(), removeReplicaObject(), updateLocalAggregateBounds(), updateLocalAggregateLocation(), updateLocalAggregateMesh(), updateLocalAggregateOrientation(), and updateLocalAggregatePhysics().