#pragma once #include #include #include #include namespace CurrentMetrics { extern const Metric InterserverConnection; } namespace DB { class IServer; class WriteBufferFromHTTPServerResponse; class InterserverIOHTTPHandler : public Poco::Net::HTTPRequestHandler { public: explicit InterserverIOHTTPHandler(IServer & server_) : server(server_) , log(&Poco::Logger::get("InterserverIOHTTPHandler")) { } void handleRequest(Poco::Net::HTTPServerRequest & request, Poco::Net::HTTPServerResponse & response) override; private: struct Output { std::shared_ptr out; }; IServer & server; Poco::Logger * log; CurrentMetrics::Increment metric_increment{CurrentMetrics::InterserverConnection}; void processQuery(Poco::Net::HTTPServerRequest & request, Poco::Net::HTTPServerResponse & response, Output & used_output); std::pair checkAuthentication(Poco::Net::HTTPServerRequest & request) const; }; }