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

Base class for Libprox-based Proximity implementations, providing a bit of utility code that gets reused across different implementations. More...

#include <LibproxProximityBase.hpp>

Inheritance diagram for Sirikata::LibproxProximityBase:
Collaboration diagram for Sirikata::LibproxProximityBase:

List of all members.

Classes

struct  expires_tag
struct  objid_tag
struct  ProxStreamInfo
struct  StaticObjectTimeout
struct  Stats

Public Member Functions

 LibproxProximityBase (SpaceContext *ctx, LocationService *locservice, CoordinateSegmentation *cseg, SpaceNetwork *net, AggregateManager *aggmgr)
 ~LibproxProximityBase ()
virtual void start ()
 Start polling this service on this strand at the given maximum rate.
virtual void stop ()
 Stop scheduling this service.
virtual void localObjectAdded (const UUID &uuid, bool agg, const TimedMotionVector3f &loc, const TimedMotionQuaternion &orient, const AggregateBoundingInfo &bounds, const String &mesh, const String &physics, const String &zernike)
virtual void localObjectRemoved (const UUID &uuid, bool agg)
virtual void localBoundsUpdated (const UUID &uuid, bool agg, const AggregateBoundingInfo &newval)

Protected Types

enum  ObjectClass { OBJECT_CLASS_STATIC = 0, OBJECT_CLASS_DYNAMIC = 1, NUM_OBJECT_CLASSES = 2 }
typedef Prox::QueryEvent
< ObjectProxSimulationTraits > 
QueryEvent
typedef std::deque< QueryEventQueryEventList
typedef ODPSST::Stream::Ptr ProxObjectStreamPtr
typedef ProxStreamInfo
< ObjectReference,
ODPSST::Stream
ProxObjectStreamInfo
typedef std::tr1::shared_ptr
< ProxObjectStreamInfo
ProxObjectStreamInfoPtr
typedef OHDPSST::Stream::Ptr ProxObjectHostStreamPtr
typedef ProxStreamInfo
< OHDP::NodeID,
OHDPSST::Stream
ProxObjectHostStreamInfo
typedef std::tr1::shared_ptr
< ProxObjectHostStreamInfo
ProxObjectHostStreamInfoPtr
typedef
std::tr1::unordered_map< UUID,
ProxObjectStreamInfoPtr,
UUID::Hasher
ObjectProxStreamMap
typedef
std::tr1::unordered_map
< OHDP::NodeID,
ProxObjectHostStreamInfoPtr,
OHDP::NodeID::Hasher
ObjectHostProxStreamMap
typedef
boost::multi_index_container
< StaticObjectTimeout,
boost::multi_index::indexed_by
< boost::multi_index::ordered_unique
< boost::multi_index::tag
< objid_tag >
, BOOST_MULTI_INDEX_MEMBER(StaticObjectTimeout,
ObjectReference, objid) >
, boost::multi_index::ordered_non_unique
< boost::multi_index::tag
< expires_tag >
, BOOST_MULTI_INDEX_MEMBER(StaticObjectTimeout,
Time, expires) > > > 
StaticObjectTimeouts
typedef
StaticObjectTimeouts::index
< objid_tag >::type 
StaticObjectsByID
typedef
StaticObjectTimeouts::index
< expires_tag >::type 
StaticObjectsByExpiration

Protected Member Functions

