program_factory.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #pragma once
  2. #include "interface.h"
  3. #include <yql/essentials/utils/backtrace/backtrace.h>
  4. #include <yql/essentials/core/services/mounts/yql_mounts.h>
  5. #include <yql/essentials/ast/yql_expr.h>
  6. #include <yql/essentials/core/yql_user_data.h>
  7. #include <yql/essentials/minikql/mkql_function_registry.h>
  8. #include <yql/essentials/minikql/invoke_builtins/mkql_builtins.h>
  9. #include <util/generic/function.h>
  10. #include <util/generic/ptr.h>
  11. #include <util/generic/strbuf.h>
  12. namespace NYql {
  13. namespace NPureCalc {
  14. class TProgramFactory: public IProgramFactory {
  15. private:
  16. TProgramFactoryOptions Options_;
  17. TExprContext ExprContext_;
  18. TIntrusivePtr<NKikimr::NMiniKQL::IMutableFunctionRegistry> FuncRegistry_;
  19. IModuleResolver::TPtr ModuleResolver_;
  20. TUserDataTable UserData_;
  21. EBlockEngineMode BlockEngineMode_;
  22. IOutputStream* ExprOutputStream_;
  23. THashMap<TString, TString> Modules_;
  24. NKikimr::NUdf::ICountersProvider* CountersProvider_;
  25. public:
  26. explicit TProgramFactory(const TProgramFactoryOptions&);
  27. ~TProgramFactory() override;
  28. public:
  29. void AddUdfModule(
  30. const TStringBuf& moduleName,
  31. NKikimr::NUdf::TUniquePtr<NKikimr::NUdf::IUdfModule>&& module
  32. ) override;
  33. void SetCountersProvider(NKikimr::NUdf::ICountersProvider* provider) override;
  34. IPullStreamWorkerFactoryPtr MakePullStreamWorkerFactory(const TInputSpecBase&, const TOutputSpecBase&, TString, ETranslationMode, ui16) override;
  35. IPullListWorkerFactoryPtr MakePullListWorkerFactory(const TInputSpecBase&, const TOutputSpecBase&, TString, ETranslationMode, ui16) override;
  36. IPushStreamWorkerFactoryPtr MakePushStreamWorkerFactory(const TInputSpecBase&, const TOutputSpecBase&, TString, ETranslationMode, ui16) override;
  37. };
  38. }
  39. }