Longbridge OpenAPI C++ SDK
async_result.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <functional>
4 #include <type_traits>
5 
6 #include "status.hpp"
7 
8 namespace longbridge {
9 
10 template<typename Ctx, typename T>
12 {
13 private:
14  Ctx ctx_;
15  Status status_;
16  const T* data_;
17 
18 public:
19  AsyncResult(Ctx ctx, Status status, const T* data)
20  : ctx_(ctx)
21  , status_(std::move(status))
22  , data_(data)
23  {
24  }
25 
26  inline operator bool() { return status_.is_ok(); }
27  inline const T* operator->() const { return data_; }
28 
29  template<typename U = T,
30  typename std::enable_if<!std::is_void<U>::value, int>::type = 0>
31  inline const U& operator*() const
32  {
33  return *data_;
34  }
35 
36  inline const Status& status() const { return status_; }
37 
38  inline const Ctx& context() { return ctx_; }
39 
41  inline bool is_ok() const { return status_.is_ok(); }
42 
44  inline bool is_err() const { return status_.is_err(); }
45 };
46 
47 template<typename Ctx, typename T>
48 using AsyncCallback = std::function<void(AsyncResult<Ctx, T>)>;
49 
50 } // namespace longbridge
Definition: status.hpp:19
bool is_err() const
Returns true if an errors occurs.
bool is_ok() const
Returns true if no errors occurs.
Definition: async_result.hpp:8
std::function< void(AsyncResult< Ctx, T >)> AsyncCallback
Definition: async_result.hpp:48
Definition: async_result.hpp:12
const U & operator*() const
Definition: async_result.hpp:31
bool is_err() const
Returns true if an errors occurs.
Definition: async_result.hpp:44
const Ctx & context()
Definition: async_result.hpp:38
AsyncResult(Ctx ctx, Status status, const T *data)
Definition: async_result.hpp:19
bool is_ok() const
Returns true if no errors occurs.
Definition: async_result.hpp:41
const T * operator->() const
Definition: async_result.hpp:27
const Status & status() const
Definition: async_result.hpp:36