void coalesceEvents (QueryEventList &evts, uint32 per_event)
virtual void onPintoServerResult (const Sirikata::Protocol::Prox::ProximityUpdate &update)=0
virtual void onPintoServerLocUpdate (const LocUpdate &update)=0
virtual void onSpaceNetworkConnected (ServerID sid)
virtual void onSpaceNetworkDisconnected (ServerID sid)
virtual void updatedSegmentation (CoordinateSegmentation *cseg, const std::vector< SegmentationInfo > &new_seg)
void updateObjectSize (const UUID &obj, float rad)
void removeObjectSize (const UUID &obj)
bool sendServerMessage (Message *msg)
void serverMessageReceived (Message *msg)
void readFramesFromObjectStream (const ObjectReference &oref, ProxObjectStreamInfo::FrameReceivedCallback cb)
void readFramesFromObjectHostStream (const OHDP::NodeID &node, ProxObjectHostStreamInfo::FrameReceivedCallback cb)
void readObjectStreamFrame (String &payload, ProxObjectStreamInfo::FrameReceivedCallback cb)
void readObjectHostStreamFrame (String &payload, ProxObjectStreamInfo::FrameReceivedCallback cb)
void sendObjectResult (Sirikata::Protocol::Object::ObjectMessage *)
void sendObjectHostResult (const OHDP::NodeID &node, Sirikata::Protocol::Object::ObjectMessage *)
bool validSession (const ObjectReference &oref) const
bool validSession (const OHDP::NodeID &node) const
ProxObjectStreamPtr getBaseStream (const ObjectReference &oref) const
ProxObjectHostStreamPtr getBaseStream (const OHDP::NodeID &node) const
void addObjectProxStreamInfo (ODPSST::Stream::Ptr)
void addObjectHostProxStreamInfo (OHDPSST::Stream::Ptr)
void handleAddObjectLocSubscription (const UUID &subscriber, const UUID &observed)
void handleAddObjectLocSubscriptionWithID (const UUID &subscriber, const UUID &observed, ProxIndexID index_id)
void handleRemoveObjectLocSubscription (const UUID &subscriber, const UUID &observed)
void handleRemoveObjectLocSubscriptionWithID (const UUID &subscriber, const UUID &observed, ProxIndexID index_id)
void handleRemoveAllObjectLocSubscription (const UUID &subscriber)
void handleAddOHLocSubscription (const OHDP::NodeID &subscriber, const UUID &observed)
void handleAddOHLocSubscriptionWithID (const OHDP::NodeID &subscriber, const UUID &observed, ProxIndexID index_id)
void handleRemoveOHLocSubscription (const OHDP::NodeID &subscriber, const UUID &observed)
void handleRemoveOHLocSubscriptionWithID (const OHDP::NodeID &subscriber, const UUID &observed, ProxIndexID index_id)
void handleRemoveAllOHLocSubscription (const OHDP::NodeID &subscriber)
void handleAddServerLocSubscription (const ServerID &subscriber, const UUID &observed, SeqNoPtr seqPtr)
void handleAddServerLocSubscriptionWithID (const ServerID &subscriber, const UUID &observed, ProxIndexID index_id, SeqNoPtr seqPtr)
void handleRemoveServerLocSubscription (const ServerID &subscriber, const UUID &observed)
void handleRemoveServerLocSubscriptionWithID (const ServerID &subscriber, const UUID &observed, ProxIndexID index_id)
void handleRemoveAllServerLocSubscription (const ServerID &subscriber)
void checkObjectClass (bool is_local, const UUID &objid, const TimedMotionVector3f &newval)
virtual void handleConnectedServer (ServerID sid)
virtual void handleDisconnectedServer (ServerID sid)
void removeStaticObjectTimeout (const ObjectReference &objid)
virtual void trySwapHandlers (bool is_local, const ObjectReference &objid, bool is_static)=0
void handleCheckObjectClass (bool is_local, const ObjectReference &objid, const TimedMotionVector3f &newval)
void processExpiredStaticObjectTimeouts ()
virtual void aggregateCreated (const ObjectReference &objid)
virtual void aggregateChildAdded (const ObjectReference &objid, const ObjectReference &child, const Vector3f &pos, const AggregateBoundingInfo &bnds)
virtual void aggregateChildRemoved (const ObjectReference &objid, const ObjectReference &child, const Vector3f &pos, const AggregateBoundingInfo &bnds)
virtual void aggregateBoundsUpdated (const ObjectReference &objid, const Vector3f &pos, const AggregateBoundingInfo &bnds)
virtual void aggregateDestroyed (const ObjectReference &objid)
virtual void aggregateObserved (const ObjectReference &objid, uint32 nobservers, uint32 nchildren)
void updateAggregateLoc (const ObjectReference &objid, const Vector3f &pos, const AggregateBoundingInfo &bnds)
virtual void commandProperties (const Command::Command &cmd, Command::Commander *cmdr, Command::CommandID cmdid)=0
virtual void commandListHandlers (const Command::Command &cmd, Command::Commander *cmdr, Command::CommandID cmdid)=0
virtual void commandForceRebuild (const Command::Command &cmd, Command::Commander *cmdr, Command::CommandID cmdid)=0
virtual void commandListNodes (const Command::Command &cmd, Command::Commander *cmdr, Command::CommandID cmdid)=0
virtual void commandStats (const Command::Command &cmd, Command::Commander *cmdr, Command::CommandID cmdid)

