#pragma once #include "server.h" #include "assets_servlet.h" #include "yql_servlet.h" #include "yql_functions_servlet.h" #include #include #include #include #include #include namespace NYql { namespace NHttp { enum class EDataSource { FILE, YAMR, YT }; /////////////////////////////////////////////////////////////////////////////// // TYqlServer /////////////////////////////////////////////////////////////////////////////// class TYqlServer: private TNonCopyable { public: inline TYqlServer( const TServerConfig& config, const NKikimr::NMiniKQL::IFunctionRegistry* functionRegistry, TUdfIndex::TPtr udfIndex, ui64 nextUniqueId, TUserDataTable filesMapping, THolder&& gatewaysConfig, const THashSet& sqlFlags, IModuleResolver::TPtr modules, IUdfResolver::TPtr udfResolver, TFileStoragePtr fileStorage) : HttpServer(config) , FunctionRegistry(functionRegistry) , UdfIndex(udfIndex) , NextUniqueId(nextUniqueId) , FilesMapping(std::move(filesMapping)) , GatewaysConfig(std::move(gatewaysConfig)) , SqlFlags(sqlFlags) , Modules(modules) , UdfResolver(udfResolver) , FileStorage(fileStorage) { } template void RegisterAction(const TString& path) { RegisterServlet(path, new TYqlServlet(*this)); } void RegisterServlet(const TString& path, TAutoPtr sp) { HttpServer.RegisterServlet(path, sp); } void ShutdownOn(int signal); void Start(); void Wait(); public: TServer HttpServer; const NKikimr::NMiniKQL::IFunctionRegistry* FunctionRegistry; TUdfIndex::TPtr UdfIndex; ui64 NextUniqueId; TUserDataTable FilesMapping; const THolder GatewaysConfig; const THashSet SqlFlags; IModuleResolver::TPtr Modules; IUdfResolver::TPtr UdfResolver; TFileStoragePtr FileStorage; }; TAutoPtr CreateYqlServer( TServerConfig config, const NKikimr::NMiniKQL::IFunctionRegistry* functionRegistry, TUdfIndex::TPtr udfIndex, ui64 nextUniqueId, TUserDataTable filesMapping, THolder&& gatewaysConfig, const THashSet& sqlFlags, IModuleResolver::TPtr modules = nullptr, IUdfResolver::TPtr udfResolver = nullptr, TFileStoragePtr fileStorage = nullptr); } // namspace NHttp } // namspace NYql