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

Handles all the basic services provided for objects by a server, including routing and message delivery, proximity services, and object -> server mapping. More...

#include <Server.hpp>

Inheritance diagram for Sirikata::Server:
Collaboration diagram for Sirikata::Server:

List of all members.

Classes

struct  ConnectionIDObjectMessagePair
struct  MigratingObjectConnectionsData
struct  StoredConnection

Public Member Functions

 Server (SpaceContext *ctx, Authenticator *auth, Forwarder *forwarder, LocationService *loc_service, CoordinateSegmentation *cseg, Proximity *prox, ObjectSegmentation *oseg, Address4 oh_listen_addr, ObjectHostSessionManager *oh_sess_mgr, ObjectSessionManager *obj_sess_mgr)
 ~Server ()
virtual void receiveMessage (Message *msg)

Private Types

typedef
std::tr1::unordered_map< UUID,
ObjectConnection
*, UUID::Hasher
ObjectConnectionMap
typedef ObjectConnectionMap MigrationRequestMap
typedef
std::tr1::unordered_map< UUID,
Sirikata::Protocol::Migration::MigrationMessage
*, UUID::Hasher
ObjectMigrationMap
typedef std::queue< Message * > MigrateMessageQueue
typedef std::map< UUID,
MigratingObjectConnectionsData
MigConnectionsMap
typedef std::map< UUID,
StoredConnection
StoredConnectionMap

Private Member Functions

void start ()
void stop ()
virtual void osegMigrationAcknowledged (const UUID &id)
virtual void osegAddNewFinished (const UUID &id, OSegAddNewStatus status)
ODP::DelegatePortcreateDelegateODPPort (ODP::DelegateService *, const SpaceObjectReference &sor, ODP::PortID port)
bool delegateODPPortSend (const ODP::Endpoint &source_ep, const ODP::Endpoint &dest_ep, MemoryReference payload)
OHDP::DelegatePortcreateDelegateOHDPPort (OHDP::DelegateService *, const OHDP::Endpoint &ept)
bool delegateOHDPPortSend (const OHDP::Endpoint &source_ep, const OHDP::Endpoint &dest_ep, MemoryReference payload)
virtual void onObjectHostConnected (const ObjectHostConnectionID &conn_id, const ShortObjectHostConnectionID short_conn_id, OHDPSST::Stream::Ptr stream)
virtual bool onObjectHostMessageReceived (const ObjectHostConnectionID &conn_id, const ShortObjectHostConnectionID short_conn_id, Sirikata::Protocol::Object::ObjectMessage *)
virtual void onObjectHostDisconnected (const ObjectHostConnectionID &conn_id, const ShortObjectHostConnectionID short_conn_id)
void handleMigrationEvent (const UUID &objid)
void startSendMigrationMessages ()
void trySendMigrationMessages ()
void sendSessionMessageWithRetry (const ObjectHostConnectionID &conn, Sirikata::Protocol::Object::ObjectMessage *msg, const Duration &retry_rate)
bool isObjectConnected (const UUID &object_id) const
bool isObjectConnecting (const UUID &object_id) const
void handleObjectHostConnectionClosed (const ObjectHostConnectionID &conn_id)
void scheduleObjectHostMessageRouting ()
void handleObjectHostMessageRouting ()
bool handleSingleObjectHostMessageRouting ()
void handleSessionMessage (const ObjectHostConnectionID &oh_conn_id, Sirikata::Protocol::Object::ObjectMessage *msg)
void handleConnect (const ObjectHostConnectionID &oh_conn_id, const Sirikata::Protocol::Object::ObjectMessage &container, const Sirikata::Protocol::Session::Connect &connect_msg, uint64 seqno)
void handleConnectAuthResponse (const ObjectHostConnectionID &oh_conn_id, const UUID &obj_id, const Sirikata::Protocol::Session::Connect &connect_msg, uint64 seqno, bool authenticated)
void sendConnectSuccess (const ObjectHostConnectionID &oh_conn_id, const UUID &obj_id, uint64 session_request_seqno)
void sendConnectError (const ObjectHostConnectionID &oh_conn_id, const UUID &obj_id, uint64 session_request_seqno)
void handleConnectAck (const ObjectHostConnectionID &oh_conn_id, const Sirikata::Protocol::Object::ObjectMessage &container, uint64 session_request_seqno)
void handleMigrate (const ObjectHostConnectionID &oh_conn_id, const Sirikata::Protocol::Object::ObjectMessage &container, const Sirikata::Protocol::Session::Connect &migrate_msg, uint64 seqno)
void handleMigration (const UUID &obj_id)
void handleDisconnect (UUID obj_id, ObjectConnection *conn, uint64 session_request_seqno)
void killObjectConnection (const UUID &obj_id)
void finishAddObject (const UUID &obj_id, OSegAddNewStatus status)
bool checkAlreadyMigrating (const UUID &obj_id)
void processAlreadyMigrating (const UUID &obj_id)
void newStream (int err, SST::Stream< SpaceObjectReference >::Ptr s)
void commandObjectsCount (const Command::Command &cmd, Command::Commander *cmdr, Command::CommandID cmdid)
void commandObjectsList (const Command::Command &cmd, Command::Commander *cmdr, Command::CommandID cmdid)
void commandObjectsDisconnect (const Command::Command &cmd, Command::Commander *cmdr, Command::CommandID cmdid)

