Sirikata
Public Types | Public Member Functions | Public Attributes | Protected Types | Protected Member Functions | Protected Attributes
Sirikata::Context Class Reference

Base class for Contexts, provides basic infrastructure such as IOServices, IOStrands, Trace, and timing information. More...

#include <Context.hpp>

Inheritance diagram for Sirikata::Context:
Collaboration diagram for Sirikata::Context:

List of all members.

Public Types

enum  ExecutionThreads { IncludeOriginal, AllNew }
 Which threads to execute in. More...

Public Member Functions

 Context (const String &name, Network::IOService *ios, Network::IOStrand *strand, Trace::Trace *_trace, const Time &epoch, const Duration &simlen=Duration::zero())
 ~Context ()
Time epoch () const
Duration sinceEpoch (const Time &rawtime) const
Time simTime (const Duration &sinceStart) const
Time simTime (const Time &rawTime) const
Time simTime () const
Time recentSimTime () const
Time realTime () const
 In a few, rare cases, you'll need the *actual* time representation rather than an offset since the start of simulation.
Time recentRealTime () const
void add (Service *ps)
void remove (Service *ps)
void run (uint32 nthreads=1, ExecutionThreads exthreads=IncludeOriginal)
void shutdown ()
bool stopped () const
void cleanup ()
Trace::Tracetrace () const
Command::Commandercommander () const
void setCommander (Command::Commander *c)

Public Attributes

const String name
Network::IOServiceioService
Network::IOStrandmainStrand
TimeProfilerprofiler
Trace::TimeSeriestimeSeries

Protected Types

typedef std::vector< Service * > ServiceList
typedef std::vector< Thread * > ThreadList

Protected Member Functions

virtual void start ()
virtual void stop ()
void startForceQuitTimer ()
void forceQuit ()
void workerThread ()
void cleanupWorkerThreads ()
void handleSignal (Signal::Type stype)

Protected Attributes

Network::IOTimerPtr mFinishedTimer
Trace::TracemTrace
Command::CommandermCommander
Sirikata::AtomicValue< TimemEpoch
Sirikata::AtomicValue< TimemLastSimTime
Duration mSimDuration
ServiceList mServices
std::tr1::shared_ptr< ThreadmKillThread
Network::IOServicemKillService
Network::IOTimerPtr mKillTimer
Sirikata::AtomicValue< bool > mStopRequested
Signal::HandlerID mSignalHandler
ExecutionThreads mExecutionThreadsType
ThreadList mWorkerThreads

Detailed Description

Base class for Contexts, provides basic infrastructure such as IOServices, IOStrands, Trace, and timing information.


Member Typedef Documentation

typedef std::vector<Service*> Sirikata::Context::ServiceList [protected]
typedef std::vector<Thread*> Sirikata::Context::ThreadList [protected]

Member Enumeration Documentation

Which threads to execute in.

Passed to run() to indicate whether the original thread should be included as one of the requested threads for handling this Context.

Enumerator:
IncludeOriginal 
AllNew 

Constructor & Destructor Documentation

Sirikata::Context::Context ( const String &  name,
Network::IOService ios,
Network::IOStrand strand,
Trace::Trace _trace,
const Time epoch,
const Duration simlen = Duration::zero() 
)
Sirikata::Context::~Context ( )

Member Function Documentation

void Sirikata::Context::add ( Service ps) [inline]
void Sirikata::Context::cleanup ( )
void Sirikata::Context::cleanupWorkerThreads ( ) [protected]

References mWorkerThreads.

Referenced by run(), and shutdown().

Command::Commander* Sirikata::Context::commander ( ) const [inline]
Time Sirikata::Context::epoch ( ) const [inline]
void Sirikata::Context::forceQuit ( ) [inline, protected]

References Sirikata::Logging::fatal, and SILOG.

Referenced by startForceQuitTimer().

void Sirikata::Context::handleSignal ( Signal::Type  stype) [protected]
Time Sirikata::Context::realTime ( ) const [inline]

In a few, rare cases, you'll need the *actual* time representation rather than an offset since the start of simulation.

