diff options
-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; |