Sirikata
|
Environment is a SpaceModule which provides a simple service for maintaining shared, global state. More...
#include <Environment.hpp>
Classes | |
struct | SubscriberInfo |
Public Member Functions | |
Environment (SpaceContext *ctx) | |
virtual void | start () |
virtual void | stop () |
Private Types | |
typedef std::tr1::shared_ptr < SubscriberInfo > | SubscriberInfoPtr |
typedef std::tr1::unordered_map < ObjectReference, SubscriberInfoPtr, ObjectReference::Hasher > | SubscriberMap |
Private Member Functions | |
virtual void | newSession (ObjectSession *session) |
virtual void | sessionClosed (ObjectSession *session) |
void | handleStream (int err, ODPSST::Stream::Ptr strm) |
void | handleMessage (const ObjectReference &id, MemoryReference data) |
void | sendUpdate (const ObjectReference &id) |
Private Attributes | |
json_spirit::Value | mEnvironment |
SubscriberMap | mSubscribers |
Environment is a SpaceModule which provides a simple service for maintaining shared, global state.
It's useful for creating 'environment' settings for the space, e.g. a skybox, background music, fixed global lighting, etc. It represents the entire environment as a JSON-style object and handles subscriptions to keys within that object on a per-object basis. It isn't proactive -- it will only send updates to objects that have subscribed.
Beware: currently there are no controls on setting values!
typedef std::tr1::shared_ptr<SubscriberInfo> Sirikata::Environment::SubscriberInfoPtr [private] |
typedef std::tr1::unordered_map<ObjectReference, SubscriberInfoPtr, ObjectReference::Hasher> Sirikata::Environment::SubscriberMap [private] |
Sirikata::Environment::Environment | ( | SpaceContext * | ctx | ) |
void Sirikata::Environment::handleMessage | ( | const ObjectReference & | id, |
MemoryReference | data | ||
) | [private] |
References Sirikata::DataReference< T >::begin(), ENV_LOG, Sirikata::Logging::error, Sirikata::Logging::insane, mEnvironment, mSubscribers, sendUpdate(), and Sirikata::DataReference< T >::size().
Referenced by handleStream().
void Sirikata::Environment::handleStream | ( | int | err, |
ODPSST::Stream::Ptr | strm | ||
) | [private] |
References Sirikata::Logging::detailed, ENV_LOG, handleMessage(), mSubscribers, and sendUpdate().
Referenced by newSession().
void Sirikata::Environment::newSession | ( | ObjectSession * | session | ) | [private, virtual] |
Reimplemented from Sirikata::ObjectSessionListener.
References ENVIRONMENT_SERVICE_PORT, Sirikata::ObjectSession::getStream(), and handleStream().
void Sirikata::Environment::sendUpdate | ( | const ObjectReference & | id | ) | [private] |
References ENV_LOG, Sirikata::Logging::insane, mEnvironment, and mSubscribers.
Referenced by handleMessage(), and handleStream().
void Sirikata::Environment::sessionClosed | ( | ObjectSession * | session | ) | [private, virtual] |
Reimplemented from Sirikata::ObjectSessionListener.
References ENVIRONMENT_SERVICE_PORT, and Sirikata::ObjectSession::getStream().
void Sirikata::Environment::start | ( | ) | [virtual] |
void Sirikata::Environment::stop | ( | ) | [virtual] |
json_spirit::Value Sirikata::Environment::mEnvironment [private] |
Referenced by handleMessage(), and sendUpdate().
Referenced by handleMessage(), handleStream(), and sendUpdate().