Private Attributes

SpaceContextmContext
TimeSyncServermTimeSyncServer
AuthenticatormAuthenticator
LocationServicemLocationService
CoordinateSegmentationmCSeg
ProximitymProximity
ObjectSegmentationmOSeg
LocalForwardermLocalForwarder
ForwardermForwarder
MigrationMonitormMigrationMonitor
ObjectHostSessionManagermOHSessionManager
ObjectSessionManagermObjectSessionManager
Router< Message * > * mMigrateServerMessageService
bool mMigrationSendRunning
bool mShutdownRequested
ObjectHostConnectionManagermObjectHostConnectionManager
ObjectConnectionMap mObjects
MigrationRequestMap mObjectsAwaitingMigration
ObjectMigrationMap mObjectMigrations
MigrateMessageQueue mMigrateMessages
MigConnectionsMap mMigratingConnections
Timer mMigrationTimer
StoredConnectionMap mStoredConnectionData
boost::mutex mRouteObjectMessageMutex
Sirikata::SizedThreadSafeQueue
< ConnectionIDObjectMessagePair
mRouteObjectMessage
String mTimeSeriesObjects

Detailed Description

Handles all the basic services provided for objects by a server, including routing and message delivery, proximity services, and object -> server mapping.

This is a singleton for each simulated server. Other servers are referenced by their ServerID.


Member Typedef Documentation

typedef std::queue<Message*> Sirikata::Server::MigrateMessageQueue [private]
typedef std::tr1::unordered_map<UUID, ObjectConnection*, UUID::Hasher> Sirikata::Server::ObjectConnectionMap [private]
typedef std::tr1::unordered_map<UUID, Sirikata::Protocol::Migration::MigrationMessage*, UUID::Hasher> Sirikata::Server::ObjectMigrationMap [private]

Constructor & Destructor Documentation

Sirikata::Server::Server ( SpaceContext ctx,
Authenticator auth,
Forwarder forwarder,
LocationService loc_service,
CoordinateSegmentation cseg,
Proximity prox,
ObjectSegmentation oseg,
Address4  oh_listen_addr,
ObjectHostSessionManager oh_sess_mgr,
ObjectSessionManager obj_sess_mgr 
)
Sirikata::Server::~Server ( )

Member Function Documentation

bool Sirikata::Server::checkAlreadyMigrating ( const UUID obj_id) [private]

References mMigratingConnections.

Referenced by handleMigration().

