Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 86d064c9 authored by Hendrik Wagenaar's avatar Hendrik Wagenaar
Browse files

fix remote_method type conversion for channal handles

* Required for upcoming change that mixes borrowed and local
  channel handles

Bug: None
Test: None
Change-Id: I2efd874d975913133e89eb596af3cc69e793be6b
parent d4639b1e
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -25,8 +25,7 @@ struct Void {};
// Evaluates to true if the method type is <any>(Void), false otherwise.
template <typename RemoteMethodType>
using IsVoidMethod = typename std::integral_constant<
    bool,
    RemoteMethodType::Traits::Arity == 1 &&
    bool, RemoteMethodType::Traits::Arity == 1 &&
              std::is_same<typename RemoteMethodType::Traits::template Arg<0>,
                           Void>::value>;

@@ -274,7 +273,9 @@ template <typename RemoteMethodType, ChannelHandleMode Mode, typename Class,
void DispatchRemoteMethod(
    Class& instance, ChannelHandle<Mode> (Class::*method)(Message&, Args...),
    Message& message, std::size_t max_capacity = InitialBufferCapacity) {
  using Signature = typename RemoteMethodType::template RewriteArgs<Args...>;
  using Signature =
      typename RemoteMethodType::template RewriteSignature<ChannelHandle<Mode>,
                                                           Args...>;
  rpc::ServicePayload<ReceiveBuffer> payload(message);
  payload.Resize(max_capacity);