In those cases, this method gives you the real time, in UTC. Note that this is still in relation to a "global" epoch, so it is still not convertible directly to, e.g. a Unix time. For that you'll need to use Timer::getSpecifiedDate to get a relative offset.

NOTE: Only use these methods if you absolutely have to.

References Sirikata::Timer::getUTCOffset(), and Sirikata::Time::null().

Referenced by Sirikata::OH::SQLiteStorage::acquireLease(), and Sirikata::OH::SQLiteStorage::getLeaseString().

Time Sirikata::Context::recentRealTime ( ) const [inline]
Time Sirikata::Context::recentSimTime ( ) const [inline]
void Sirikata::Context::remove ( Service ps) [inline]
void Sirikata::Context::run ( uint32  nthreads = 1,
ExecutionThreads  exthreads = IncludeOriginal 
)
void Sirikata::Context::setCommander ( Command::Commander c)
void Sirikata::Context::shutdown ( )
Time Sirikata::Context::simTime ( const Time rawTime) const [inline]
Time Sirikata::Context::simTime ( ) const [inline]

References Sirikata::Timer::now().

Referenced by start().

Time Sirikata::Context::simTime ( const Duration sinceStart) const [inline]

References Sirikata::Time::null().

Referenced by Sirikata::CBRLocationServiceCache::addPlaceholderImposter(), Sirikata::LibproxProximityBase::aggregateCreated(), Sirikata::BulletPhysicsService::BulletPhysicsService(), Sirikata::Complete_Cache::checkUpdate(), Sirikata::PintoManager::commandListNodes(), Sirikata::ManualPintoManager::commandListNodes(), Sirikata::LibproxProximity::commandListNodes(), Sirikata::LibproxManualProximity::commandListNodes(), Sirikata::OH::Manual::ObjectQueryHandler::commandListNodes(), Sirikata::MigrationMonitor::computeNextEventTime(), Sirikata::ObjectHost::currentLocalTime(), Sirikata::StandardLocationService::currentOrientation(), Sirikata::BulletPhysicsService::currentOrientation(), Sirikata::StandardLocationService::currentPosition(), Sirikata::BulletPhysicsService::currentPosition(), Sirikata::ObjectHost::currentSpaceTime(), Sirikata::FairServerMessageQueue::disableDownstream(), Sirikata::Server::finishAddObject(), Sirikata::LibproxProximity::generateObjectQueryEvents(), Sirikata::LibproxProximity::generateServerQueryEvents(), Sirikata::Server::handleConnect(), Sirikata::LibproxProximity::handleDisconnectedServer(), Sirikata::TimeSyncServer::handleMessage(), Sirikata::HostedObject::handleProximityUpdate(), Sirikata::SessionManager::handleServerMessages(), Sirikata::TimeSyncClient::handleSyncMessage(), Sirikata::FCache::FCachePropDataStruct::insert(), Sirikata::FCache::insert(), Sirikata::BulletPhysicsService::internalTickCallback(), Sirikata::CraqObjectSegmentation::migrateObject(), Sirikata::SimpleCamera::SimpleCameraObjectScript::moveAction(), Sirikata::FairServerMessageQueue::networkReadyToSend(), Sirikata::LocalPintoServerQuerier::notifyLocUpdate(), Sirikata::LocalPintoServerQuerier::notifyResult(), Sirikata::TimeSyncClient::poll(), Sirikata::Graphics::OgreRenderer::preFrame(), Sirikata::RedisObjectSegmentation::processExpiredObjects(), Sirikata::LibproxManualProximity::queryHasEvents(), Sirikata::LibproxProximity::recomputeAggregateQueryBounds(), Sirikata::LibproxManualProximity::registerOHQueryWithServerHandlers(), Sirikata::LibproxManualProximity::registerOHQueryWithServerIndexHandler(), Sirikata::LibproxManualProximity::registerServerQuery(), Sirikata::SimpleCamera::SimpleCameraObjectScript::rotateAction(), Sirikata::RedisObjectSegmentation::scheduleObjectRefresh(), Sirikata::SessionManager::send(), Sirikata::UniformCoordinateSegmentation::service(), Sirikata::MigrationMonitor::service(), Sirikata::FairServerMessageReceiver::service(), Sirikata::FairServerMessageQueue::service(), Sirikata::BulletPhysicsService::service(), Sirikata::Graphics::OgreSystem::simTime(), Sirikata::SimpleCamera::SimpleCameraObjectScript::stableRotateAction(), Sirikata::RedisObjectSegmentation::startTimeoutHandler(), Sirikata::LibproxProximity::tickQueryHandler(), Sirikata::OH::Manual::ObjectQueryHandler::tickQueryHandler(), Sirikata::LibproxManualProximity::tickQueryHandlers(), Sirikata::LibproxProximityBase::updateAggregateLoc(), Sirikata::BulletRigidBodyObject::updateObjectFromBullet(), Sirikata::BulletPhysicsService::updateObjectFromDeactivation(), Sirikata::FCache::updatePopAndIncrement(), Sirikata::FCache::updatePopNoIncrement(), and Sirikata::MigrationMonitor::waitForNextEvent().

Duration Sirikata::Context::sinceEpoch ( const Time rawtime) const [inline]
void Sirikata::Context::start ( ) [protected, virtual]
void Sirikata::Context::startForceQuitTimer ( ) [protected]
void Sirikata::Context::stop ( ) [protected, virtual]
bool Sirikata::Context::stopped ( ) const [inline]
Trace::Trace* Sirikata::Context::trace ( ) const [inline]
void Sirikata::Context::workerThread ( ) [protected]

References ioService, and Sirikata::Network::IOService::run().

Referenced by run().


Member Data Documentation

Referenced by Sirikata::LibproxProximityBase::aggregateBoundsUpdated(), Sirikata::LibproxProximityBase::aggregateChildAdded(), Sirikata::LibproxProximityBase::aggregateChildRemoved(), Sirikata::LibproxProximityBase::aggregateCreated(), Sirikata::LibproxProximityBase::aggregateDestroyed(), Sirikata::NullAuthenticator::authenticate(), Sirikata::SpaceNodeConnection::connect(), Sirikata::SQLiteObjectFactory::connectObjects(), Sirikata::CSVObjectFactory::connectObjects(), Sirikata::CassandraObjectFactory::connectObjects(), Sirikata::CoordinateSegmentationClient::CoordinateSegmentationClient(), Sirikata::DistributedCoordinateSegmentation::createSocketContainers(), Sirikata::Graphics::WebView::defaultEvent(), Sirikata::LibproxManualProximity::destroyQuery(), Sirikata::DistributedCoordinateSegmentation::DistributedCoordinateSegmentation(), Sirikata::OH::CassandraStorage::executeCommit(), Sirikata::OH::SQLiteStorage::executeCount(), Sirikata::OH::CassandraStorage::executeCount(), Sirikata::JS::JSObjectScriptManager::finishMeshDownload(), Sirikata::AggregateManager::generateAggregateMeshAsync(), Sirikata::LibproxProximity::generateObjectQueryEvents(), Sirikata::OH::Manual::ObjectQueryHandler::generateObjectQueryEvents(), Sirikata::LibproxProximity::generateServerQueryEvents(), Sirikata::SessionManager::getAnySpaceConnection(), Sirikata::BulletPhysicsService::getMeshCallback(), Sirikata::HostedObject::handleConnected(), Sirikata::HostedObject::handleConnectedIndirect(), Sirikata::ObjectHostConnectionManager::handleConnectionEvent(), Sirikata::LocationService::handleLocationUpdateSubstreamRead(), Sirikata::ObjectHostConnectionManager::handleNewConnection(), Sirikata::LibproxProximity::handleRemoveObjectQuery(), Sirikata::OH::Manual::ObjectQueryHandler::handleRemoveObjectQuery(), Sirikata::LibproxProximity::handleRemoveServerQuery(), Sirikata::AggregateManager::handleUploadFinished(), Sirikata::ObjectHost::hostedObjectDestroyed(), Sirikata::Forwarder::initialize(), Sirikata::TCPSpaceNetwork::listen(), Sirikata::JS::JSObjectScriptManager::loadMesh(), Sirikata::LocationService::LocationService(), Sirikata::HostedObject::metadataDownloaded(), Sirikata::ObjectHost::ObjectHost(), Sirikata::OH::Manual::ObjectQueryHandler::onBoundsUpdated(), Sirikata::OH::Manual::ObjectQueryHandler::onEpochUpdated(), Sirikata::OH::Manual::ObjectQueryHandler::onLocationUpdated(), Sirikata::OH::Manual::ObjectQueryHandler::onMeshUpdated(), Sirikata::Server::onObjectHostDisconnected(), Sirikata::Server::onObjectHostMessageReceived(), Sirikata::OH::Manual::ObjectQueryHandler::onOrientationUpdated(), Sirikata::OH::Manual::ObjectQueryHandler::onPhysicsUpdated(), Sirikata::SessionManager::openConnectionStartMigration(), Sirikata::SessionManager::openConnectionStartSession(), Sirikata::Server::osegAddNewFinished(), Sirikata::Server::osegMigrationAcknowledged(), Sirikata::JS::JSObjectScriptManager::parseMeshWork(), Sirikata::OH::CassandraPersistedObjectSet::performUpdate(), Sirikata::OH::SQLitePersistedObjectSet::performUpdateWithRetry(), Sirikata::OH::SQLiteStorage::processTransactions(), Sirikata::LibproxProximityBase::ProxStreamInfo< EndpointType, StreamType >::proxSubstreamCallback(), Sirikata::Graphics::ProxyEntity::ProxyEntity(), Sirikata::LibproxManualProximity::queryHasEvents(), Sirikata::SessionManager::registerSpaceNodeConnection(), Sirikata::LibproxProximityBase::ProxStreamInfo< EndpointType, StreamType >::requestProxSubstream(), Sirikata::SQLiteAuthenticator::respond(), Sirikata::Forwarder::routeObjectMessageToServer(), Sirikata::SessionManager::scheduleHandleServerMessages(), Sirikata::Server::scheduleObjectHostMessageRouting(), Sirikata::Forwarder::scheduleProcessReceivedServerMessages(), Sirikata::SessionManager::sendConnectSuccessAck(), Sirikata::SessionManager::sendDisconnectMessage(), Sirikata::Server::sendSessionMessageWithRetry(), Sirikata::Server::Server(), Sirikata::Graphics::WebView::setReadyCallback(), Sirikata::SessionManager::setupSpaceConnection(), Sirikata::ObjectHostConnectionManager::shutdown(), Sirikata::LocalPintoServerQuerier::start(), start(), Sirikata::OH::Simple::SimpleObjectQueryProcessor::stop(), Sirikata::ObjectSegmentation::trySendMigAcks(), Sirikata::Server::trySendMigrationMessages(), Sirikata::LocalPintoServerQuerier::updateLargestObject(), Sirikata::LocalPintoServerQuerier::updateRegion(), Sirikata::LibproxManualProximity::updateServerQueryResults(), Sirikata::AggregateManager::uploadAggregateMesh(), Sirikata::JS::EmersonMessagingManager::writeData(), Sirikata::LibproxProximityBase::ProxStreamInfo< EndpointType, StreamType >::writeSomeObjectResults(), and Sirikata::OH::Manual::ServerQueryHandler::writeSomeProxData().

Referenced by setCommander().

Referenced by run(), and shutdown().

Referenced by start(), and stop().

Referenced by cleanup(), and startForceQuitTimer().

std::tr1::shared_ptr<Thread> Sirikata::Context::mKillThread [protected]

Referenced by cleanup(), and startForceQuitTimer().

Referenced by cleanup(), and startForceQuitTimer().

Referenced by shutdown().

Referenced by shutdown(), and start().

Referenced by start().

Referenced by run(), and stop().

Referenced by cleanupWorkerThreads(), and run().

Referenced by Context(), and run().


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