Clio  develop
The XRP Ledger API server.
Loading...
Searching...
No Matches
ManagedObject.hpp
1#pragma once
2
3#include <memory>
4#include <stdexcept>
5
6namespace data::cassandra::impl {
7
8template <typename Managed>
9class ManagedObject {
10protected:
11 std::unique_ptr<Managed, void (*)(Managed*)> ptr_;
12
13public:
14 template <typename DeleterCallable>
15 ManagedObject(Managed* rawPtr, DeleterCallable deleter) : ptr_{rawPtr, deleter}
16 {
17 if (rawPtr == nullptr)
18 throw std::runtime_error("Could not create DB object - got nullptr");
19 }
20
21 operator Managed*() const
22 {
23 return ptr_.get();
24 }
25};
26
27} // namespace data::cassandra::impl