MySQL 9.3.0
Source Code Documentation
db_service_endpoint.h
Go to the documentation of this file.
1/*
2 Copyright (c) 2024, 2025, Oracle and/or its affiliates.
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License, version 2.0,
6 as published by the Free Software Foundation.
7
8 This program is designed to work with certain software (including
9 but not limited to OpenSSL) that is licensed under separate terms,
10 as designated in a particular file or component or in included license
11 documentation. The authors of MySQL hereby grant you an additional
12 permission to link the program and your derivative works with the
13 separately licensed software that they have either included with
14 the program or referenced in the documentation.
15
16 This program is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU General Public License for more details.
20
21 You should have received a copy of the GNU General Public License
22 along with this program; if not, write to the Free Software
23 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
24*/
25
26#ifndef ROUTER_SRC_MYSQL_REST_SERVICE_SRC_MRS_ENDPOINT_DB_SERVICE_ENDPOINT_H_
27#define ROUTER_SRC_MYSQL_REST_SERVICE_SRC_MRS_ENDPOINT_DB_SERVICE_ENDPOINT_H_
28
29#include <memory>
30#include <string>
31#include <unordered_map>
32
33#ifdef HAVE_JIT_EXECUTOR_PLUGIN
34#include <mutex>
35#endif
36
40
41#ifdef HAVE_JIT_EXECUTOR_PLUGIN
43#endif
44
45namespace mrs {
46
47namespace file_system {
49}
50namespace endpoint {
51
52class UrlHostEndpoint;
53
55 public:
58 using DbServicePtr = std::shared_ptr<DbService>;
59 using HandlerFactoryPtr = std::shared_ptr<mrs::interface::HandlerFactory>;
61
62 public:
65 HandlerFactoryPtr factory);
66
67 UniversalId get_id() const override;
68 UniversalId get_parent_id() const override;
69 Uri get_url() const override;
70 std::optional<std::string> get_options() const override;
71
72 const DbServicePtr get() const;
73 void set(const DbService &entry, EndpointBasePtr parent);
74
75 void set_debug_enabled(bool value);
76 bool is_debug_enabled() const;
78
79#ifdef HAVE_JIT_EXECUTOR_PLUGIN
80 std::shared_ptr<jit_executor::IContextHandle> get_scripting_context();
81 std::string get_content_set_path(const std::string &module_class_name);
82#endif
83
84 private:
85 void update() override;
86 void activate_public() override;
87 void deactivate() override;
88 std::string get_extra_update_data() override;
90 std::string get_my_url_path_part() const override;
91 std::string get_my_url_part() const override;
92 bool does_this_node_require_authentication() const override;
93
94#ifdef HAVE_JIT_EXECUTOR_PLUGIN
95 std::shared_ptr<file_system::DbServiceFileSystem> get_file_system();
96 bool get_content_set_data();
97#endif
98
100 std::vector<HandlerPtr> url_handlers_;
101 bool debug_enabled_ = false;
102
103#ifdef HAVE_JIT_EXECUTOR_PLUGIN
104 std::shared_ptr<file_system::DbServiceFileSystem> file_system_;
105 std::optional<std::vector<std::string>> content_set_scripts_;
106 std::unordered_map<std::string, std::string> content_set_paths_;
107 std::mutex m_scripting_context_mutex;
108#endif
109};
110
111} // namespace endpoint
112} // namespace mrs
113
114#endif // ROUTER_SRC_MYSQL_REST_SERVICE_SRC_MRS_ENDPOINT_DB_SERVICE_ENDPOINT_H_
Definition: uri.h:40
Definition: db_service_endpoint.h:54
DbServiceEndpoint(const DbService &entry, EndpointConfigurationPtr configuration, HandlerFactoryPtr factory)
Definition: db_service_endpoint.cc:51
bool debug_enabled_
Definition: db_service_endpoint.h:101
bool is_debug_enabled() const
Definition: db_service_endpoint.cc:78
UniversalId get_parent_id() const override
Definition: db_service_endpoint.cc:59
std::shared_ptr< DbService > DbServicePtr
Definition: db_service_endpoint.h:58
Uri get_url() const override
Definition: db_service_endpoint.cc:220
void update() override
Definition: db_service_endpoint.cc:183
UniversalId get_id() const override
Definition: db_service_endpoint.cc:57
std::string get_extra_update_data() override
Definition: db_service_endpoint.cc:248
void set(const DbService &entry, EndpointBasePtr parent)
Definition: db_service_endpoint.cc:80
mrs::database::entry::DbService DbService
Definition: db_service_endpoint.h:57
EnabledType get_this_node_enabled_level() const override
Definition: db_service_endpoint.cc:208
const DbServicePtr get() const
Definition: db_service_endpoint.cc:63
void set_debug_enabled(bool value)
Definition: db_service_endpoint.cc:65
void deactivate() override
Definition: db_service_endpoint.cc:206
bool does_this_node_require_authentication() const override
Definition: db_service_endpoint.cc:240
std::string get_my_url_part() const override
Definition: db_service_endpoint.cc:216
std::optional< std::string > get_options() const override
Definition: db_service_endpoint.cc:244
DbService DataType
Definition: db_service_endpoint.h:60
void on_updated_content_set()
Definition: db_service_endpoint.cc:87
std::vector< HandlerPtr > url_handlers_
Definition: db_service_endpoint.h:100
DbServicePtr entry_
Definition: db_service_endpoint.h:99
std::shared_ptr< mrs::interface::HandlerFactory > HandlerFactoryPtr
Definition: db_service_endpoint.h:59
std::string get_my_url_path_part() const override
Definition: db_service_endpoint.cc:212
void activate_public() override
Definition: db_service_endpoint.cc:188
Definition: option_endpoint.h:39
OptionEndpoint(UniversalId service_id, EndpointConfigurationPtr configuration, HandlerFactoryPtr factory)
Definition: option_endpoint.cc:37
Definition: db_service_file_system.h:49
mrs::database::entry::EnabledType EnabledType
Definition: endpoint_base.h:59
std::shared_ptr< EndpointBase > EndpointBasePtr
Definition: endpoint_base.h:60
mrs::database::entry::UniversalId UniversalId
Definition: endpoint_base.h:61
std::shared_ptr< EndpointConfiguration > EndpointConfigurationPtr
Definition: endpoint_base.h:64
ValueType value(const std::optional< ValueType > &v)
Definition: gtid.h:83
DbServiceEndpoint::DbService DbService
Definition: db_service_endpoint.cc:45
Definition: authorize_manager.h:48
required string configuration
Definition: replication_asynchronous_connection_failover.proto:49
Definition: completion_hash.h:35