aboutsummaryrefslogtreecommitdiffstats
path: root/staging_vespalib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-11-16 08:31:15 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2021-11-16 08:31:15 +0000
commit9e1de33fc99ea60f4b3f43356d0815ff209f049e (patch)
treebb31541d16e74bbe0f94713e228e06fc1894d094 /staging_vespalib
parentf1a828e7fccfde084e580dc537bd173773a5c3d8 (diff)
Use std::optional instead of separate class.
Diffstat (limited to 'staging_vespalib')
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutor.cpp10
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutor.h12
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;