yql_server.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #pragma once
  2. #include "server.h"
  3. #include "assets_servlet.h"
  4. #include "yql_servlet.h"
  5. #include "yql_functions_servlet.h"
  6. #include <yql/essentials/core/facade/yql_facade.h>
  7. #include <yql/essentials/core/yql_type_annotation.h>
  8. #include <yql/essentials/minikql/mkql_function_registry.h>
  9. #include <util/stream/file.h>
  10. #include <util/system/user.h>
  11. #include <util/system/tempfile.h>
  12. namespace NYql {
  13. namespace NHttp {
  14. enum class EDataSource {
  15. FILE,
  16. YAMR,
  17. YT
  18. };
  19. ///////////////////////////////////////////////////////////////////////////////
  20. // TYqlServer
  21. ///////////////////////////////////////////////////////////////////////////////
  22. class TYqlServer: private TNonCopyable
  23. {
  24. public:
  25. inline TYqlServer(
  26. const TServerConfig& config,
  27. const NKikimr::NMiniKQL::IFunctionRegistry* functionRegistry,
  28. TUdfIndex::TPtr udfIndex,
  29. ui64 nextUniqueId,
  30. TUserDataTable filesMapping,
  31. THolder<TGatewaysConfig>&& gatewaysConfig,
  32. const THashSet<TString>& sqlFlags,
  33. IModuleResolver::TPtr modules,
  34. IUdfResolver::TPtr udfResolver,
  35. TFileStoragePtr fileStorage)
  36. : HttpServer(config)
  37. , FunctionRegistry(functionRegistry)
  38. , UdfIndex(udfIndex)
  39. , NextUniqueId(nextUniqueId)
  40. , FilesMapping(std::move(filesMapping))
  41. , GatewaysConfig(std::move(gatewaysConfig))
  42. , SqlFlags(sqlFlags)
  43. , Modules(modules)
  44. , UdfResolver(udfResolver)
  45. , FileStorage(fileStorage)
  46. {
  47. }
  48. template <typename TAction>
  49. void RegisterAction(const TString& path) {
  50. RegisterServlet(path, new TYqlServlet<TAction>(*this));
  51. }
  52. void RegisterServlet(const TString& path, TAutoPtr<IServlet> sp) {
  53. HttpServer.RegisterServlet(path, sp);
  54. }
  55. void ShutdownOn(int signal);
  56. void Start();
  57. void Wait();
  58. public:
  59. TServer HttpServer;
  60. const NKikimr::NMiniKQL::IFunctionRegistry* FunctionRegistry;
  61. TUdfIndex::TPtr UdfIndex;
  62. ui64 NextUniqueId;
  63. TUserDataTable FilesMapping;
  64. const THolder<TGatewaysConfig> GatewaysConfig;
  65. const THashSet<TString> SqlFlags;
  66. IModuleResolver::TPtr Modules;
  67. IUdfResolver::TPtr UdfResolver;
  68. TFileStoragePtr FileStorage;
  69. };
  70. TAutoPtr<TYqlServer> CreateYqlServer(
  71. TServerConfig config,
  72. const NKikimr::NMiniKQL::IFunctionRegistry* functionRegistry,
  73. TUdfIndex::TPtr udfIndex,
  74. ui64 nextUniqueId,
  75. TUserDataTable filesMapping,
  76. THolder<TGatewaysConfig>&& gatewaysConfig,
  77. const THashSet<TString>& sqlFlags,
  78. IModuleResolver::TPtr modules = nullptr,
  79. IUdfResolver::TPtr udfResolver = nullptr,
  80. TFileStoragePtr fileStorage = nullptr);
  81. } // namspace NHttp
  82. } // namspace NYql