本文整理汇总了C++中boost::optional::asTimestamp方法的典型用法代码示例。如果您正苦于以下问题:C++ optional::asTimestamp方法的具体用法?C++ optional::asTimestamp怎么用?C++ optional::asTimestamp使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类boost::optional
的用法示例。
在下文中一共展示了optional::asTimestamp方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ScopedCollectionMetadata
boost::optional<ScopedCollectionMetadata> MetadataManager::getActiveMetadata(
std::shared_ptr<MetadataManager> self, const boost::optional<LogicalTime>& atClusterTime) {
stdx::lock_guard<stdx::mutex> lg(_managerLock);
if (_metadata.empty()) {
return boost::none;
}
auto activeMetadataTracker = _metadata.back();
const auto& activeMetadata = activeMetadataTracker->metadata;
// We don't keep routing history for unsharded collections, so if the collection is unsharded
// just return the active metadata
if (!atClusterTime || !activeMetadata.isSharded()) {
return ScopedCollectionMetadata(std::make_shared<RangePreserver>(
lg, std::move(self), std::move(activeMetadataTracker)));
}
auto chunkManager = activeMetadata.getChunkManager();
auto chunkManagerAtClusterTime = std::make_shared<ChunkManager>(
chunkManager->getRoutingHistory(), atClusterTime->asTimestamp());
class MetadataAtTimestamp : public ScopedCollectionMetadata::Impl {
public:
MetadataAtTimestamp(CollectionMetadata metadata) : _metadata(std::move(metadata)) {}
const CollectionMetadata& get() override {
return _metadata;
}
private:
CollectionMetadata _metadata;
};
return ScopedCollectionMetadata(std::make_shared<MetadataAtTimestamp>(
CollectionMetadata(chunkManagerAtClusterTime, activeMetadata.shardId())));
}