#pragma once #include "Zookeeper.hpp" class Handle { public: virtual void close(); uint32_t handle; }; class HandleManager { public: uint32_t add(shared_ptr handle); shared_ptr get(uint32_t handle_id); void remove(uint32_t handle_id); template uint32_t add(shared_ptr handle) { return add(static_pointer_cast(handle)); } template shared_ptr get(uint32_t handle_id) { return dynamic_pointer_cast(get(handle_id)); } map> handles; uint32_t handle_id; };