summaryrefslogtreecommitdiff
path: root/src/components/rpc_base
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/rpc_base')
-rw-r--r--src/components/rpc_base/include/rpc_base/rpc_base.h2
-rw-r--r--src/components/rpc_base/include/rpc_base/rpc_base_inl.h7
2 files changed, 9 insertions, 0 deletions
diff --git a/src/components/rpc_base/include/rpc_base/rpc_base.h b/src/components/rpc_base/include/rpc_base/rpc_base.h
index 1792262a0f..019f7edc0e 100644
--- a/src/components/rpc_base/include/rpc_base/rpc_base.h
+++ b/src/components/rpc_base/include/rpc_base/rpc_base.h
@@ -393,6 +393,8 @@ class Optional {
const T& operator*() const;
T* operator->();
const T* operator->() const;
+
+ void assign_if_valid(const Optional<T>& value);
// For pointer-like 'if (optional_value)' tests
// Better than operator bool because bool can be implicitly
// casted to integral types
diff --git a/src/components/rpc_base/include/rpc_base/rpc_base_inl.h b/src/components/rpc_base/include/rpc_base/rpc_base_inl.h
index 9a59e169c2..2241a4707b 100644
--- a/src/components/rpc_base/include/rpc_base/rpc_base_inl.h
+++ b/src/components/rpc_base/include/rpc_base/rpc_base_inl.h
@@ -604,6 +604,13 @@ const T* Optional<T>::operator->() const {
}
template<typename T>
+void Optional<T>::assign_if_valid(const Optional<T>& value) {
+ if (value.is_initialized()) {
+ value_ = value.value_;
+ }
+}
+
+template<typename T>
Optional<T>::operator const void*() const {
return is_initialized() ? &value_ : NULL;
}