OSDN Git Service

[Orc][RPC] Add a class-method version of addHandler to MultiThreadedRPCEndpoint.
authorLang Hames <lhames@gmail.com>
Sun, 8 Jan 2017 00:18:51 +0000 (00:18 +0000)
committerLang Hames <lhames@gmail.com>
Sun, 8 Jan 2017 00:18:51 +0000 (00:18 +0000)
This brings MultiThreadedRPCEndpoint's addHandler API in-line with
SingleThreadedRPCEndpoint's.

This will be tested in an up-coming unit-test for MultiThreadedRPCEndpoint.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@291376 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ExecutionEngine/Orc/RPCUtils.h

index 6e4205c..f90a69a 100644 (file)
@@ -1062,6 +1062,15 @@ public:
                                                std::move(Launch));
   }
 
+  /// Add a class-method as a handler.
+  template <typename Func, typename ClassT, typename RetT, typename... ArgTs>
+  void addHandler(ClassT &Object, RetT (ClassT::*Method)(ArgTs...),
+                  LaunchPolicy Launch = LaunchPolicy()) {
+    addHandler<Func>(
+      detail::MemberFnWrapper<ClassT, RetT, ArgTs...>(Object, Method),
+      Launch);
+  }
+
   /// Negotiate a function id for Func with the other end of the channel.
   template <typename Func> Error negotiateFunction() {
     using OrcRPCNegotiate = typename BaseClass::OrcRPCNegotiate;