26#ifndef ROUTER_SRC_JIT_EXECUTOR_SRC_JIT_EXECUTOR_JAVASCRIPT_H_
27#define ROUTER_SRC_JIT_EXECUTOR_SRC_JIT_EXECUTOR_JAVASCRIPT_H_
29#include <condition_variable>
35#include <unordered_map>
64 std::optional<ResultState>
state;
65 std::optional<std::string>
data;
92 using Java_script_interface::Java_script_interface;
95 bool start(
size_t id,
const std::shared_ptr<IFile_system> &fs = {},
100 ResultType result_type,
const GlobalCallbacks &callbacks);
113 const std::string &code_str)
const;
126 const std::string &class_name)
override;
137 poly_value
synch_return(
const std::vector<poly_value> &args);
139 static const constexpr char *
name =
"synch_return";
140 static const constexpr std::size_t
argc = 1;
144 poly_value
synch_error(
const std::vector<poly_value> &args);
146 static const constexpr char *
name =
"synch_error";
147 static const constexpr std::size_t
argc = 1;
155 static const constexpr char *
name =
"getSession";
156 static const constexpr std::size_t
argc = 1;
162 static const constexpr char *
name =
"getCurrentMrsUserId";
168 static const constexpr char *
name =
"getContentSetPath";
169 static const constexpr std::size_t
argc = 1;
MRS JavaScript Implementation.
Definition: jit_executor_javascript.h:90
poly_value m_promise_resolver
Definition: jit_executor_javascript.h:185
std::unique_ptr< std::thread > m_execution_thread
Definition: jit_executor_javascript.h:177
void stop_run_thread()
Definition: jit_executor_javascript.cc:172
Value to_native_object(poly_value object, const std::string &class_name) override
Converts a guest language object into its C++ representation.
Definition: jit_executor_javascript.cc:410
void stop()
Definition: jit_executor_javascript.cc:177
poly_value create_source(const std::string &source, const std::string &code_str) const
Creates a Source object.
Definition: jit_executor_javascript.cc:189
std::condition_variable m_processing_state_condition
Definition: jit_executor_javascript.h:191
mysql_harness::WaitingMPSCQueue< Result > m_result
Definition: jit_executor_javascript.h:182
bool wait_for_idle()
Definition: jit_executor_javascript.cc:344
std::optional< ProcessingState > m_processing_state
Definition: jit_executor_javascript.h:190
mysql_harness::WaitingMPSCQueue< std::variant< std::monostate, Code > > m_code
Definition: jit_executor_javascript.h:181
std::mutex m_processing_state_mutex
Definition: jit_executor_javascript.h:192
void create_result(const Value &result, ResultState state=ResultState::Ok)
Definition: jit_executor_javascript.cc:60
Value native_array(poly_value object)
Definition: jit_executor_javascript.cc:369
~JavaScript() override=default
bool start(size_t id, const std::shared_ptr< IFile_system > &fs={}, const Dictionary_t &predefined_globals={})
Definition: jit_executor_javascript.cc:152
Value native_object(poly_value object)
Definition: jit_executor_javascript.cc:393
const GlobalCallbacks * m_global_callbacks
Definition: jit_executor_javascript.h:187
std::string execute(const std::string &code, int timeout, ResultType result_type, const GlobalCallbacks &callbacks)
Definition: jit_executor_javascript.cc:509
poly_value get_current_mrs_user_id()
Definition: jit_executor_javascript.cc:628
void error_handler(const char *bytes, size_t length) override
Definition: jit_executor_javascript.cc:447
void resolve_promise(poly_value promise)
Definition: jit_executor_javascript.cc:601
std::shared_ptr< shcore::polyglot::Session > m_session
Definition: jit_executor_javascript.h:188
void run()
Definition: jit_executor_javascript.cc:206
int64_t eval(poly_reference source, poly_value *result) const
Wraps a call to poly_context_eval.
Definition: jit_executor_javascript.cc:185
void output_handler(const char *bytes, size_t length) override
Definition: jit_executor_javascript.cc:443
poly_value from_native_object(const Object_bridge_t &object) const override
Definition: jit_executor_javascript.cc:451
size_t m_id
Definition: jit_executor_javascript.h:193
ResultType m_result_type
Definition: jit_executor_javascript.h:184
shcore::Value get_session(const std::vector< shcore::Value > &args)
Definition: jit_executor_javascript.cc:611
Dictionary_t m_predefined_globals
Definition: jit_executor_javascript.h:179
poly_value synch_return(const std::vector< poly_value > &args)
Definition: jit_executor_javascript.cc:564
poly_value synch_error(const std::vector< poly_value > &args)
Definition: jit_executor_javascript.cc:589
size_t id()
Definition: jit_executor_javascript.h:117
void set_processing_state(ProcessingState state)
Definition: jit_executor_javascript.cc:334
shcore::Value get_content_set_path(const std::vector< shcore::Value > &args)
Definition: jit_executor_javascript.cc:643
std::string get_parameter_string(const std::vector< Value > ¶meters) const
Definition: jit_executor_javascript.cc:481
provide waiting pop and push operator to thread-safe queues.
Definition: waiting_queue_adaptor.h:40
Definition: polyglot_file_system.h:185
Definition: polyglot_javascript.h:43
Represents polyglot errors that will be created from information available in the polyglot library st...
Definition: polyglot_error.h:77
bool length(const dd::Spatial_reference_system *srs, const Geometry *g1, double *length, bool *null) noexcept
Computes the length of linestrings and multilinestrings.
Definition: length.cc:76
Definition: jit_executor_callbacks.h:36
shcore::polyglot::IFile_system IFile_system
Definition: jit_executor_javascript.h:54
ProcessingState
Definition: jit_executor_javascript.h:61
shcore::Dictionary_t Dictionary_t
Definition: jit_executor_javascript.h:52
ResultState
Definition: jit_executor_javascript.h:58
shcore::polyglot::Polyglot_error Polyglot_error
Definition: jit_executor_javascript.h:53
ResultType
Definition: jit_executor_common.h:32
static bool timeout(bool(*wait_condition)())
Timeout function.
Definition: log0meb.cc:498
std::shared_ptr< Object_bridge > Object_bridge_t
Definition: polyglot_object_bridge.h:89
Value::Map_type_ref Dictionary_t
Definition: jit_executor_value.h:430
repeated Source source
Definition: replication_asynchronous_connection_failover.proto:42
Definition: jit_executor_javascript.h:73
ResultType result_type
Definition: jit_executor_javascript.h:75
std::string source
Definition: jit_executor_javascript.h:74
Definition: jit_executor_callbacks.h:38
Definition: jit_executor_javascript.h:167
static constexpr const char * name
Definition: jit_executor_javascript.h:168
static constexpr const std::size_t argc
Definition: jit_executor_javascript.h:169
static constexpr const auto callback
Definition: jit_executor_javascript.h:170
Definition: jit_executor_javascript.h:161
static constexpr const auto callback
Definition: jit_executor_javascript.h:163
static constexpr const char * name
Definition: jit_executor_javascript.h:162
Definition: jit_executor_javascript.h:154
static constexpr const char * name
Definition: jit_executor_javascript.h:155
static constexpr const std::size_t argc
Definition: jit_executor_javascript.h:156
static constexpr const auto callback
Definition: jit_executor_javascript.h:157
Definition: jit_executor_javascript.h:145
static constexpr const std::size_t argc
Definition: jit_executor_javascript.h:147
static constexpr const char * name
Definition: jit_executor_javascript.h:146
static constexpr const auto callback
Definition: jit_executor_javascript.h:148
Definition: jit_executor_javascript.h:138
static constexpr const std::size_t argc
Definition: jit_executor_javascript.h:140
static constexpr const auto callback
Definition: jit_executor_javascript.h:141
static constexpr const char * name
Definition: jit_executor_javascript.h:139
Definition: jit_executor_javascript.h:63
std::optional< std::string > data
Definition: jit_executor_javascript.h:65
void reset()
Definition: jit_executor_javascript.h:67
std::optional< ResultState > state
Definition: jit_executor_javascript.h:64
Pointer to a function that may be implemented in any language.
Definition: jit_executor_value.h:130