//SPDX-FileCopyrightText: 2023 Yury Gubich //SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include #include "interface.h" namespace DB { class Pool; class Resource { friend class Pool; Resource(std::unique_ptr interface, std::weak_ptr parent); public: Resource(const Resource&) = delete; Resource(Resource&& other); ~Resource(); Resource& operator = (const Resource&) = delete; Resource& operator = (Resource&& other); Interface* operator -> (); private: std::weak_ptr parent; std::unique_ptr interface; }; }