diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-11-16 08:31:15 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-11-16 08:31:15 +0000 |
commit | 9e1de33fc99ea60f4b3f43356d0815ff209f049e (patch) | |
tree | bb31541d16e74bbe0f94713e228e06fc1894d094 /staging_vespalib | |
parent | f1a828e7fccfde084e580dc537bd173773a5c3d8 (diff) |
Use std::optional instead of separate class.
Diffstat (limited to 'staging_vespalib')
-rw-r--r-- | staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutor.cpp | 10 | ||||
-rw-r--r-- | staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutor.h | 12 |
2 files changed, 6 insertions, 16 deletions
diff --git a/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutor.cpp b/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutor.cpp index 0c5064ea5b7..954a63978f3 100644 --- a/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutor.cpp +++ b/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutor.cpp @@ -128,11 +128,11 @@ SequencedTaskExecutor::getStats() ISequencedTaskExecutor::ExecutorId SequencedTaskExecutor::getExecutorId(uint64_t componentId) const { - ValidId id = getExecutorIdPerfect(componentId); - return (id.valid()) ? id.id() : getExecutorIdImPerfect(componentId); + auto id = getExecutorIdPerfect(componentId); + return id ? id.value() : getExecutorIdImPerfect(componentId); } -SequencedTaskExecutor::ValidId +std::optional<ISequencedTaskExecutor::ExecutorId> SequencedTaskExecutor::getExecutorIdPerfect(uint64_t componentId) const { PerfectKeyT key = componentId & 0x7fff; ssize_t pos = find(key, _component2IdPerfect.get(), getNumExecutors() * NUM_PERFECT_PER_EXECUTOR); @@ -145,11 +145,11 @@ SequencedTaskExecutor::getExecutorIdPerfect(uint64_t componentId) const { _component2IdPerfect[pos] = key; } else { // There was a race for the last spots - return ValidId(); + return std::optional<ISequencedTaskExecutor::ExecutorId>(); } } } - return ValidId(ExecutorId(pos % getNumExecutors())); + return std::optional<ISequencedTaskExecutor::ExecutorId>(ExecutorId(pos % getNumExecutors())); } ISequencedTaskExecutor::ExecutorId diff --git a/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutor.h b/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutor.h index 64303b05831..06e7fa65ac2 100644 --- a/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutor.h +++ b/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutor.h @@ -43,18 +43,8 @@ public: const vespalib::SyncableThreadExecutor* first_executor() const; private: - class ValidId { - public: - ValidId() : _id(), _valid(false) { } - explicit ValidId(ExecutorId id_in) : _id(id_in), _valid(true) { } - ExecutorId id() const { return _id; } - bool valid() const { return _valid; } - private: - ExecutorId _id; - bool _valid; - }; explicit SequencedTaskExecutor(std::vector<std::unique_ptr<vespalib::SyncableThreadExecutor>> executor); - ValidId getExecutorIdPerfect(uint64_t componentId) const; + std::optional<ExecutorId> getExecutorIdPerfect(uint64_t componentId) const; ExecutorId getExecutorIdImPerfect(uint64_t componentId) const; std::vector<std::unique_ptr<vespalib::SyncableThreadExecutor>> _executors; |