Home | History | Annotate | Download | only in Orc

Lines Matching refs:Func

85 /// template <typename Func> T allocate():
86 /// Allocate a unique id for function Func.
99 template <typename Func> T allocate() { return NextId++; }
794 /// Negotiate a function id for Func with the other end of the channel.
795 template <typename Func> Error negotiateFunction(bool Retry = false) {
796 return getRemoteFunctionId<Func>(true, Retry).takeError();
799 /// Append a call Func, does not call send on the channel.
801 /// function returns. The handler should take an Expected<Func::ReturnType>,
802 /// or an Error (if Func::ReturnType is void). The handler will be called
804 template <typename Func, typename HandlerT, typename... ArgTs>
808 detail::RPCArgTypeCheck<CanSerializeCheck, typename Func::Type,
814 if (auto FnIdOrErr = getRemoteFunctionId<Func>(LazyAutoNegotiation, false))
838 detail::createResponseHandler<ChannelT, typename Func::ReturnType>(
849 if (auto Err = detail::HandlerTraits<typename Func::Type>::serializeArgs(
866 template <typename Func, typename HandlerT, typename... ArgTs>
868 if (auto Err = appendCallAsync<Func>(std::move(Handler), Args...))
929 template <typename Func>
931 auto IdItr = LocalFunctionIds.find(Func::getPrototype());
953 template <typename Func, typename HandlerT>
957 CanDeserializeCheck, typename Func::Type,
961 Func>();
962 LocalFunctionIds[Func::getPrototype()] = NewFnId;
963 Handlers[NewFnId] = wrapHandler<Func>(std::move(Handler));
966 template <typename Func, typename HandlerT>
970 CanDeserializeCheck, typename Func::Type,
976 FunctionIdT NewFnId = FnIdAllocator.template allocate<Func>();
977 LocalFunctionIds[Func::getPrototype()] = NewFnId;
978 Handlers[NewFnId] = wrapAsyncHandler<Func>(std::move(Handler));
1021 template <typename Func>
1027 auto I = RemoteFunctionIds.find(Func::getPrototype());
1036 // We don't have a function id for Func yet, but we're allowed to try to
1041 Impl.template callB<OrcRPCNegotiate>(Func::getPrototype())) {
1042 RemoteFunctionIds[Func::getPrototype()] = *RemoteIdOrErr;
1044 return make_error<RPCFunctionNotSupported>(Func::getPrototype());
1052 return make_error<RPCFunctionNotSupported>(Func::getPrototype());
1059 template <typename Func, typename HandlerT>
1070 detail::HandlerTraits<typename Func::Type>::deserializeArgs(
1084 using FuncReturn = typename Func::ReturnType;
1092 template <typename Func, typename HandlerT>
1104 detail::HandlerTraits<typename Func::Type>::deserializeArgs(
1118 using FuncReturn = typename Func::ReturnType;
1168 template <typename Func, typename HandlerT>
1170 return this->template addHandlerImpl<Func>(std::move(Handler));
1174 template <typename Func, typename ClassT, typename RetT, typename... ArgTs>
1176 addHandler<Func>(
1180 template <typename Func, typename HandlerT>
1182 return this->template addAsyncHandlerImpl<Func>(std::move(Handler));
1186 template <typename Func, typename ClassT, typename RetT, typename... ArgTs>
1188 addAsyncHandler<Func>(
1193 template <typename Func>
1195 typename Func::ReturnType>::ReturnFutureType;
1197 /// Call Func on Channel C. Does not block, does not call send. Returns a pair
1204 template <typename Func, typename... ArgTs>
1205 Expected<NonBlockingCallResult<Func>> appendCallNB(const ArgTs &... Args) {
1206 using RTraits = detail::ResultTraits<typename Func::ReturnType>;
1215 if (auto Err = this->template appendCallAsync<Func>(
1229 template <typename Func, typename... ArgTs>
1230 Expected<NonBlockingCallResult<Func>> callNB(const ArgTs &... Args) {
1231 auto Result = appendCallNB<Func>(Args...);
1236 detail::ResultTraits<typename Func::ReturnType>::consumeAbandoned(
1243 /// Call Func on Channel C. Blocks waiting for a result. Returns an Error
1248 template <typename Func, typename... ArgTs,
1249 typename AltRetT = typename Func::ReturnType>
1252 if (auto FutureResOrErr = callNB<Func>(Args...))
1283 template <typename Func, typename HandlerT>
1285 return this->template addHandlerImpl<Func>(std::move(Handler));
1288 template <typename Func, typename ClassT, typename RetT, typename... ArgTs>
1290 addHandler<Func>(
1294 template <typename Func, typename HandlerT>
1296 return this->template addAsyncHandlerImpl<Func>(std::move(Handler));
1300 template <typename Func, typename ClassT, typename RetT, typename... ArgTs>
1302 addAsyncHandler<Func>(
1306 template <typename Func, typename... ArgTs,
1307 typename AltRetT = typename Func::ReturnType>
1318 if (auto Err = this->template appendCallAsync<Func>(
1325 detail::ResultTraits<typename Func::ReturnType>::consumeAbandoned(
1332 detail::ResultTraits<typename Func::ReturnType>::consumeAbandoned(
1343 template <typename RPCClass, typename Func>
1350 return Endpoint.template appendCallAsync<Func>(std::move(Handler), Args...);
1357 /// Construct an asynchronous dispatcher from an RPC endpoint and a Func.
1358 template <typename Func, typename RPCEndpointT>
1359 RPCAsyncDispatch<RPCEndpointT, Func> rpcAsyncDispatch(RPCEndpointT &Endpoint) {
1360 return RPCAsyncDispatch<RPCEndpointT, Func>(Endpoint);
1436 template <typename Func, typename... Funcs>
1437 class APICalls<Func, Funcs...> {
1443 static const bool value = std::is_same<F, Func>::value |
1449 if (auto Err = R.template negotiateFunction<Func>())