Static Protected Member Functions

static const std::string & ObjectClassToString (ObjectClass c)
static BoundingBox3f aggregateBBoxes (const BoundingBoxList &bboxes)
static bool velocityIsStatic (const Vector3f &vel)

Protected Attributes

Stats mStats
bool mSeparateDynamicObjects
int mNumQueryHandlers
Duration mMoveToStaticDelay
PintoServerQueriermServerQuerier
float32 mMaxObject
ObjectProxStreamMap mObjectProxStreams
ObjectHostProxStreamMap mObjectHostProxStreams
CBRLocationServiceCachemLocCache
StaticObjectTimeouts mStaticObjectTimeouts
InstanceMethodNotReentrant mQueryHasEventsNotRentrant

Private Types

typedef
std::tr1::unordered_map< UUID,
float32, UUID::Hasher
ObjectSizeMap

Private Attributes

ObjectSizeMap mObjectSizes
Router< Message * > * mProxServerMessageService

Detailed Description

Base class for Libprox-based Proximity implementations, providing a bit of utility code that gets reused across different implementations.


Member Typedef Documentation

typedef std::tr1::unordered_map<UUID, float32, UUID::Hasher> Sirikata::LibproxProximityBase::ObjectSizeMap [private]
typedef Prox::QueryEvent<ObjectProxSimulationTraits> Sirikata::LibproxProximityBase::QueryEvent [protected]

Reimplemented in Sirikata::LibproxProximity.

typedef StaticObjectTimeouts::index<expires_tag>::type Sirikata::LibproxProximityBase::StaticObjectsByExpiration [protected]
typedef StaticObjectTimeouts::index<objid_tag>::type Sirikata::LibproxProximityBase::StaticObjectsByID [protected]
typedef boost::multi_index_container< StaticObjectTimeout, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::tag<objid_tag>, BOOST_MULTI_INDEX_MEMBER(StaticObjectTimeout,ObjectReference,objid) >, boost::multi_index::ordered_non_unique< boost::multi_index::tag<expires_tag>, BOOST_MULTI_INDEX_MEMBER(StaticObjectTimeout,Time,expires) > > > Sirikata::LibproxProximityBase::StaticObjectTimeouts [protected]

Member Enumeration Documentation

Enumerator:
OBJECT_CLASS_STATIC 
OBJECT_CLASS_DYNAMIC 
NUM_OBJECT_CLASSES 

Constructor & Destructor Documentation

Sirikata::LibproxProximityBase::LibproxProximityBase ( SpaceContext ctx,
LocationService locservice,
CoordinateSegmentation cseg,
SpaceNetwork net,
AggregateManager aggmgr 
)
Sirikata::LibproxProximityBase::~LibproxProximityBase ( )

Member Function Documentation

