1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
#pragma once
#include "server.h"
#include "assets_servlet.h"
#include "yql_servlet.h"
#include "yql_functions_servlet.h"
#include <yql/essentials/core/facade/yql_facade.h>
#include <yql/essentials/core/yql_type_annotation.h>
#include <yql/essentials/minikql/mkql_function_registry.h>
#include <util/stream/file.h>
#include <util/system/user.h>
#include <util/system/tempfile.h>
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<TGatewaysConfig>&& gatewaysConfig,
const THashSet<TString>& 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 <typename TAction>
void RegisterAction(const TString& path) {
RegisterServlet(path, new TYqlServlet<TAction>(*this));
}
void RegisterServlet(const TString& path, TAutoPtr<IServlet> 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<TGatewaysConfig> GatewaysConfig;
const THashSet<TString> SqlFlags;
IModuleResolver::TPtr Modules;
IUdfResolver::TPtr UdfResolver;
TFileStoragePtr FileStorage;
};
TAutoPtr<TYqlServer> CreateYqlServer(
TServerConfig config,
const NKikimr::NMiniKQL::IFunctionRegistry* functionRegistry,
TUdfIndex::TPtr udfIndex,
ui64 nextUniqueId,
TUserDataTable filesMapping,
THolder<TGatewaysConfig>&& gatewaysConfig,
const THashSet<TString>& sqlFlags,
IModuleResolver::TPtr modules = nullptr,
IUdfResolver::TPtr udfResolver = nullptr,
TFileStoragePtr fileStorage = nullptr);
} // namspace NHttp
} // namspace NYql
|