void Sirikata::Server::commandObjectsCount ( const Command::Command cmd,
Command::Commander cmdr,
Command::CommandID  cmdid 
) [private]
void Sirikata::Server::commandObjectsDisconnect ( const Command::Command cmd,
Command::Commander cmdr,
Command::CommandID  cmdid 
) [private]
void Sirikata::Server::commandObjectsList ( const Command::Command cmd,
Command::Commander cmdr,
Command::CommandID  cmdid 
) [private]
ODP::DelegatePort * Sirikata::Server::createDelegateODPPort ( ODP::DelegateService ,
const SpaceObjectReference sor,
ODP::PortID  port 
) [private]

References delegateODPPortSend().

OHDP::DelegatePort * Sirikata::Server::createDelegateOHDPPort ( OHDP::DelegateService ,
const OHDP::Endpoint ept 
) [private]
bool Sirikata::Server::delegateODPPortSend ( const ODP::Endpoint source_ep,
const ODP::Endpoint dest_ep,
MemoryReference  payload 
) [private]
bool Sirikata::Server::delegateOHDPPortSend ( const OHDP::Endpoint source_ep,
const OHDP::Endpoint dest_ep,
MemoryReference  payload 
) [private]
void Sirikata::Server::finishAddObject ( const UUID obj_id,
OSegAddNewStatus  status 
) [private]
void Sirikata::Server::handleConnect ( const ObjectHostConnectionID oh_conn_id,
const Sirikata::Protocol::Object::ObjectMessage &  container,
const Sirikata::Protocol::Session::Connect &  connect_msg,
uint64  seqno 
) [private]
void Sirikata::Server::handleConnectAck ( const ObjectHostConnectionID oh_conn_id,
const Sirikata::Protocol::Object::ObjectMessage &  container,
uint64  session_request_seqno 
) [private]
void Sirikata::Server::handleConnectAuthResponse ( const ObjectHostConnectionID oh_conn_id,
const UUID obj_id,
const Sirikata::Protocol::Session::Connect &  connect_msg,
uint64  seqno,
bool  authenticated 
) [private]
void Sirikata::Server::handleDisconnect ( UUID  obj_id,
ObjectConnection conn,
uint64  session_request_seqno 
) [private]
void Sirikata::Server::handleMigrate ( const ObjectHostConnectionID oh_conn_id,
const Sirikata::Protocol::Object::ObjectMessage &  container,
const Sirikata::Protocol::Session::Connect &  migrate_msg,
uint64  seqno 
) [private]
void Sirikata::Server::handleMigration ( const UUID obj_id) [private]
void Sirikata::Server::handleMigrationEvent ( const UUID objid) [private]

References Sirikata::Server::MigratingObjectConnectionsData::bnds, Sirikata::LocationService::bounds(), Sirikata::ObjectSegmentation::clearToMigrate(), Sirikata::ObjectConnection::connID(), Sirikata::createObjectMessage(), Sirikata::LocationService::currentPosition(), Sirikata::Logging::detailed, Sirikata::Timer::elapsed(), Sirikata::Proximity::generateMigrationData(), Sirikata::Forwarder::getObjectConnection(), Sirikata::SpaceContext::id(), Sirikata::Server::MigratingObjectConnectionsData::loc, Sirikata::LocationService::location(), Sirikata::CoordinateSegmentation::lookup(), mContext, mCSeg, Sirikata::LocationService::mesh(), mForwarder, Sirikata::ObjectSegmentation::migrateObject(), Sirikata::Server::MigratingObjectConnectionsData::migratingTo, Sirikata::Proximity::migrationClientTag(), Sirikata::Server::MigratingObjectConnectionsData::milliseconds, mLocalForwarder, mLocationService, mMigrateMessages, mMigratingConnections, mMigrationTimer, mObjects, mObjectSessionManager, mOSeg, mProximity, mTimeSeriesObjects, Sirikata::UUID::null(), obj, Sirikata::Server::MigratingObjectConnectionsData::obj_conner, OBJECT_PORT_SESSION, Sirikata::LocationService::orientation(), Sirikata::TimedMotionQuaternion::position(), Sirikata::TimedMotionVector< MotionVectorType >::position(), Sirikata::LocalForwarder::removeActiveConnection(), Sirikata::LocationService::removeLocalObject(), Sirikata::ObjectSessionManager::removeSession(), Sirikata::Trace::TimeSeries::report(), sendSessionMessageWithRetry(), Sirikata::serializePBJMessage(), SERVER_PORT_MIGRATION, Sirikata::Server::MigratingObjectConnectionsData::serviceConnection, Sirikata::ObjectConnection::sessionID(), SPACE_LOG, startSendMigrationMessages(), Sirikata::Context::timeSeries, Sirikata::UUID::toString(), Sirikata::Server::MigratingObjectConnectionsData::uniqueConnId, Sirikata::TimedMotionQuaternion::updateTime(), Sirikata::TimedMotionVector< MotionVectorType >::updateTime(), Sirikata::TimedMotionQuaternion::velocity(), and Sirikata::TimedMotionVector< MotionVectorType >::velocity().

