/** * * @file HttpControllerBinder.h * @author Nitromelon * * Copyright 2023, Nitromelon. All rights reserved. * https://github.com/drogonframework/drogon * Use of this source code is governed by a MIT license * that can be found in the License file. * * Drogon * */ #pragma once #include "ControllerBinderBase.h" #include "HttpRequestImpl.h" #include "WebSocketConnectionImpl.h" #include namespace drogon { class HttpSimpleControllerBinder : public ControllerBinderBase { public: void handleRequest( const HttpRequestImplPtr &req, std::function &&callback) const override; std::shared_ptr controller_; }; class HttpControllerBinder : public ControllerBinderBase { public: void handleRequest( const HttpRequestImplPtr &req, std::function &&callback) const override; bool isStreamHandler() const override { assert(binderPtr_); return binderPtr_->isStreamHandler(); } internal::HttpBinderBasePtr binderPtr_; std::vector parameterPlaces_; std::vector> queryParametersPlaces_; }; struct WebsocketControllerBinder : public ControllerBinderBase { std::shared_ptr controller_; void handleRequest( const HttpRequestImplPtr &req, std::function &&callback) const override; void handleNewConnection(const HttpRequestImplPtr &req, const WebSocketConnectionImplPtr &wsConnPtr) const; }; } // namespace drogon