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

Add mailbox_element::copy_content_to_message

parent 1a36a50a
......@@ -120,6 +120,10 @@ public:
return x_;
}
operator const value_type&() const {
return x_;
}
private:
// -- address-of-member utility ----------------------------------------------
......
......@@ -75,6 +75,8 @@ public:
message move_content_to_message() override;
message copy_content_to_message() const override;
const type_erased_tuple& content() const;
mailbox_element(mailbox_element&&) = delete;
......@@ -121,6 +123,12 @@ public:
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 {
this->deref();
}
......@@ -147,6 +155,12 @@ public:
auto& xs = this->data();
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
......
......@@ -33,6 +33,8 @@ public:
virtual type_erased_tuple& content() = 0;
virtual message move_content_to_message() = 0;
virtual message copy_content_to_message() const = 0;
};
} // namespace caf
......
......@@ -44,6 +44,10 @@ public:
return std::move(msg_);
}
message copy_content_to_message() const override {
return msg_;
}
private:
/// Stores the content of this mailbox element.
message msg_;
......@@ -81,6 +85,10 @@ message mailbox_element::move_content_to_message() {
return {};
}
message mailbox_element::copy_content_to_message() const {
return {};
}
const type_erased_tuple& mailbox_element::content() const {
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