Referenced by Server().

void Sirikata::Server::handleObjectHostConnectionClosed ( const ObjectHostConnectionID conn_id) [private]
void Sirikata::Server::handleObjectHostMessageRouting ( ) [private]
void Sirikata::Server::handleSessionMessage ( const ObjectHostConnectionID oh_conn_id,
Sirikata::Protocol::Object::ObjectMessage *  msg 
) [private]
bool Sirikata::Server::handleSingleObjectHostMessageRouting ( ) [private]
bool Sirikata::Server::isObjectConnected ( const UUID object_id) const [private]

References mObjects.

Referenced by handleConnectAuthResponse(), and handleMigrate().

bool Sirikata::Server::isObjectConnecting ( const UUID object_id) const [private]
void Sirikata::Server::killObjectConnection ( const UUID obj_id) [private]
void Sirikata::Server::newStream ( int  err,
SST::Stream< SpaceObjectReference >::Ptr  s 
) [private]
void Sirikata::Server::onObjectHostConnected ( const ObjectHostConnectionID conn_id,
const ShortObjectHostConnectionID  short_conn_id,
OHDPSST::Stream::Ptr  stream 
) [private, virtual]
void Sirikata::Server::onObjectHostDisconnected ( const ObjectHostConnectionID conn_id,
const ShortObjectHostConnectionID  short_conn_id 
) [private, virtual]
bool Sirikata::Server::onObjectHostMessageReceived ( const ObjectHostConnectionID conn_id,
const ShortObjectHostConnectionID  short_conn_id,
Sirikata::Protocol::Object::ObjectMessage *  obj_msg 
) [private, virtual]
void Sirikata::Server::osegAddNewFinished ( const UUID id,
OSegAddNewStatus  status 
) [private, virtual]
void Sirikata::Server::osegMigrationAcknowledged ( const UUID id) [private, virtual]
void Sirikata::Server::processAlreadyMigrating ( const UUID obj_id) [private]
void Sirikata::Server::receiveMessage ( Message msg) [virtual]
void Sirikata::Server::scheduleObjectHostMessageRouting ( ) [private]
void Sirikata::Server::sendConnectError ( const ObjectHostConnectionID oh_conn_id,
const UUID obj_id,
uint64  session_request_seqno 
) [private]
void Sirikata::Server::sendConnectSuccess ( const ObjectHostConnectionID oh_conn_id,
const UUID obj_id,
uint64  session_request_seqno 
) [private]
void Sirikata::Server::sendSessionMessageWithRetry ( const ObjectHostConnectionID conn,
Sirikata::Protocol::Object::ObjectMessage *  msg,
const Duration retry_rate 
) [private]
void Sirikata::Server::start ( ) [private, virtual]
void Sirikata::Server::startSendMigrationMessages ( ) [private]
void Sirikata::Server::stop ( ) [private, virtual]
void Sirikata::Server::trySendMigrationMessages ( ) [private]

Member Data Documentation

Referenced by handleConnect().

Referenced by handleConnect(), Server(), and ~Server().

Referenced by stop(), and trySendMigrationMessages().

Referenced by Server(), and ~Server().


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