Commit 84ff0158 authored by Dominik Charousset's avatar Dominik Charousset

Add mailbox_element::copy_content_to_message

parent 1a36a50a
...@@ -120,6 +120,10 @@ public: ...@@ -120,6 +120,10 @@ public:
return x_; return x_;
} }
operator const value_type&() const {
return x_;
}
private: private:
// -- address-of-member utility ---------------------------------------------- // -- address-of-member utility ----------------------------------------------
......
...@@ -75,6 +75,8 @@ public: ...@@ -75,6 +75,8 @@ public:
message move_content_to_message() override; message move_content_to_message() override;
message copy_content_to_message() const override;
const type_erased_tuple& content() const; const type_erased_tuple& content() const;
mailbox_element(mailbox_element&&) = delete; mailbox_element(mailbox_element&&) = delete;
...@@ -121,6 +123,12 @@ public: ...@@ -121,6 +123,12 @@ public:
return detail::apply_moved_args(f, detail::get_indices(xs), xs); return detail::apply_moved_args(f, detail::get_indices(xs), xs);
} }
message copy_content_to_message() const override {
message_factory f;
auto& xs = this->data();
return detail::apply_args(f, detail::get_indices(xs), xs);
}
void dispose() noexcept { void dispose() noexcept {
this->deref(); this->deref();
} }
...@@ -147,6 +155,12 @@ public: ...@@ -147,6 +155,12 @@ public:
auto& xs = this->data(); auto& xs = this->data();
return detail::apply_moved_args(f, detail::get_indices(xs), xs); return detail::apply_moved_args(f, detail::get_indices(xs), xs);
} }
message copy_content_to_message() const override {
message_factory f;
auto& xs = this->data();
return detail::apply_args(f, detail::get_indices(xs), xs);
}
}; };
/// @relates mailbox_element /// @relates mailbox_element
......
...@@ -33,6 +33,8 @@ public: ...@@ -33,6 +33,8 @@ public:
virtual type_erased_tuple& content() = 0; virtual type_erased_tuple& content() = 0;
virtual message move_content_to_message() = 0; virtual message move_content_to_message() = 0;
virtual message copy_content_to_message() const = 0;
}; };
} // namespace caf } // namespace caf
......
...@@ -44,6 +44,10 @@ public: ...@@ -44,6 +44,10 @@ public:
return std::move(msg_); return std::move(msg_);
} }
message copy_content_to_message() const override {
return msg_;
}
private: private:
/// Stores the content of this mailbox element. /// Stores the content of this mailbox element.
message msg_; message msg_;
...@@ -81,6 +85,10 @@ message mailbox_element::move_content_to_message() { ...@@ -81,6 +85,10 @@ message mailbox_element::move_content_to_message() {
return {}; return {};
} }
message mailbox_element::copy_content_to_message() const {
return {};
}
const type_erased_tuple& mailbox_element::content() const { const type_erased_tuple& mailbox_element::content() const {
return const_cast<mailbox_element*>(this)->content(); return const_cast<mailbox_element*>(this)->content();
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment