#pragma once #include #include namespace drogon { class HttpRequest; using HttpRequestPtr = std::shared_ptr; class HttpResponse; using HttpResponsePtr = std::shared_ptr; class Cookie; class Session; using SessionPtr = std::shared_ptr; class UploadFile; class WebSocketControllerBase; using WebSocketControllerBasePtr = std::shared_ptr; class HttpFilterBase; using HttpFilterBasePtr = std::shared_ptr; class HttpMiddlewareBase; using HttpMiddlewareBasePtr = std::shared_ptr; class HttpSimpleControllerBase; using HttpSimpleControllerBasePtr = std::shared_ptr; class HttpRequestImpl; using HttpRequestImplPtr = std::shared_ptr; class HttpResponseImpl; using HttpResponseImplPtr = std::shared_ptr; class WebSocketConnectionImpl; using WebSocketConnectionImplPtr = std::shared_ptr; class HttpRequestParser; class PluginsManager; class ListenerManager; class SharedLibManager; class SessionManager; class HttpServer; namespace orm { class DbClient; using DbClientPtr = std::shared_ptr; class DbClientManager; } // namespace orm namespace nosql { class RedisClient; using RedisClientPtr = std::shared_ptr; class RedisClientManager; } // namespace nosql } // namespace drogon namespace trantor { class EventLoop; class TcpConnection; using TcpConnectionPtr = std::shared_ptr; class Resolver; class AsyncFileLogger; } // namespace trantor namespace drogon { using HttpAsyncCallback = std::function &&)>; using WebSocketNewAsyncCallback = std::function &&, const WebSocketConnectionImplPtr &)>; } // namespace drogon