void Sirikata::LibproxProximityBase::addObjectHostProxStreamInfo ( OHDPSST::Stream::Ptr  strm) [protected]
void Sirikata::LibproxProximityBase::addObjectProxStreamInfo ( ODPSST::Stream::Ptr  strm) [protected]
BoundingBox3f Sirikata::LibproxProximityBase::aggregateBBoxes ( const BoundingBoxList &  bboxes) [static, protected]
void Sirikata::LibproxProximityBase::aggregateBoundsUpdated ( const ObjectReference objid,
const Vector3f &  pos,
const AggregateBoundingInfo bnds 
) [protected, virtual]
void Sirikata::LibproxProximityBase::aggregateChildAdded ( const ObjectReference objid,
const ObjectReference child,
const Vector3f &  pos,
const AggregateBoundingInfo bnds 
) [protected, virtual]
void Sirikata::LibproxProximityBase::aggregateChildRemoved ( const ObjectReference objid,
const ObjectReference child,
const Vector3f &  pos,
const AggregateBoundingInfo bnds 
) [protected, virtual]
void Sirikata::LibproxProximityBase::aggregateCreated ( const ObjectReference objid) [protected, virtual]
void Sirikata::LibproxProximityBase::aggregateDestroyed ( const ObjectReference objid) [protected, virtual]
void Sirikata::LibproxProximityBase::aggregateObserved ( const ObjectReference objid,
uint32  nobservers,
uint32  nchildren 
) [protected, virtual]
void Sirikata::LibproxProximityBase::checkObjectClass ( bool  is_local,
const UUID objid,
const TimedMotionVector3f newval 
) [protected]
void Sirikata::LibproxProximityBase::coalesceEvents ( QueryEventList evts,
uint32  per_event 
) [protected]
virtual void Sirikata::LibproxProximityBase::commandForceRebuild ( const Command::Command cmd,
Command::Commander cmdr,
Command::CommandID  cmdid 
) [protected, pure virtual]
virtual void Sirikata::LibproxProximityBase::commandListHandlers ( const Command::Command cmd,
Command::Commander cmdr,
Command::CommandID  cmdid 
) [protected, pure virtual]
virtual void Sirikata::LibproxProximityBase::commandListNodes ( const Command::Command cmd,
Command::Commander cmdr,
Command::CommandID  cmdid 
) [protected, pure virtual]
virtual void Sirikata::LibproxProximityBase::commandProperties ( const Command::Command cmd,
Command::Commander cmdr,
Command::CommandID  cmdid 
) [protected, pure virtual]
void Sirikata::LibproxProximityBase::commandStats ( const Command::Command cmd,
Command::Commander cmdr,
Command::CommandID  cmdid 
) [protected, virtual]
LibproxProximityBase::ProxObjectStreamPtr Sirikata::LibproxProximityBase::getBaseStream ( const ObjectReference oref) const [protected]
LibproxProximityBase::ProxObjectHostStreamPtr Sirikata::LibproxProximityBase::getBaseStream ( const OHDP::NodeID node) const [protected]
void Sirikata::LibproxProximityBase::handleAddObjectLocSubscription ( const UUID subscriber,
const UUID observed 
) [protected]
void Sirikata::LibproxProximityBase::handleAddObjectLocSubscriptionWithID ( const UUID subscriber,
const UUID observed,
ProxIndexID  index_id 
) [protected]
void Sirikata::LibproxProximityBase::handleAddOHLocSubscription ( const OHDP::NodeID subscriber,
const UUID observed 
) [protected]
void Sirikata::LibproxProximityBase::handleAddOHLocSubscriptionWithID ( const OHDP::NodeID subscriber,
const UUID observed,
ProxIndexID  index_id 
) [protected]
void Sirikata::LibproxProximityBase::handleAddServerLocSubscription ( const ServerID &  subscriber,
const UUID observed,
SeqNoPtr  seqPtr 
) [protected]
void Sirikata::LibproxProximityBase::handleAddServerLocSubscriptionWithID ( const ServerID &  subscriber,
const UUID observed,
ProxIndexID  index_id,
SeqNoPtr  seqPtr 
) [protected]
void Sirikata::LibproxProximityBase::handleCheckObjectClass ( bool  is_local,
const ObjectReference objid,
const TimedMotionVector3f newval 
) [protected]
void Sirikata::LibproxProximityBase::handleConnectedServer ( ServerID  sid) [protected, virtual]

Reimplemented in Sirikata::LibproxProximity.

Referenced by onSpaceNetworkConnected().

void Sirikata::LibproxProximityBase::handleDisconnectedServer ( ServerID  sid) [protected, virtual]

Reimplemented in Sirikata::LibproxProximity.

Referenced by onSpaceNetworkDisconnected().

