/** * * @file SessionManager.h * An Tao * * Copyright 2018, An Tao. All rights reserved. * https://github.com/an-tao/drogon * Use of this source code is governed by a MIT license * that can be found in the License file. * * Drogon * */ #pragma once #include #include #include #include #include #include #include #include #include #include namespace drogon { class SessionManager : public trantor::NonCopyable { public: using IdGeneratorCallback = std::function; SessionManager( trantor::EventLoop *loop, size_t timeout, const std::vector &startAdvices, const std::vector &destroyAdvices, IdGeneratorCallback idGeneratorCallback); ~SessionManager() { sessionMapPtr_.reset(); } SessionPtr getSession(const std::string &sessionID, bool needToSet); void changeSessionId(const SessionPtr &sessionPtr); private: std::unique_ptr> sessionMapPtr_; trantor::EventLoop *loop_; size_t timeout_; const std::vector &sessionStartAdvices_; const std::vector &sessionDestroyAdvices_; IdGeneratorCallback idGeneratorCallback_; }; } // namespace drogon