#ifndef PROXYSERVER_CONN_MAP_H #define PROXYSERVER_CONN_MAP_H #include #include #include #include template class ConnMap { public: static ConnMap& getInstance() { static ConnMap instance; // 在首次使用时创建 return instance; } ConnMap(ConnMap const&) = delete; void operator=(ConnMap const&) = delete; void add(const Key& key, std::unique_ptr value) { std::unique_lock lock(mutex_); map_[key] = std::move(value); } Value* get(const Key& key) const { std::shared_lock lock(mutex_); auto it = map_.find(key); if (it != map_.end()) { return it->second.get(); } return nullptr; } void remove(const Key& key) { std::unique_lock lock(mutex_); map_.erase(key); } void clear() { std::unique_lock lock(mutex_); map_.clear(); } private: ConnMap() = default; mutable std::shared_timed_mutex mutex_; std::map> map_; }; #endif //PROXYSERVER_CONN_MAP_H