Clio  develop
The XRP Ledger API server.
Loading...
Searching...
No Matches
Future.hpp
1#pragma once
2
3#include "data/cassandra/Types.hpp"
4#include "data/cassandra/impl/ManagedObject.hpp"
5
6#include <cassandra.h>
7
8#include <functional>
9#include <memory>
10
11namespace data::cassandra::impl {
12
13struct Future : public ManagedObject<CassFuture> {
14 /* implicit */ Future(CassFuture* ptr);
15
16 MaybeError
17 await() const;
18
19 ResultOrError
20 get() const;
21};
22
23void
24invokeHelper(CassFuture* ptr, void* cbPtr);
25
26class FutureWithCallback : public Future {
27public:
28 using FnType = std::function<void(ResultOrError)>;
29 using FnPtrType = std::unique_ptr<FnType>;
30
31 /* implicit */ FutureWithCallback(CassFuture* ptr, FnType&& cb);
32 FutureWithCallback(FutureWithCallback const&) = delete;
33 FutureWithCallback(FutureWithCallback&&) = default;
34
35private:
37 FnPtrType cb_;
38};
39
40} // namespace data::cassandra::impl