Sirikata
Classes | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Private Attributes
Sirikata::LocationService Class Reference

Interface for location services. More...

#include <LocationService.hpp>

Inheritance diagram for Sirikata::LocationService:
Collaboration diagram for Sirikata::LocationService:

List of all members.

Classes

struct  ListenerInfo

Public Member Functions

 LocationService (SpaceContext *ctx, LocationUpdatePolicy *update_policy)
virtual ~LocationService ()
const SpaceContextcontext () const
virtual void newSession (ObjectSession *session)
virtual bool contains (const UUID &uuid) const =0
 Indicates whether this location service is tracking the given object.
virtual uint64 epoch (const UUID &uuid)=0
 Methods dealing with information requests.
virtual TimedMotionVector3f location (const UUID &uuid)=0
virtual Vector3f currentPosition (const UUID &uuid)=0
virtual TimedMotionQuaternion orientation (const UUID &uuid)=0
virtual Quaternion currentOrientation (const UUID &uuid)=0
virtual AggregateBoundingInfo bounds (const UUID &uuid)=0
virtual const String & mesh (const UUID &uuid)=0
virtual const String & physics (const UUID &uuid)=0
virtual void addLocalObject (const UUID &uuid, const TimedMotionVector3f &loc, const TimedMotionQuaternion &orient, const AggregateBoundingInfo &bounds, const String &mesh, const String &physics, const String &zernike)=0
 Methods dealing with local objects.
virtual void removeLocalObject (const UUID &uuid)=0
virtual void addLocalAggregateObject (const UUID &uuid, const TimedMotionVector3f &loc, const TimedMotionQuaternion &orient, const AggregateBoundingInfo &bounds, const String &mesh, const String &physics)=0
 Aggregate objects are handled separately from other local objects.
virtual void removeLocalAggregateObject (const UUID &uuid)=0
virtual void updateLocalAggregateLocation (const UUID &uuid, const TimedMotionVector3f &newval)=0
virtual void updateLocalAggregateOrientation (const UUID &uuid, const TimedMotionQuaternion &newval)=0
virtual void updateLocalAggregateBounds (const UUID &uuid, const AggregateBoundingInfo &newval)=0
virtual void updateLocalAggregateMesh (const UUID &uuid, const String &newval)=0
virtual void updateLocalAggregatePhysics (const UUID &uuid, const String &newval)=0
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)=0
 Methods dealing with replica objects.
virtual void removeReplicaObject (const Time &t, const UUID &uuid)=0
virtual void addListener (LocationServiceListener *listener, bool want_aggregates)
 Methods dealing with listeners.
virtual void removeListener (LocationServiceListener *listener)
virtual void subscribe (ServerID remote, const UUID &uuid, SeqNoPtr seq_no_ptr)
 Subscriptions for other servers.
virtual void subscribe (ServerID remote, const UUID &uuid, ProxIndexID index_id, SeqNoPtr seq_no_ptr)
virtual void unsubscribe (ServerID remote, const UUID &uuid)
virtual void unsubscribe (ServerID remote, const UUID &uuid, ProxIndexID index_id)
virtual void unsubscribe (ServerID remote)
 Unsubscripe the given server from all its location subscriptions.
virtual void subscribe (const OHDP::NodeID &remote, const UUID &uuid)
 Subscriptions for connected object hosts.
virtual void subscribe (const OHDP::NodeID &remote, const UUID &uuid, ProxIndexID index_id)
virtual void unsubscribe (const OHDP::NodeID &remote, const UUID &uuid)
virtual void unsubscribe (const OHDP::NodeID &remote, const UUID &uuid, ProxIndexID index_id)
virtual void unsubscribe (const OHDP::NodeID &remote)
 Unsubscripe the given object host from all its location subscriptions.
virtual void subscribe (const UUID &remote, const UUID &uuid)
 Subscriptions for local objects.
virtual void subscribe (const UUID &remote, const UUID &uuid, ProxIndexID index_id)
virtual void unsubscribe (const UUID &remote, const UUID &uuid)
virtual void unsubscribe (const UUID &remote, const UUID &uuid, ProxIndexID index_id)
virtual void unsubscribe (const UUID &remote)
 Unsubscripe the given server from all its location subscriptions.
virtual void receiveMessage (Message *msg)=0
 MessageRecipient Interface.
virtual bool locationUpdate (UUID source, void *buffer, uint32 length)=0
virtual void commandProperties (const Command::Command &cmd, Command::Commander *cmdr, Command::CommandID cmdid)=0
 Get basic properties about this location service, e.g.
virtual void commandObjectProperties (const Command::Command &cmd, Command::Commander *cmdr, Command::CommandID cmdid)=0
 Get all the properties stored about an object.

