mirror of
https://github.com/daeken/Zookeeper.git
synced 2024-05-15 03:19:29 -04:00
28 lines
558 B
C++
28 lines
558 B
C++
#pragma once
|
|
#include "Zookeeper.hpp"
|
|
|
|
class Handle {
|
|
public:
|
|
virtual void close();
|
|
uint32_t handle;
|
|
};
|
|
|
|
class HandleManager {
|
|
public:
|
|
uint32_t add(shared_ptr<Handle> handle);
|
|
shared_ptr<Handle> get(uint32_t handle_id);
|
|
void remove(uint32_t handle_id);
|
|
|
|
template<typename T>
|
|
uint32_t add(shared_ptr<T> handle) {
|
|
return add(static_pointer_cast<Handle>(handle));
|
|
}
|
|
template<typename T>
|
|
shared_ptr<T> get(uint32_t handle_id) {
|
|
return dynamic_pointer_cast<T>(get(handle_id));
|
|
}
|
|
|
|
map<uint32_t, shared_ptr<Handle>> handles;
|
|
uint32_t handle_id;
|
|
};
|