1 /**
2  * Autogenerated by Thrift for src/module.thrift
3  *
4  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5  *  @generated @nocommit
6  */
7 #pragma once
8 
9 #include <thrift/lib/cpp2/gen/client_h.h>
10 
11 #include "thrift/compiler/test/fixtures/basic-stack-arguments/gen-cpp2/module_types.h"
12 
13 namespace apache { namespace thrift {
14   class Cpp2RequestContext;
15   namespace detail { namespace ac { struct ClientRequestContext; }}
16   namespace transport { class THeader; }
17 }}
18 
19 namespace cpp2 {
20 
21 class MyServiceFastAsyncClient : public apache::thrift::GeneratedAsyncClient {
22  public:
23   using apache::thrift::GeneratedAsyncClient::GeneratedAsyncClient;
24 
getServiceName()25   char const* getServiceName() const noexcept override {
26     return "MyServiceFast";
27   }
28 
29 
30   virtual void hasDataById(std::unique_ptr<apache::thrift::RequestCallback> callback, ::std::int64_t p_id);
31   virtual void hasDataById(apache::thrift::RpcOptions& rpcOptions, std::unique_ptr<apache::thrift::RequestCallback> callback, ::std::int64_t p_id);
32  protected:
33   void hasDataByIdImpl(apache::thrift::RpcOptions& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, ::std::int64_t p_id, bool stealRpcOptions = false);
34  public:
35 
36   virtual bool sync_hasDataById(::std::int64_t p_id);
37   virtual bool sync_hasDataById(apache::thrift::RpcOptions& rpcOptions, ::std::int64_t p_id);
38 
39   virtual folly::Future<bool> future_hasDataById(::std::int64_t p_id);
40   virtual folly::SemiFuture<bool> semifuture_hasDataById(::std::int64_t p_id);
41   virtual folly::Future<bool> future_hasDataById(apache::thrift::RpcOptions& rpcOptions, ::std::int64_t p_id);
42   virtual folly::SemiFuture<bool> semifuture_hasDataById(apache::thrift::RpcOptions& rpcOptions, ::std::int64_t p_id);
43   virtual folly::Future<std::pair<bool, std::unique_ptr<apache::thrift::transport::THeader>>> header_future_hasDataById(apache::thrift::RpcOptions& rpcOptions, ::std::int64_t p_id);
44   virtual folly::SemiFuture<std::pair<bool, std::unique_ptr<apache::thrift::transport::THeader>>> header_semifuture_hasDataById(apache::thrift::RpcOptions& rpcOptions, ::std::int64_t p_id);
45   FOLLY_NODISCARD [[deprecated("To be replaced by new API soon")]] virtual folly::Try<apache::thrift::RpcResponseComplete<bool>> sync_complete_hasDataById(
46       apache::thrift::RpcOptions&& rpcOptions,  ::std::int64_t p_id);
47 
48 #if FOLLY_HAS_COROUTINES
49   template <int = 0>
co_hasDataById(::std::int64_t p_id)50   folly::coro::Task<bool> co_hasDataById(::std::int64_t p_id) {
51     return co_hasDataById<false>(nullptr, p_id);
52   }
53   template <int = 0>
co_hasDataById(apache::thrift::RpcOptions & rpcOptions,::std::int64_t p_id)54   folly::coro::Task<bool> co_hasDataById(apache::thrift::RpcOptions& rpcOptions, ::std::int64_t p_id) {
55     return co_hasDataById<true>(&rpcOptions, p_id);
56   }
57  private:
58   template <bool hasRpcOptions>
co_hasDataById(apache::thrift::RpcOptions * rpcOptions,::std::int64_t p_id)59   folly::coro::Task<bool> co_hasDataById(apache::thrift::RpcOptions* rpcOptions, ::std::int64_t p_id) {
60     const folly::CancellationToken& cancelToken =
61         co_await folly::coro::co_current_cancellation_token;
62     const bool cancellable = cancelToken.canBeCancelled();
63     apache::thrift::ClientReceiveState returnState;
64     apache::thrift::ClientSyncCallback<false> callback(&returnState);
65     auto protocolId = apache::thrift::GeneratedAsyncClient::getChannel()->getProtocolId();
66     auto [ctx, header] = hasDataByIdCtx(rpcOptions);
67     using CancellableCallback = apache::thrift::CancellableRequestClientCallback<false>;
68     auto cancellableCallback = cancellable ? CancellableCallback::create(&callback, channel_) : nullptr;
69     static apache::thrift::RpcOptions defaultRpcOptions;
70     auto wrappedCallback = apache::thrift::RequestClientCallback::Ptr(cancellableCallback ? (apache::thrift::RequestClientCallback*)cancellableCallback.get() : &callback);
71     if constexpr (hasRpcOptions) {
72       hasDataByIdImpl(*rpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_id);
73     } else {
74       hasDataByIdImpl(defaultRpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_id);
75     }
76     if (cancellable) {
77       folly::CancellationCallback cb(cancelToken, [&] { CancellableCallback::cancel(std::move(cancellableCallback)); });
78       co_await callback.co_waitUntilDone();
79     } else {
80       co_await callback.co_waitUntilDone();
81     }
82     if (returnState.isException()) {
83       co_yield folly::coro::co_error(std::move(returnState.exception()));
84     }
85     returnState.resetProtocolId(protocolId);
86     returnState.resetCtx(std::move(ctx));
87     SCOPE_EXIT {
88       if (hasRpcOptions && returnState.header()) {
89         auto* rheader = returnState.header();
90         if (!rheader->getHeaders().empty()) {
91           rpcOptions->setReadHeaders(rheader->releaseHeaders());
92         }
93         rpcOptions->setRoutingData(rheader->releaseRoutingData());
94       }
95     };
96     bool _return;
97     if (auto ew = recv_wrapped_hasDataById(_return, returnState)) {
98       co_yield folly::coro::co_error(std::move(ew));
99     }
100     co_return _return;
101   }
102  public:
103 #endif // FOLLY_HAS_COROUTINES
104 
105   virtual void hasDataById(folly::Function<void (::apache::thrift::ClientReceiveState&&)> callback, ::std::int64_t p_id);
106 
107 
108   static folly::exception_wrapper recv_wrapped_hasDataById(bool& _return, ::apache::thrift::ClientReceiveState& state);
109   static bool recv_hasDataById(::apache::thrift::ClientReceiveState& state);
110   // Mock friendly virtual instance method
111   virtual bool recv_instance_hasDataById(::apache::thrift::ClientReceiveState& state);
112   virtual folly::exception_wrapper recv_instance_wrapped_hasDataById(bool& _return, ::apache::thrift::ClientReceiveState& state);
113  private:
114   template <typename Protocol_, typename RpcOptions>
115   void hasDataByIdT(Protocol_* prot, RpcOptions&& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, ::std::int64_t p_id);
116   std::pair<std::unique_ptr<::apache::thrift::ContextStack>, std::shared_ptr<::apache::thrift::transport::THeader>> hasDataByIdCtx(apache::thrift::RpcOptions* rpcOptions);
117  public:
118   virtual void getDataById(std::unique_ptr<apache::thrift::RequestCallback> callback, ::std::int64_t p_id);
119   virtual void getDataById(apache::thrift::RpcOptions& rpcOptions, std::unique_ptr<apache::thrift::RequestCallback> callback, ::std::int64_t p_id);
120  protected:
121   void getDataByIdImpl(apache::thrift::RpcOptions& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, ::std::int64_t p_id, bool stealRpcOptions = false);
122  public:
123 
124   virtual void sync_getDataById(::std::string& _return, ::std::int64_t p_id);
125   virtual void sync_getDataById(apache::thrift::RpcOptions& rpcOptions, ::std::string& _return, ::std::int64_t p_id);
126 
127   virtual folly::Future<::std::string> future_getDataById(::std::int64_t p_id);
128   virtual folly::SemiFuture<::std::string> semifuture_getDataById(::std::int64_t p_id);
129   virtual folly::Future<::std::string> future_getDataById(apache::thrift::RpcOptions& rpcOptions, ::std::int64_t p_id);
130   virtual folly::SemiFuture<::std::string> semifuture_getDataById(apache::thrift::RpcOptions& rpcOptions, ::std::int64_t p_id);
131   virtual folly::Future<std::pair<::std::string, std::unique_ptr<apache::thrift::transport::THeader>>> header_future_getDataById(apache::thrift::RpcOptions& rpcOptions, ::std::int64_t p_id);
132   virtual folly::SemiFuture<std::pair<::std::string, std::unique_ptr<apache::thrift::transport::THeader>>> header_semifuture_getDataById(apache::thrift::RpcOptions& rpcOptions, ::std::int64_t p_id);
133   FOLLY_NODISCARD [[deprecated("To be replaced by new API soon")]] virtual folly::Try<apache::thrift::RpcResponseComplete<::std::string>> sync_complete_getDataById(
134       apache::thrift::RpcOptions&& rpcOptions,  ::std::int64_t p_id);
135 
136 #if FOLLY_HAS_COROUTINES
137   template <int = 0>
co_getDataById(::std::int64_t p_id)138   folly::coro::Task<::std::string> co_getDataById(::std::int64_t p_id) {
139     return co_getDataById<false>(nullptr, p_id);
140   }
141   template <int = 0>
co_getDataById(apache::thrift::RpcOptions & rpcOptions,::std::int64_t p_id)142   folly::coro::Task<::std::string> co_getDataById(apache::thrift::RpcOptions& rpcOptions, ::std::int64_t p_id) {
143     return co_getDataById<true>(&rpcOptions, p_id);
144   }
145  private:
146   template <bool hasRpcOptions>
co_getDataById(apache::thrift::RpcOptions * rpcOptions,::std::int64_t p_id)147   folly::coro::Task<::std::string> co_getDataById(apache::thrift::RpcOptions* rpcOptions, ::std::int64_t p_id) {
148     const folly::CancellationToken& cancelToken =
149         co_await folly::coro::co_current_cancellation_token;
150     const bool cancellable = cancelToken.canBeCancelled();
151     apache::thrift::ClientReceiveState returnState;
152     apache::thrift::ClientSyncCallback<false> callback(&returnState);
153     auto protocolId = apache::thrift::GeneratedAsyncClient::getChannel()->getProtocolId();
154     auto [ctx, header] = getDataByIdCtx(rpcOptions);
155     using CancellableCallback = apache::thrift::CancellableRequestClientCallback<false>;
156     auto cancellableCallback = cancellable ? CancellableCallback::create(&callback, channel_) : nullptr;
157     static apache::thrift::RpcOptions defaultRpcOptions;
158     auto wrappedCallback = apache::thrift::RequestClientCallback::Ptr(cancellableCallback ? (apache::thrift::RequestClientCallback*)cancellableCallback.get() : &callback);
159     if constexpr (hasRpcOptions) {
160       getDataByIdImpl(*rpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_id);
161     } else {
162       getDataByIdImpl(defaultRpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_id);
163     }
164     if (cancellable) {
165       folly::CancellationCallback cb(cancelToken, [&] { CancellableCallback::cancel(std::move(cancellableCallback)); });
166       co_await callback.co_waitUntilDone();
167     } else {
168       co_await callback.co_waitUntilDone();
169     }
170     if (returnState.isException()) {
171       co_yield folly::coro::co_error(std::move(returnState.exception()));
172     }
173     returnState.resetProtocolId(protocolId);
174     returnState.resetCtx(std::move(ctx));
175     SCOPE_EXIT {
176       if (hasRpcOptions && returnState.header()) {
177         auto* rheader = returnState.header();
178         if (!rheader->getHeaders().empty()) {
179           rpcOptions->setReadHeaders(rheader->releaseHeaders());
180         }
181         rpcOptions->setRoutingData(rheader->releaseRoutingData());
182       }
183     };
184     ::std::string _return;
185     if (auto ew = recv_wrapped_getDataById(_return, returnState)) {
186       co_yield folly::coro::co_error(std::move(ew));
187     }
188     co_return _return;
189   }
190  public:
191 #endif // FOLLY_HAS_COROUTINES
192 
193   virtual void getDataById(folly::Function<void (::apache::thrift::ClientReceiveState&&)> callback, ::std::int64_t p_id);
194 
195 
196   static folly::exception_wrapper recv_wrapped_getDataById(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
197   static void recv_getDataById(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
198   // Mock friendly virtual instance method
199   virtual void recv_instance_getDataById(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
200   virtual folly::exception_wrapper recv_instance_wrapped_getDataById(::std::string& _return, ::apache::thrift::ClientReceiveState& state);
201  private:
202   template <typename Protocol_, typename RpcOptions>
203   void getDataByIdT(Protocol_* prot, RpcOptions&& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, ::std::int64_t p_id);
204   std::pair<std::unique_ptr<::apache::thrift::ContextStack>, std::shared_ptr<::apache::thrift::transport::THeader>> getDataByIdCtx(apache::thrift::RpcOptions* rpcOptions);
205  public:
206   virtual void putDataById(std::unique_ptr<apache::thrift::RequestCallback> callback, ::std::int64_t p_id, const ::std::string& p_data);
207   virtual void putDataById(apache::thrift::RpcOptions& rpcOptions, std::unique_ptr<apache::thrift::RequestCallback> callback, ::std::int64_t p_id, const ::std::string& p_data);
208  protected:
209   void putDataByIdImpl(apache::thrift::RpcOptions& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, ::std::int64_t p_id, const ::std::string& p_data, bool stealRpcOptions = false);
210  public:
211 
212   virtual void sync_putDataById(::std::int64_t p_id, const ::std::string& p_data);
213   virtual void sync_putDataById(apache::thrift::RpcOptions& rpcOptions, ::std::int64_t p_id, const ::std::string& p_data);
214 
215   virtual folly::Future<folly::Unit> future_putDataById(::std::int64_t p_id, const ::std::string& p_data);
216   virtual folly::SemiFuture<folly::Unit> semifuture_putDataById(::std::int64_t p_id, const ::std::string& p_data);
217   virtual folly::Future<folly::Unit> future_putDataById(apache::thrift::RpcOptions& rpcOptions, ::std::int64_t p_id, const ::std::string& p_data);
218   virtual folly::SemiFuture<folly::Unit> semifuture_putDataById(apache::thrift::RpcOptions& rpcOptions, ::std::int64_t p_id, const ::std::string& p_data);
219   virtual folly::Future<std::pair<folly::Unit, std::unique_ptr<apache::thrift::transport::THeader>>> header_future_putDataById(apache::thrift::RpcOptions& rpcOptions, ::std::int64_t p_id, const ::std::string& p_data);
220   virtual folly::SemiFuture<std::pair<folly::Unit, std::unique_ptr<apache::thrift::transport::THeader>>> header_semifuture_putDataById(apache::thrift::RpcOptions& rpcOptions, ::std::int64_t p_id, const ::std::string& p_data);
221   FOLLY_NODISCARD [[deprecated("To be replaced by new API soon")]] virtual folly::Try<apache::thrift::RpcResponseComplete<void>> sync_complete_putDataById(
222       apache::thrift::RpcOptions&& rpcOptions,  ::std::int64_t p_id, const ::std::string& p_data);
223 
224 #if FOLLY_HAS_COROUTINES
225   template <int = 0>
co_putDataById(::std::int64_t p_id,const::std::string & p_data)226   folly::coro::Task<void> co_putDataById(::std::int64_t p_id, const ::std::string& p_data) {
227     return co_putDataById<false>(nullptr, p_id, p_data);
228   }
229   template <int = 0>
co_putDataById(apache::thrift::RpcOptions & rpcOptions,::std::int64_t p_id,const::std::string & p_data)230   folly::coro::Task<void> co_putDataById(apache::thrift::RpcOptions& rpcOptions, ::std::int64_t p_id, const ::std::string& p_data) {
231     return co_putDataById<true>(&rpcOptions, p_id, p_data);
232   }
233  private:
234   template <bool hasRpcOptions>
co_putDataById(apache::thrift::RpcOptions * rpcOptions,::std::int64_t p_id,const::std::string & p_data)235   folly::coro::Task<void> co_putDataById(apache::thrift::RpcOptions* rpcOptions, ::std::int64_t p_id, const ::std::string& p_data) {
236     const folly::CancellationToken& cancelToken =
237         co_await folly::coro::co_current_cancellation_token;
238     const bool cancellable = cancelToken.canBeCancelled();
239     apache::thrift::ClientReceiveState returnState;
240     apache::thrift::ClientSyncCallback<false> callback(&returnState);
241     auto protocolId = apache::thrift::GeneratedAsyncClient::getChannel()->getProtocolId();
242     auto [ctx, header] = putDataByIdCtx(rpcOptions);
243     using CancellableCallback = apache::thrift::CancellableRequestClientCallback<false>;
244     auto cancellableCallback = cancellable ? CancellableCallback::create(&callback, channel_) : nullptr;
245     static apache::thrift::RpcOptions defaultRpcOptions;
246     auto wrappedCallback = apache::thrift::RequestClientCallback::Ptr(cancellableCallback ? (apache::thrift::RequestClientCallback*)cancellableCallback.get() : &callback);
247     if constexpr (hasRpcOptions) {
248       putDataByIdImpl(*rpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_id, p_data);
249     } else {
250       putDataByIdImpl(defaultRpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_id, p_data);
251     }
252     if (cancellable) {
253       folly::CancellationCallback cb(cancelToken, [&] { CancellableCallback::cancel(std::move(cancellableCallback)); });
254       co_await callback.co_waitUntilDone();
255     } else {
256       co_await callback.co_waitUntilDone();
257     }
258     if (returnState.isException()) {
259       co_yield folly::coro::co_error(std::move(returnState.exception()));
260     }
261     returnState.resetProtocolId(protocolId);
262     returnState.resetCtx(std::move(ctx));
263     SCOPE_EXIT {
264       if (hasRpcOptions && returnState.header()) {
265         auto* rheader = returnState.header();
266         if (!rheader->getHeaders().empty()) {
267           rpcOptions->setReadHeaders(rheader->releaseHeaders());
268         }
269         rpcOptions->setRoutingData(rheader->releaseRoutingData());
270       }
271     };
272     if (auto ew = recv_wrapped_putDataById(returnState)) {
273       co_yield folly::coro::co_error(std::move(ew));
274     }
275   }
276  public:
277 #endif // FOLLY_HAS_COROUTINES
278 
279   virtual void putDataById(folly::Function<void (::apache::thrift::ClientReceiveState&&)> callback, ::std::int64_t p_id, const ::std::string& p_data);
280 
281 
282   static folly::exception_wrapper recv_wrapped_putDataById(::apache::thrift::ClientReceiveState& state);
283   static void recv_putDataById(::apache::thrift::ClientReceiveState& state);
284   // Mock friendly virtual instance method
285   virtual void recv_instance_putDataById(::apache::thrift::ClientReceiveState& state);
286   virtual folly::exception_wrapper recv_instance_wrapped_putDataById(::apache::thrift::ClientReceiveState& state);
287  private:
288   template <typename Protocol_, typename RpcOptions>
289   void putDataByIdT(Protocol_* prot, RpcOptions&& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, ::std::int64_t p_id, const ::std::string& p_data);
290   std::pair<std::unique_ptr<::apache::thrift::ContextStack>, std::shared_ptr<::apache::thrift::transport::THeader>> putDataByIdCtx(apache::thrift::RpcOptions* rpcOptions);
291  public:
292   virtual void lobDataById(std::unique_ptr<apache::thrift::RequestCallback> callback, ::std::int64_t p_id, const ::std::string& p_data);
293   virtual void lobDataById(apache::thrift::RpcOptions& rpcOptions, std::unique_ptr<apache::thrift::RequestCallback> callback, ::std::int64_t p_id, const ::std::string& p_data);
294  protected:
295   void lobDataByIdImpl(apache::thrift::RpcOptions& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, ::std::int64_t p_id, const ::std::string& p_data, bool stealRpcOptions = false);
296  public:
297 
298   virtual void sync_lobDataById(::std::int64_t p_id, const ::std::string& p_data);
299   virtual void sync_lobDataById(apache::thrift::RpcOptions& rpcOptions, ::std::int64_t p_id, const ::std::string& p_data);
300 
301   virtual folly::Future<folly::Unit> future_lobDataById(::std::int64_t p_id, const ::std::string& p_data);
302   virtual folly::SemiFuture<folly::Unit> semifuture_lobDataById(::std::int64_t p_id, const ::std::string& p_data);
303   virtual folly::Future<folly::Unit> future_lobDataById(apache::thrift::RpcOptions& rpcOptions, ::std::int64_t p_id, const ::std::string& p_data);
304   virtual folly::SemiFuture<folly::Unit> semifuture_lobDataById(apache::thrift::RpcOptions& rpcOptions, ::std::int64_t p_id, const ::std::string& p_data);
305 
306 #if FOLLY_HAS_COROUTINES
307   template <int = 0>
co_lobDataById(::std::int64_t p_id,const::std::string & p_data)308   folly::coro::Task<void> co_lobDataById(::std::int64_t p_id, const ::std::string& p_data) {
309     return co_lobDataById<false>(nullptr, p_id, p_data);
310   }
311   template <int = 0>
co_lobDataById(apache::thrift::RpcOptions & rpcOptions,::std::int64_t p_id,const::std::string & p_data)312   folly::coro::Task<void> co_lobDataById(apache::thrift::RpcOptions& rpcOptions, ::std::int64_t p_id, const ::std::string& p_data) {
313     return co_lobDataById<true>(&rpcOptions, p_id, p_data);
314   }
315  private:
316   template <bool hasRpcOptions>
co_lobDataById(apache::thrift::RpcOptions * rpcOptions,::std::int64_t p_id,const::std::string & p_data)317   folly::coro::Task<void> co_lobDataById(apache::thrift::RpcOptions* rpcOptions, ::std::int64_t p_id, const ::std::string& p_data) {
318     const folly::CancellationToken& cancelToken =
319         co_await folly::coro::co_current_cancellation_token;
320     const bool cancellable = cancelToken.canBeCancelled();
321     apache::thrift::ClientReceiveState returnState;
322     apache::thrift::ClientSyncCallback<true> callback(&returnState);
323     auto [ctx, header] = lobDataByIdCtx(rpcOptions);
324     using CancellableCallback = apache::thrift::CancellableRequestClientCallback<true>;
325     auto cancellableCallback = cancellable ? CancellableCallback::create(&callback, channel_) : nullptr;
326     static apache::thrift::RpcOptions defaultRpcOptions;
327     auto wrappedCallback = apache::thrift::RequestClientCallback::Ptr(cancellableCallback ? (apache::thrift::RequestClientCallback*)cancellableCallback.get() : &callback);
328     if constexpr (hasRpcOptions) {
329       lobDataByIdImpl(*rpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_id, p_data);
330     } else {
331       lobDataByIdImpl(defaultRpcOptions, std::move(header), ctx.get(), std::move(wrappedCallback), p_id, p_data);
332     }
333     if (cancellable) {
334       folly::CancellationCallback cb(cancelToken, [&] { CancellableCallback::cancel(std::move(cancellableCallback)); });
335       co_await callback.co_waitUntilDone();
336     } else {
337       co_await callback.co_waitUntilDone();
338     }
339     if (returnState.isException()) {
340       co_yield folly::coro::co_error(std::move(returnState.exception()));
341     }
342   }
343  public:
344 #endif // FOLLY_HAS_COROUTINES
345 
346   virtual void lobDataById(folly::Function<void (::apache::thrift::ClientReceiveState&&)> callback, ::std::int64_t p_id, const ::std::string& p_data);
347 
348 
349  private:
350   template <typename Protocol_, typename RpcOptions>
351   void lobDataByIdT(Protocol_* prot, RpcOptions&& rpcOptions, std::shared_ptr<apache::thrift::transport::THeader> header, apache::thrift::ContextStack* contextStack, apache::thrift::RequestClientCallback::Ptr callback, ::std::int64_t p_id, const ::std::string& p_data);
352   std::pair<std::unique_ptr<::apache::thrift::ContextStack>, std::shared_ptr<::apache::thrift::transport::THeader>> lobDataByIdCtx(apache::thrift::RpcOptions* rpcOptions);
353  public:
354 };
355 
356 } // cpp2
357