Protected Types

typedef SST::Stream
< SpaceObjectReference
SSTStream
typedef SSTStream::Ptr SSTStreamPtr
typedef std::set< ListenerInfoListenerList

Protected Member Functions

virtual void start ()
 Start polling this service on this strand at the given maximum rate.
virtual void stop ()
 Stop scheduling this service.
virtual void poll ()
 Override this method to specify the work to be done when polling.
virtual void service ()=0
void notifyLocalObjectAdded (const UUID &uuid, bool agg, const TimedMotionVector3f &loc, const TimedMotionQuaternion &orient, const AggregateBoundingInfo &bounds, const String &mesh, const String &physics, const String &zernike) const
void notifyLocalObjectRemoved (const UUID &uuid, bool agg) const
void notifyLocalLocationUpdated (const UUID &uuid, bool agg, const TimedMotionVector3f &newval) const
void notifyLocalOrientationUpdated (const UUID &uuid, bool agg, const TimedMotionQuaternion &newval) const
void notifyLocalBoundsUpdated (const UUID &uuid, bool agg, const AggregateBoundingInfo &newval) const
void notifyLocalMeshUpdated (const UUID &uuid, bool agg, const String &newval) const
void notifyLocalPhysicsUpdated (const UUID &uuid, bool agg, const String &newval) const
void notifyReplicaObjectAdded (const UUID &uuid, const TimedMotionVector3f &loc, const TimedMotionQuaternion &orient, const AggregateBoundingInfo &bounds, const String &mesh, const String &physics, const String &zernike) const
void notifyReplicaObjectRemoved (const UUID &uuid) const
void notifyReplicaLocationUpdated (const UUID &uuid, const TimedMotionVector3f &newval) const
void notifyReplicaOrientationUpdated (const UUID &uuid, const TimedMotionQuaternion &newval) const
void notifyReplicaBoundsUpdated (const UUID &uuid, const AggregateBoundingInfo &newval) const
void notifyReplicaMeshUpdated (const UUID &uuid, const String &newval) const
void notifyReplicaPhysicsUpdated (const UUID &uuid, const String &newval) const
void notifyOnLocationUpdateFromServer (const ServerID sid, const Sirikata::Protocol::Loc::LocationUpdate &update)
void handleLocationUpdateSubstream (const UUID &source, int err, SSTStreamPtr s)
void handleLocationUpdateSubstreamRead (const UUID &source, SSTStreamPtr s, std::stringstream *prevdata, uint8 *buffer, int length)
void tryHandleLocationUpdate (const UUID &source, SSTStreamPtr s, const String &payload, std::stringstream *prevdata)

Protected Attributes

SpaceContextmContext
ListenerList mListeners
LocationUpdatePolicymUpdatePolicy

Private Attributes

TimeProfiler::StagemProfiler

Detailed Description

Interface for location services.

This provides a way for other components to get the most current information about object locations.


Member Typedef Documentation


Constructor & Destructor Documentation

Sirikata::LocationService::LocationService ( SpaceContext ctx,
LocationUpdatePolicy update_policy 
)
Sirikata::LocationService::~LocationService ( ) [virtual]

Member Function Documentation

void Sirikata::LocationService::addListener ( LocationServiceListener listener,
bool  want_aggregates 
) [virtual]
virtual void Sirikata::LocationService::addLocalAggregateObject ( const UUID uuid,
const TimedMotionVector3f loc,
const TimedMotionQuaternion orient,
const AggregateBoundingInfo bounds,
const String &  mesh,
const String &  physics 
) [pure 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.

Implemented in Sirikata::BulletPhysicsService, and Sirikata::StandardLocationService.

Referenced by Sirikata::LibproxProximityBase::aggregateCreated().

virtual void Sirikata::LocationService::addLocalObject ( const UUID uuid,
const TimedMotionVector3f loc,
const TimedMotionQuaternion orient,
const AggregateBoundingInfo bounds,
const String &  mesh,
const String &  physics,
const String &  zernike 
) [pure virtual]
virtual void Sirikata::LocationService::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 
) [pure virtual]
virtual AggregateBoundingInfo Sirikata::LocationService::bounds ( const UUID uuid) [pure virtual]
virtual void Sirikata::LocationService::commandObjectProperties ( const Command::Command cmd,
Command::Commander cmdr,
Command::CommandID  cmdid 
) [pure virtual]

Get all the properties stored about an object.

Implemented in Sirikata::BulletPhysicsService, and Sirikata::StandardLocationService.

Referenced by LocationService().

