CatapultServer  v0.5.0.1 (Elephant)
TimeSynchronizationUtils.h
Go to the documentation of this file.
1 
21 #pragma once
25 #include "catapult/ionet/Node.h"
27 #include "catapult/thread/Task.h"
28 
29 namespace catapult {
30  namespace extensions { class ServiceState; }
31  namespace timesync {
32  struct TimeSynchronizationConfiguration;
33  class TimeSynchronizationState;
34  class TimeSynchronizer;
35  }
36 }
37 
38 namespace catapult { namespace timesync {
39 
41  using TimeSyncRequestResultPair = std::pair<net::NodeRequestResult, CommunicationTimestamps>;
42 
44  using TimeSyncResultSupplier = std::function<thread::future<TimeSyncRequestResultPair> (const ionet::Node&)>;
45 
49  const ionet::NodeSet& nodes,
50  const TimeSyncResultSupplier& resultSupplier,
51  const extensions::ExtensionManager::NetworkTimeSupplier& networkTimeSupplier);
52 
56  TimeSynchronizer& timeSynchronizer,
57  const TimeSynchronizationConfiguration& timeSyncConfig,
58  const TimeSyncResultSupplier& resultSupplier,
59  const extensions::ServiceState& state,
60  TimeSynchronizationState& timeSyncState,
61  const extensions::ExtensionManager::NetworkTimeSupplier& networkTimeSupplier);
62 }}
catapult::extensions::ExtensionManager::NetworkTimeSupplier
supplier< Timestamp > NetworkTimeSupplier
Supplier that returns the network time.
Definition: ExtensionManager.h:36
CommunicationTimestamps.h
constants.h
CATAPULT_LOG
#define CATAPULT_LOG(SEV)
Writes a log entry to the default logger with SEV severity.
Definition: Logging.h:340
catapult::timesync::TimeSynchronizationState::update
void update(TimeOffset offset)
Updates the current offset using offset.
Definition: TimeSynchronizationState.cpp:54
TimeSynchronizationUtils.h
TimeSynchronizationConfiguration.h
catapult::extensions::ServiceState::cache
auto & cache() const
Gets the cache.
Definition: ServiceState.h:99
Parser.debug
def debug(*args)
Definition: Parser.py:46
catapult::ionet::ServiceIdentifier
utils::BaseValue< uint32_t, ServiceIdentifier_tag > ServiceIdentifier
Definition: NodeInfo.h:56
Task.h
NodeRequestResult.h
catapult::timesync::TimeSynchronizer
A time synchronizer that synchronizes local time with the network.
Definition: TimeSynchronizer.h:36
catapult::extensions::SelectNodes
NodeSelectionResult SelectNodes(const ionet::NodeContainer &nodes, const NodeSelectionConfiguration &config, const ImportanceRetriever &importanceRetriever)
Definition: NodeSelector.cpp:175
colorPrint.warning
def warning(*args)
Definition: colorPrint.py:10
catapult::Height
utils::BaseValue< uint64_t, Height_tag > Height
Definition: src/catapult/types.h:85
catapult::Importance
utils::BaseValue< uint64_t, Importance_tag > Importance
Definition: src/catapult/types.h:102
catapult::extensions::ServiceState::storage
auto & storage() const
Gets the storage.
Definition: ServiceState.h:109
TimeSynchronizationSample.h
catapult::thread::when_all
future< std::vector< future< T > > > when_all(std::vector< future< T >> &&allFutures)
Returns a future that is signaled when all futures in allFutures complete.
Definition: FutureUtils.h:31
catapult::extensions::ServiceState::config
const auto & config() const
Gets the config.
Definition: ServiceState.h:89
catapult::timesync::Required_Minimum_Importance
constexpr double Required_Minimum_Importance
Definition: extensions/timesync/src/constants.h:44
catapult::thread::CreateNamedTask
Task CreateNamedTask(const std::string &name, const TaskCallback &callback)
Creates an unscheduled task with name and callback.
Definition: Task.cpp:52
catapult::timesync::TimeSynchronizationSample
Represents a sample in the time synchronization process.
Definition: TimeSynchronizationSample.h:30
catapult::ionet::NodeSet
std::unordered_set< Node, NodeHasher > NodeSet
A set of nodes.
Definition: Node.h:128
catapult::thread::future
Provides a way to access the result of an asynchronous operation.
Definition: Future.h:29
Node.h
catapult::thread::TaskResult::Continue
Task should repeat.
forwardsValidation.info
def info(*args)
Definition: forwardsValidation.py:12
catapult::timesync::TimeSynchronizationSamples
std::set< TimeSynchronizationSample > TimeSynchronizationSamples
A set of time synchronization samples.
Definition: TimeSynchronizationSample.h:83
NodeContainer.h
catapult::timesync::TimeSyncRequestResultPair
std::pair< net::NodeRequestResult, CommunicationTimestamps > TimeSyncRequestResultPair
Time synchronization request result pair.
Definition: TimeSynchronizationUtils.h:41
catapult::timesync::TimeSynchronizationState::nodeAge
NodeAge nodeAge() const
Gets the node age.
Definition: TimeSynchronizationState.cpp:46
Samples
std::vector< TimeSynchronizationSample > Samples
Definition: TimeSynchronizationUtils.cpp:56
catapult::extensions::ServiceState
State that is used as part of service registration.
Definition: ServiceState.h:51
NumValidSamples
std::atomic< size_t > NumValidSamples
Definition: TimeSynchronizationUtils.cpp:57
catapult::extensions::ServiceState::nodes
auto & nodes() const
Gets the nodes.
Definition: ServiceState.h:94
CatapultCache.h
TimeSynchronizationState.h
AccountStateCache.h
CatapultConfiguration.h
catapult::cache::AccountStateCache
Synchronized cache composed of stateful account information.
Definition: AccountStateCache.h:72
catapult::timesync::TimeSynchronizer::calculateTimeOffset
TimeOffset calculateTimeOffset(const cache::AccountStateCacheView &accountStateCacheView, Height height, TimeSynchronizationSamples &&samples, NodeAge nodeAge)
Calculates a time offset from samples using accountStateCacheView, height and nodeAge.
Definition: TimeSynchronizer.cpp:51
catapult::timesync::TimeSynchronizationState
Time synchronization state.
Definition: TimeSynchronizationState.h:37
catapult::timesync::TimeSynchronizationConfiguration
Time synchronization configuration settings.
Definition: TimeSynchronizationConfiguration.h:30
catapult
Definition: AddressExtractionExtension.cpp:28
TimeSynchronizer.h
catapult::timesync::TimeSyncResultSupplier
std::function< thread::future< TimeSyncRequestResultPair >(const ionet::Node &)> TimeSyncResultSupplier
Prototype for a time synchronization result supplier.
Definition: TimeSynchronizationUtils.h:44
ImportanceView.h
BlockStorageCache.h
ExtensionManager.h
ImportanceAwareNodeSelector.h
catapult::ionet::Node
A node in the catapult network.
Definition: Node.h:82
catapult::timesync::RetrieveSamples
thread::future< TimeSynchronizationSamples > RetrieveSamples(const ionet::NodeSet &nodes, const TimeSyncResultSupplier &requestResultFutureSupplier, const NetworkTimeSupplier &networkTimeSupplier)
Definition: TimeSynchronizationUtils.cpp:73
ServiceState.h
catapult::thread::Task
A task that can be dispatched to the scheduler.
Definition: Task.h:45
catapult::timesync::CreateTimeSyncTask
thread::Task CreateTimeSyncTask(TimeSynchronizer &timeSynchronizer, const TimeSynchronizationConfiguration &timeSyncConfig, const TimeSyncResultSupplier &resultSupplier, const extensions::ServiceState &state, TimeSynchronizationState &timeSyncState, const NetworkTimeSupplier &networkTimeSupplier)
Definition: TimeSynchronizationUtils.cpp:112