void Sirikata::LibproxProximityBase::handleRemoveAllObjectLocSubscription ( const UUID subscriber) [protected]
void Sirikata::LibproxProximityBase::handleRemoveAllOHLocSubscription ( const OHDP::NodeID subscriber) [protected]
void Sirikata::LibproxProximityBase::handleRemoveAllServerLocSubscription ( const ServerID &  subscriber) [protected]
void Sirikata::LibproxProximityBase::handleRemoveObjectLocSubscription ( const UUID subscriber,
const UUID observed 
) [protected]
void Sirikata::LibproxProximityBase::handleRemoveObjectLocSubscriptionWithID ( const UUID subscriber,
const UUID observed,
ProxIndexID  index_id 
) [protected]
void Sirikata::LibproxProximityBase::handleRemoveOHLocSubscription ( const OHDP::NodeID subscriber,
const UUID observed 
) [protected]
void Sirikata::LibproxProximityBase::handleRemoveOHLocSubscriptionWithID ( const OHDP::NodeID subscriber,
const UUID observed,
ProxIndexID  index_id 
) [protected]
void Sirikata::LibproxProximityBase::handleRemoveServerLocSubscription ( const ServerID &  subscriber,
const UUID observed 
) [protected]
void Sirikata::LibproxProximityBase::handleRemoveServerLocSubscriptionWithID ( const ServerID &  subscriber,
const UUID observed,
ProxIndexID  index_id 
) [protected]
void Sirikata::LibproxProximityBase::localBoundsUpdated ( const UUID uuid,
bool  agg,
const AggregateBoundingInfo newval 
) [virtual]
void Sirikata::LibproxProximityBase::localObjectAdded ( const UUID uuid,
bool  agg,
const TimedMotionVector3f loc,
const TimedMotionQuaternion orient,
const AggregateBoundingInfo bounds,
const String &  mesh,
const String &  physics,
const String &  zernike 
) [virtual]
void Sirikata::LibproxProximityBase::localObjectRemoved ( const UUID uuid,
bool  agg 
) [virtual]
const String & Sirikata::LibproxProximityBase::ObjectClassToString ( ObjectClass  c) [static, protected]
virtual void Sirikata::LibproxProximityBase::onPintoServerLocUpdate ( const LocUpdate &  update) [protected, pure virtual]
virtual void Sirikata::LibproxProximityBase::onPintoServerResult ( const Sirikata::Protocol::Prox::ProximityUpdate &  update) [protected, pure virtual]
void Sirikata::LibproxProximityBase::onSpaceNetworkConnected ( ServerID  sid) [protected, virtual]
void Sirikata::LibproxProximityBase::onSpaceNetworkDisconnected ( ServerID  sid) [protected, virtual]
void Sirikata::LibproxProximityBase::processExpiredStaticObjectTimeouts ( ) [protected]
void Sirikata::LibproxProximityBase::readFramesFromObjectHostStream ( const OHDP::NodeID node,
ProxObjectHostStreamInfo::FrameReceivedCallback  cb 
) [protected]
void Sirikata::LibproxProximityBase::readFramesFromObjectStream ( const ObjectReference oref,
ProxObjectStreamInfo::FrameReceivedCallback  cb 
) [protected]
void Sirikata::LibproxProximityBase::readObjectHostStreamFrame ( String &  payload,
ProxObjectStreamInfo::FrameReceivedCallback  cb 
) [protected]
void Sirikata::LibproxProximityBase::readObjectStreamFrame ( String &  payload,
ProxObjectStreamInfo::FrameReceivedCallback  cb 
) [protected]
void Sirikata::LibproxProximityBase::removeObjectSize ( const UUID obj) [protected]
void Sirikata::LibproxProximityBase::removeStaticObjectTimeout ( const ObjectReference objid) [protected]
void Sirikata::LibproxProximityBase::sendObjectHostResult ( const OHDP::NodeID node,
Sirikata::Protocol::Object::ObjectMessage *  msg 
) [protected]
void Sirikata::LibproxProximityBase::sendObjectResult ( Sirikata::Protocol::Object::ObjectMessage *  msg) [protected]
bool Sirikata::LibproxProximityBase::sendServerMessage ( Message msg) [protected]
void Sirikata::LibproxProximityBase::serverMessageReceived ( Message msg) [protected]
void Sirikata::LibproxProximityBase::start ( ) [virtual]
void Sirikata::LibproxProximityBase::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::Proximity.

Reimplemented in Sirikata::LibproxManualProximity.

virtual void Sirikata::LibproxProximityBase::trySwapHandlers ( bool  is_local,
const ObjectReference objid,
bool  is_static 
) [protected, pure virtual]
void Sirikata::LibproxProximityBase::updateAggregateLoc ( const ObjectReference objid,
const Vector3f &  pos,
const AggregateBoundingInfo bnds 
) [protected]
void Sirikata::LibproxProximityBase::updatedSegmentation ( CoordinateSegmentation cseg,
const std::vector< SegmentationInfo > &  new_seg 
) [protected, virtual]
void Sirikata::LibproxProximityBase::updateObjectSize ( const UUID obj,
float  rad 
) [protected]
bool Sirikata::LibproxProximityBase::validSession ( const OHDP::NodeID node) const [protected]
bool Sirikata::LibproxProximityBase::validSession ( const ObjectReference oref) const [protected]
bool Sirikata::LibproxProximityBase::velocityIsStatic ( const Vector3f &  vel) [static, protected]

Member Data Documentation


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