virtual void Sirikata::LocationService::commandProperties ( const Command::Command cmd,
Command::Commander cmdr,
Command::CommandID  cmdid 
) [pure virtual]

Get basic properties about this location service, e.g.

type, number of objects tracked, etc.

Implemented in Sirikata::BulletPhysicsService, and Sirikata::StandardLocationService.

Referenced by LocationService().

virtual bool Sirikata::LocationService::contains ( const UUID uuid) const [pure virtual]
const SpaceContext* Sirikata::LocationService::context ( ) const [inline]
virtual Quaternion Sirikata::LocationService::currentOrientation ( const UUID uuid) [pure virtual]
virtual Vector3f Sirikata::LocationService::currentPosition ( const UUID uuid) [pure virtual]
virtual uint64 Sirikata::LocationService::epoch ( const UUID uuid) [pure virtual]
void Sirikata::LocationService::handleLocationUpdateSubstream ( const UUID source,
int  err,
SSTStreamPtr  s 
) [protected]
void Sirikata::LocationService::handleLocationUpdateSubstreamRead ( const UUID source,
SSTStreamPtr  s,
std::stringstream *  prevdata,
uint8 *  buffer,
int  length 
) [protected]
virtual TimedMotionVector3f Sirikata::LocationService::location ( const UUID uuid) [pure virtual]
virtual bool Sirikata::LocationService::locationUpdate ( UUID  source,
void *  buffer,
uint32  length 
) [pure virtual]
virtual const String& Sirikata::LocationService::mesh ( const UUID uuid) [pure virtual]
void Sirikata::LocationService::newSession ( ObjectSession session) [virtual]
void Sirikata::LocationService::notifyLocalBoundsUpdated ( const UUID uuid,
bool  agg,
const AggregateBoundingInfo newval 
) const [protected]
void Sirikata::LocationService::notifyLocalLocationUpdated ( const UUID uuid,
bool  agg,
const TimedMotionVector3f newval 
) const [protected]
void Sirikata::LocationService::notifyLocalMeshUpdated ( const UUID uuid,
bool  agg,
const String &  newval 
) const [protected]
void Sirikata::LocationService::notifyLocalObjectAdded ( const UUID uuid,
bool  agg,
const TimedMotionVector3f loc,
const TimedMotionQuaternion orient,
const AggregateBoundingInfo bounds,
const String &  mesh,
const String &  physics,
const String &  zernike 
) const [protected]
void Sirikata::LocationService::notifyLocalObjectRemoved ( const UUID uuid,
bool  agg 
) const [protected]
void Sirikata::LocationService::notifyLocalOrientationUpdated ( const UUID uuid,
bool  agg,
const TimedMotionQuaternion newval 
) const [protected]
void Sirikata::LocationService::notifyLocalPhysicsUpdated ( const UUID uuid,
bool  agg,
const String &  newval 
) const [protected]
void Sirikata::LocationService::notifyOnLocationUpdateFromServer ( const ServerID  sid,
const Sirikata::Protocol::Loc::LocationUpdate &  update 
) [protected]
void Sirikata::LocationService::notifyReplicaBoundsUpdated ( const UUID uuid,
const AggregateBoundingInfo newval 
) const [protected]
void Sirikata::LocationService::notifyReplicaLocationUpdated ( const UUID uuid,
const TimedMotionVector3f newval 
) const [protected]
void Sirikata::LocationService::notifyReplicaMeshUpdated ( const UUID uuid,
const String &  newval 
) const [protected]
void Sirikata::LocationService::notifyReplicaObjectAdded ( const UUID uuid,
const TimedMotionVector3f loc,
const TimedMotionQuaternion orient,
const AggregateBoundingInfo bounds,
const String &  mesh,
const String &  physics,
const String &  zernike 
) const [protected]
void Sirikata::LocationService::notifyReplicaObjectRemoved ( const UUID uuid) const [protected]
void Sirikata::LocationService::notifyReplicaOrientationUpdated ( const UUID uuid,
const TimedMotionQuaternion newval 
) const [protected]
void Sirikata::LocationService::notifyReplicaPhysicsUpdated ( const UUID uuid,
const String &  newval 
) const [protected]
virtual TimedMotionQuaternion Sirikata::LocationService::orientation ( const UUID uuid) [pure virtual]
virtual const String& Sirikata::LocationService::physics ( const UUID uuid) [pure virtual]
void Sirikata::LocationService::poll ( ) [protected, virtual]

Override this method to specify the work to be done when polling.

Implements Sirikata::PollingService.

References Sirikata::TimeProfiler::Stage::finished(), mProfiler, service(), and Sirikata::TimeProfiler::Stage::started().

