Make dynamic message Take messages rvalue methods
This commit is contained in:
parent
3b44ef70b6
commit
902a46d14f
src/io/simulator
@ -58,7 +58,7 @@ struct OpaqueMessage {
|
||||
}
|
||||
|
||||
template <Message... Ms>
|
||||
requires(sizeof...(Ms) > 0) std::optional<RequestEnvelope<Ms...>> Take() {
|
||||
requires(sizeof...(Ms) > 0) std::optional<RequestEnvelope<Ms...>> Take() && {
|
||||
std::optional<std::variant<Ms...>> m_opt = VariantFromAny<Ms...>(std::move(message));
|
||||
|
||||
if (m_opt) {
|
||||
@ -111,7 +111,7 @@ class OpaquePromise {
|
||||
OpaquePromise &operator=(const OpaquePromise &) = delete;
|
||||
|
||||
template <typename T>
|
||||
std::unique_ptr<ResponsePromise<T>> Take() {
|
||||
std::unique_ptr<ResponsePromise<T>> Take() && {
|
||||
MG_ASSERT(typeid(T) == *ti_);
|
||||
MG_ASSERT(ptr_ != nullptr);
|
||||
|
||||
|
@ -152,7 +152,7 @@ class SimulatorHandle {
|
||||
|
||||
// TODO(tyler) search for item in can_receive_ that matches the desired types, rather
|
||||
// than asserting that the last item in can_rx matches.
|
||||
auto m_opt = message.Take<Ms...>();
|
||||
auto m_opt = std::move(message).Take<Ms...>();
|
||||
|
||||
blocked_on_receive_ -= 1;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user