Sirikata
|
TimeSyncClient communicates with a server for simple time synchronization. More...
#include <TimeSyncClient.hpp>
Public Types | |
typedef std::tr1::function< void()> | UpdatedCallback |
Public Member Functions | |
TimeSyncClient (Context *ctx, OHDP::Service *ohdp_service, const SpaceID &space, const Duration &polling_interval, UpdatedCallback cb=0) | |
~TimeSyncClient () | |
void | addNode (const OHDP::NodeID &ss) |
void | removeNode (const OHDP::NodeID &ss) |
bool | valid () const |
const Duration & | offset () const |
Private Types | |
typedef std::tr1::unordered_set < OHDP::NodeID, OHDP::NodeID::Hasher > | SyncServerSet |
Private Member Functions | |
virtual void | poll () |
Override this method to specify the work to be done when polling. | |
void | handleSyncMessage (const OHDP::Endpoint &src, const OHDP::Endpoint &dst, MemoryReference payload) |
Private Attributes | |
Context * | mContext |
OHDP::Port * | mPort |
SyncServerSet | mServers |
uint8 | mSeqno |
Time | mRequestTimes [256] |
bool | mHasBeenInitialized |
Duration | mOffset |
UpdatedCallback | mCB |
TimeSyncClient communicates with a server for simple time synchronization.
protocol. You give it a Context to get time information from, an ODP::Port to handle messaging, and an ODP::Endpoint for the server to sync with.
typedef std::tr1::unordered_set<OHDP::NodeID, OHDP::NodeID::Hasher> Sirikata::TimeSyncClient::SyncServerSet [private] |
typedef std::tr1::function<void()> Sirikata::TimeSyncClient::UpdatedCallback |
Sirikata::TimeSyncClient::TimeSyncClient | ( | Context * | ctx, |
OHDP::Service * | ohdp_service, | ||
const SpaceID & | space, | ||
const Duration & | polling_interval, | ||
UpdatedCallback | cb = 0 |
||
) |
Sirikata::TimeSyncClient::~TimeSyncClient | ( | ) |
References mPort.
void Sirikata::TimeSyncClient::addNode | ( | const OHDP::NodeID & | ss | ) |
References mServers.
Referenced by Sirikata::SessionManager::handleSpaceConnection().
void Sirikata::TimeSyncClient::handleSyncMessage | ( | const OHDP::Endpoint & | src, |
const OHDP::Endpoint & | dst, | ||
MemoryReference | payload | ||
) | [private] |
References Sirikata::DataReference< T >::data(), Sirikata::Logging::detailed, Sirikata::Logging::error, LOG_INVALID_MESSAGE_BUFFER, mCB, mContext, mHasBeenInitialized, mOffset, mRequestTimes, SILOG, Sirikata::Context::simTime(), and Sirikata::DataReference< T >::size().
Referenced by TimeSyncClient().
const Duration& Sirikata::TimeSyncClient::offset | ( | ) | const [inline] |
void Sirikata::TimeSyncClient::poll | ( | ) | [private, virtual] |
Override this method to specify the work to be done when polling.
Implements Sirikata::PollingService.
References Sirikata::Logging::detailed, Sirikata::XDP::Port< EndpointType >::endpoint(), mContext, mPort, mRequestTimes, mSeqno, mServers, OBJECT_PORT_TIMESYNC, Sirikata::XDP::Port< EndpointType >::send(), Sirikata::serializePBJMessage(), SILOG, and Sirikata::Context::simTime().
void Sirikata::TimeSyncClient::removeNode | ( | const OHDP::NodeID & | ss | ) |
References mServers.
Referenced by Sirikata::SessionManager::handleSpaceConnection().
bool Sirikata::TimeSyncClient::valid | ( | ) | const [inline] |
UpdatedCallback Sirikata::TimeSyncClient::mCB [private] |
Reimplemented from Sirikata::Poller.
Referenced by handleSyncMessage().
Context* Sirikata::TimeSyncClient::mContext [private] |
Referenced by handleSyncMessage(), and poll().
bool Sirikata::TimeSyncClient::mHasBeenInitialized [private] |
Referenced by handleSyncMessage().
Duration Sirikata::TimeSyncClient::mOffset [private] |
Referenced by handleSyncMessage().
OHDP::Port* Sirikata::TimeSyncClient::mPort [private] |
Referenced by poll(), TimeSyncClient(), and ~TimeSyncClient().
Time Sirikata::TimeSyncClient::mRequestTimes[256] [private] |
Referenced by handleSyncMessage(), and poll().
uint8 Sirikata::TimeSyncClient::mSeqno [private] |
Referenced by poll().
Referenced by addNode(), poll(), and removeNode().