GoPxL SDK
GoTransaction.h
Go to the documentation of this file.
1 
10 #ifndef GO_PXL_SDK_TRANSACTION_H
11 #define GO_PXL_SDK_TRANSACTION_H
12 
13 #include <GoPxLSdk/GoRequest.h>
14 #include <GoPxLSdk/GoResponse.h>
15 
16 class GoTransactionTests;
17 
18 namespace GoPxLSdk
19 {
20 constexpr k64u DEFAULT_TRANSACTION_TIMEOUT_MSEC = 3 * 1000; // 3,000 milliseconds = 3 seconds.
21 
22 class GoRestClient;
23 
25 {
26 public:
33  GoTransaction() = default;
34 
44  GoTransaction(const GoRequest& request);
45 
55  void CheckResponse(k64u timeoutInMilliseconds = DEFAULT_TRANSACTION_TIMEOUT_MSEC);
56 
67  const GoRequestResponse& GetResponse(k64u timeoutInMilliseconds = DEFAULT_TRANSACTION_TIMEOUT_MSEC);
68 
76  const GoRequest& GetRequest();
77 
85  std::shared_future<GoRequestResponse>& GetResponseFuture();
86 
87 protected:
95  void OnResponse(const std::shared_ptr<GoRequestResponse>& response);
96 
104  void OnError(const std::exception& e);
105 
106 private:
107  GoRequest request;
108  std::shared_ptr<std::promise<GoRequestResponse>> promise;
109  std::shared_future<GoRequestResponse> futureResponse;
110 
111  friend class GoRestClient;
112  friend class ::GoTransactionTests;
113 };
114 
115 }
116 
117 #endif
#define GoPxLSdkClass
Definition: Def.h:35
constexpr k64u DEFAULT_TRANSACTION_TIMEOUT_MSEC
Definition: GoTransaction.h:20
Declares the GoPxLSdk.GoResponse class.
Definition: GoRequest.h:22
Definition: GoRestClient.h:37
Represents a response to requests such as Read/Update.
Definition: GoResponse.h:102
Definition: GoTransaction.h:24
Declares the GoPxLSdk.GoRequest class.
Definition: Def.h:46