virtual void Sirikata::LocationService::receiveMessage ( Message msg) [pure virtual]
void Sirikata::LocationService::removeListener ( LocationServiceListener listener) [virtual]
virtual void Sirikata::LocationService::removeLocalAggregateObject ( const UUID uuid) [pure virtual]
virtual void Sirikata::LocationService::removeLocalObject ( const UUID uuid) [pure virtual]
virtual void Sirikata::LocationService::removeReplicaObject ( const Time t,
const UUID uuid 
) [pure virtual]
virtual void Sirikata::LocationService::service ( ) [protected, pure virtual]
void Sirikata::LocationService::start ( ) [protected, virtual]

Start polling this service on this strand at the given maximum rate.

Reimplemented from Sirikata::PollingService.

References mUpdatePolicy, and Sirikata::LocationUpdatePolicy::start().

void Sirikata::LocationService::stop ( ) [protected, 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::PollingService.

References mUpdatePolicy, and Sirikata::LocationUpdatePolicy::stop().

void Sirikata::LocationService::subscribe ( ServerID  remote,
const UUID uuid,
SeqNoPtr  seq_no_ptr 
) [virtual]
void Sirikata::LocationService::subscribe ( const UUID remote,
const UUID uuid 
) [virtual]

Subscriptions for local objects.

References mUpdatePolicy, and Sirikata::LocationUpdatePolicy::subscribe().

void Sirikata::LocationService::subscribe ( const UUID remote,
const UUID uuid,
ProxIndexID  index_id 
) [virtual]
void Sirikata::LocationService::subscribe ( ServerID  remote,
const UUID uuid,
ProxIndexID  index_id,
SeqNoPtr  seq_no_ptr 
) [virtual]
void Sirikata::LocationService::subscribe ( const OHDP::NodeID remote,
const UUID uuid,
ProxIndexID  index_id 
) [virtual]
void Sirikata::LocationService::subscribe ( const OHDP::NodeID remote,
const UUID uuid 
) [virtual]

Subscriptions for connected object hosts.

References mUpdatePolicy, and Sirikata::LocationUpdatePolicy::subscribe().

void Sirikata::LocationService::tryHandleLocationUpdate ( const UUID source,
SSTStreamPtr  s,
const String &  payload,
std::stringstream *  prevdata 
) [protected]
void Sirikata::LocationService::unsubscribe ( ServerID  remote,
const UUID uuid,
ProxIndexID  index_id 
) [virtual]
void Sirikata::LocationService::unsubscribe ( const UUID remote,
const UUID uuid,
ProxIndexID  index_id 
) [virtual]
void Sirikata::LocationService::unsubscribe ( ServerID  remote) [virtual]

Unsubscripe the given server from all its location subscriptions.

References mUpdatePolicy, and Sirikata::LocationUpdatePolicy::unsubscribe().

void Sirikata::LocationService::unsubscribe ( ServerID  remote,
const UUID uuid 
) [virtual]
void Sirikata::LocationService::unsubscribe ( const UUID remote,
const UUID uuid 
) [virtual]
void Sirikata::LocationService::unsubscribe ( const OHDP::NodeID remote,
const UUID uuid,
ProxIndexID  index_id 
) [virtual]
void Sirikata::LocationService::unsubscribe ( const OHDP::NodeID remote) [virtual]

Unsubscripe the given object host from all its location subscriptions.

References mUpdatePolicy, and Sirikata::LocationUpdatePolicy::unsubscribe().

void Sirikata::LocationService::unsubscribe ( const OHDP::NodeID remote,
const UUID uuid 
) [virtual]
void Sirikata::LocationService::unsubscribe ( const UUID remote) [virtual]

Unsubscripe the given server from all its location subscriptions.

References mUpdatePolicy, and Sirikata::LocationUpdatePolicy::unsubscribe().

virtual void Sirikata::LocationService::updateLocalAggregateBounds ( const UUID uuid,
const AggregateBoundingInfo newval 
) [pure virtual]
virtual void Sirikata::LocationService::updateLocalAggregateLocation ( const UUID uuid,
const TimedMotionVector3f newval 
) [pure virtual]
virtual void Sirikata::LocationService::updateLocalAggregateMesh ( const UUID uuid,
const String &  newval 
) [pure virtual]
virtual void Sirikata::LocationService::updateLocalAggregateOrientation ( const UUID uuid,
const TimedMotionQuaternion newval 
) [pure virtual]
virtual void Sirikata::LocationService::updateLocalAggregatePhysics ( const UUID uuid,
const String &  newval 
) [pure virtual]

Member Data Documentation

Reimplemented from Sirikata::PollingService.

Referenced by LocationService(), poll(), and ~LocationService().


The documentation for this class was generated from the following files: