Sirikata
|
#include <ObjectSegmentation.hpp>
Public Member Functions | |
ObjectSegmentation (SpaceContext *ctx, Network::IOStrand *o_strand) | |
virtual | ~ObjectSegmentation () |
virtual void | start () |
virtual void | stop () |
void | setLookupListener (OSegLookupListener *listener) |
void | setWriteListener (OSegWriteListener *listener) |
virtual OSegEntry | lookup (const UUID &obj_id)=0 |
virtual OSegEntry | cacheLookup (const UUID &obj_id)=0 |
virtual void | migrateObject (const UUID &obj_id, const OSegEntry &new_server_id)=0 |
virtual void | addNewObject (const UUID &obj_id, float radius)=0 |
virtual void | addMigratedObject (const UUID &obj_id, float radius, ServerID idServerAckTo, bool)=0 |
virtual void | removeObject (const UUID &obj_id)=0 |
virtual bool | clearToMigrate (const UUID &obj_id)=0 |
virtual int | getPushback () |
Protected Member Functions | |
void | queueMigAck (const Sirikata::Protocol::OSeg::MigrateMessageAcknowledge &msg) |
void | trySendMigAcks () |
void | handleNewMigAckMessages () |
virtual void | receiveMessage (Message *msg) |
virtual void | handleMigrateMessageAck (const Sirikata::Protocol::OSeg::MigrateMessageAcknowledge &msg)=0 |
virtual void | handleUpdateOSegMessage (const Sirikata::Protocol::OSeg::UpdateOSegMessage &update_oseg_msg)=0 |
Protected Attributes | |
SpaceContext * | mContext |
bool | mStopping |
OSegLookupListener * | mLookupListener |
OSegWriteListener * | mWriteListener |
Network::IOStrand * | oStrand |
Router< Message * > * | mOSegServerMessageService |
Sirikata::ThreadSafeQueueWithNotification < Message * > | mMigAckMessages |
Message * | mFrontMigAck |
Sirikata::ObjectSegmentation::ObjectSegmentation | ( | SpaceContext * | ctx, |
Network::IOStrand * | o_strand | ||
) |
References Sirikata::ServerMessageRouter::createServerMessageService(), mContext, mOSegServerMessageService, Sirikata::ServerMessageDispatcher::registerMessageRecipient(), SERVER_PORT_OSEG_MIGRATE_ACKNOWLEDGE, SERVER_PORT_OSEG_UPDATE, Sirikata::SpaceContext::serverDispatcher(), and Sirikata::SpaceContext::serverRouter().
Sirikata::ObjectSegmentation::~ObjectSegmentation | ( | ) | [virtual] |
References Sirikata::ThreadSafeQueueWithNotification< T >::empty(), mContext, mMigAckMessages, mOSegServerMessageService, Sirikata::ThreadSafeQueueWithNotification< T >::pop(), SERVER_PORT_OSEG_MIGRATE_ACKNOWLEDGE, SERVER_PORT_OSEG_UPDATE, Sirikata::SpaceContext::serverDispatcher(), and Sirikata::ServerMessageDispatcher::unregisterMessageRecipient().
virtual void Sirikata::ObjectSegmentation::addMigratedObject | ( | const UUID & | obj_id, |
float | radius, | ||
ServerID | idServerAckTo, | ||
bool | |||
) | [pure virtual] |
Implemented in Sirikata::CraqObjectSegmentation, Sirikata::LocalObjectSegmentation, and Sirikata::RedisObjectSegmentation.
Referenced by Sirikata::Server::handleMigration(), and Sirikata::Server::processAlreadyMigrating().
virtual void Sirikata::ObjectSegmentation::addNewObject | ( | const UUID & | obj_id, |
float | radius | ||
) | [pure virtual] |
Implemented in Sirikata::CraqObjectSegmentation, Sirikata::LocalObjectSegmentation, and Sirikata::RedisObjectSegmentation.
Referenced by Sirikata::Server::handleConnectAuthResponse().
Implemented in Sirikata::CraqObjectSegmentation, Sirikata::LocalObjectSegmentation, and Sirikata::RedisObjectSegmentation.
Referenced by Sirikata::OSegLookupQueue::cacheLookup(), and Sirikata::OSegLookupQueue::lookup().
virtual bool Sirikata::ObjectSegmentation::clearToMigrate | ( | const UUID & | obj_id | ) | [pure virtual] |
Implemented in Sirikata::CraqObjectSegmentation, Sirikata::LocalObjectSegmentation, and Sirikata::RedisObjectSegmentation.
Referenced by Sirikata::Server::handleMigrationEvent().
virtual int Sirikata::ObjectSegmentation::getPushback | ( | ) | [inline, virtual] |
Reimplemented in Sirikata::CraqObjectSegmentation.
Referenced by Sirikata::OSegLookupQueue::lookup().
virtual void Sirikata::ObjectSegmentation::handleMigrateMessageAck | ( | const Sirikata::Protocol::OSeg::MigrateMessageAcknowledge & | msg | ) | [protected, pure virtual] |
Implemented in Sirikata::CraqObjectSegmentation, Sirikata::LocalObjectSegmentation, and Sirikata::RedisObjectSegmentation.
Referenced by receiveMessage().
void Sirikata::ObjectSegmentation::handleNewMigAckMessages | ( | ) | [protected] |
References trySendMigAcks().
virtual void Sirikata::ObjectSegmentation::handleUpdateOSegMessage | ( | const Sirikata::Protocol::OSeg::UpdateOSegMessage & | update_oseg_msg | ) | [protected, pure virtual] |
Implemented in Sirikata::CraqObjectSegmentation, Sirikata::LocalObjectSegmentation, and Sirikata::RedisObjectSegmentation.
Referenced by receiveMessage().
Implemented in Sirikata::CraqObjectSegmentation, Sirikata::LocalObjectSegmentation, and Sirikata::RedisObjectSegmentation.
Referenced by Sirikata::OSegLookupQueue::lookup().
virtual void Sirikata::ObjectSegmentation::migrateObject | ( | const UUID & | obj_id, |
const OSegEntry & | new_server_id | ||
) | [pure virtual] |
Implemented in Sirikata::CraqObjectSegmentation, Sirikata::LocalObjectSegmentation, and Sirikata::RedisObjectSegmentation.
Referenced by Sirikata::Server::handleMigrationEvent().
void Sirikata::ObjectSegmentation::queueMigAck | ( | const Sirikata::Protocol::OSeg::MigrateMessageAcknowledge & | msg | ) | [protected] |
References Sirikata::SpaceContext::id(), mContext, mMigAckMessages, Sirikata::ThreadSafeQueueWithNotification< T >::push(), Sirikata::serializePBJMessage(), and SERVER_PORT_OSEG_MIGRATE_ACKNOWLEDGE.
Referenced by Sirikata::CraqObjectSegmentation::craqSetResult(), and Sirikata::RedisObjectSegmentation::finishWriteMigratedObject().
void Sirikata::ObjectSegmentation::receiveMessage | ( | Message * | msg | ) | [protected, virtual] |
Implements Sirikata::MessageRecipient.
References Sirikata::Message::dest_port(), Sirikata::Logging::error, handleMigrateMessageAck(), handleUpdateOSegMessage(), oseg, Sirikata::parsePBJMessage(), Sirikata::Message::payload(), SERVER_PORT_OSEG_MIGRATE_ACKNOWLEDGE, SERVER_PORT_OSEG_UPDATE, and SILOG.
virtual void Sirikata::ObjectSegmentation::removeObject | ( | const UUID & | obj_id | ) | [pure virtual] |
Implemented in Sirikata::CraqObjectSegmentation, Sirikata::LocalObjectSegmentation, and Sirikata::RedisObjectSegmentation.
Referenced by Sirikata::Server::handleDisconnect().
void Sirikata::ObjectSegmentation::setLookupListener | ( | OSegLookupListener * | listener | ) | [inline] |
Referenced by Sirikata::OSegLookupQueue::OSegLookupQueue().
void Sirikata::ObjectSegmentation::setWriteListener | ( | OSegWriteListener * | listener | ) | [inline] |
Referenced by Sirikata::Server::Server().
virtual void Sirikata::ObjectSegmentation::start | ( | ) | [inline, virtual] |
Implements Sirikata::Service.
Reimplemented in Sirikata::RedisObjectSegmentation.
virtual void Sirikata::ObjectSegmentation::stop | ( | ) | [inline, virtual] |
Implements Sirikata::Service.
Reimplemented in Sirikata::CraqObjectSegmentation, and Sirikata::RedisObjectSegmentation.
void Sirikata::ObjectSegmentation::trySendMigAcks | ( | ) | [protected] |
References Sirikata::ThreadSafeQueueWithNotification< T >::empty(), Sirikata::Context::mainStrand, mContext, mFrontMigAck, mMigAckMessages, mOSegServerMessageService, mStopping, Sirikata::ThreadSafeQueueWithNotification< T >::pop(), Sirikata::Network::IOStrand::post(), and Sirikata::Router< MessageType >::route().
Referenced by handleNewMigAckMessages().
SpaceContext* Sirikata::ObjectSegmentation::mContext [protected] |
Referenced by Sirikata::RedisObjectSegmentation::addMigratedObject(), Sirikata::LocalObjectSegmentation::addMigratedObject(), Sirikata::CraqObjectSegmentation::addMigratedObject(), Sirikata::RedisObjectSegmentation::addNewObject(), Sirikata::LocalObjectSegmentation::addNewObject(), Sirikata::CraqObjectSegmentation::addNewObject(), Sirikata::CraqObjectSegmentation::beginCraqLookup(), Sirikata::CraqObjectSegmentation::cacheLookup(), Sirikata::RedisObjectSegmentation::connect(), Sirikata::CraqObjectSegmentation::craqSetResult(), Sirikata::RedisObjectSegmentation::finishWriteMigratedObject(), Sirikata::CraqObjectSegmentation::generateAcknowledgeMessage(), Sirikata::CraqObjectSegmentation::lookup(), Sirikata::CraqObjectSegmentation::migrateObject(), ObjectSegmentation(), Sirikata::RedisObjectSegmentation::processExpiredObjects(), Sirikata::CraqObjectSegmentation::processMigrateMessageAcknowledge(), queueMigAck(), Sirikata::RedisObjectSegmentation::refreshObjectTimeout(), Sirikata::RedisObjectSegmentation::scheduleObjectRefresh(), Sirikata::RedisObjectSegmentation::startTimeoutHandler(), trySendMigAcks(), Sirikata::CraqObjectSegmentation::~CraqObjectSegmentation(), and ~ObjectSegmentation().
Message* Sirikata::ObjectSegmentation::mFrontMigAck [protected] |
Referenced by trySendMigAcks().
Sirikata::ThreadSafeQueueWithNotification<Message*> Sirikata::ObjectSegmentation::mMigAckMessages [protected] |
Referenced by queueMigAck(), trySendMigAcks(), and ~ObjectSegmentation().
Router<Message*>* Sirikata::ObjectSegmentation::mOSegServerMessageService [protected] |
Referenced by ObjectSegmentation(), trySendMigAcks(), and ~ObjectSegmentation().
bool Sirikata::ObjectSegmentation::mStopping [protected] |
Referenced by Sirikata::RedisObjectSegmentation::addMigratedObject(), Sirikata::CraqObjectSegmentation::addMigratedObject(), Sirikata::RedisObjectSegmentation::addNewObject(), Sirikata::CraqObjectSegmentation::addNewObject(), Sirikata::CraqObjectSegmentation::beginCraqLookup(), Sirikata::CraqObjectSegmentation::callOsegLookupCompleted(), Sirikata::CraqObjectSegmentation::checkMigratingFromNotCompleteYet(), Sirikata::CraqObjectSegmentation::checkNotFoundData(), Sirikata::RedisObjectSegmentation::clearToMigrate(), Sirikata::CraqObjectSegmentation::clearToMigrate(), Sirikata::CraqObjectSegmentation::craqGetResult(), Sirikata::CraqObjectSegmentation::craqSetResult(), Sirikata::RedisObjectSegmentation::failReadObject(), Sirikata::RedisObjectSegmentation::finishReadObject(), Sirikata::RedisObjectSegmentation::finishWriteMigratedObject(), Sirikata::RedisObjectSegmentation::finishWriteNewObject(), Sirikata::RedisObjectSegmentation::handleMigrateMessageAck(), Sirikata::CraqObjectSegmentation::handleMigrateMessageAck(), Sirikata::CraqObjectSegmentation::handleUpdateOSegMessage(), Sirikata::RedisObjectSegmentation::lookup(), Sirikata::CraqObjectSegmentation::lookup(), Sirikata::RedisObjectSegmentation::migrateObject(), Sirikata::CraqObjectSegmentation::migrateObject(), Sirikata::CraqObjectSegmentation::notFoundFunction(), Sirikata::CraqObjectSegmentation::processMigrateMessageAcknowledge(), Sirikata::CraqObjectSegmentation::processUpdateOSegMessage(), Sirikata::RedisObjectSegmentation::refreshObjectTimeout(), Sirikata::CraqObjectSegmentation::removeFromInTransOrLookup(), Sirikata::CraqObjectSegmentation::removeFromReceivingObjects(), Sirikata::RedisObjectSegmentation::removeObject(), Sirikata::RedisObjectSegmentation::startRead(), Sirikata::RedisObjectSegmentation::startWrite(), and trySendMigAcks().
Referenced by Sirikata::LocalObjectSegmentation::addNewObject(), Sirikata::CraqObjectSegmentation::craqSetResult(), Sirikata::RedisObjectSegmentation::finishWriteNewObject(), Sirikata::RedisObjectSegmentation::handleMigrateMessageAck(), and Sirikata::CraqObjectSegmentation::processMigrateMessageAcknowledge().
Network::IOStrand* Sirikata::ObjectSegmentation::oStrand [protected] |
Referenced by Sirikata::CraqObjectSegmentation::lookup().