reifydb_sub_server/
binding.rs1#[cfg(not(reifydb_single_threaded))]
5use std::fmt::Write;
6
7#[cfg(not(reifydb_single_threaded))]
8use reifydb_core::{actors::server::Operation, metric::ExecutionMetrics};
9#[cfg(not(reifydb_single_threaded))]
10use reifydb_value::{
11 params::Params,
12 value::{frame::frame::Frame, identity::IdentityId},
13};
14
15#[cfg(not(reifydb_single_threaded))]
16use crate::{
17 dispatch::dispatch,
18 execute::ExecuteError,
19 interceptor::{RequestContext, RequestMetadata},
20 state::AppState,
21};
22
23#[cfg(not(reifydb_single_threaded))]
24pub async fn dispatch_binding(
25 state: &AppState,
26 namespace_path: &str,
27 procedure_name: &str,
28 params: Params,
29 identity: IdentityId,
30 metadata: RequestMetadata,
31) -> Result<(Vec<Frame>, ExecutionMetrics), ExecuteError> {
32 let mut call_text = String::with_capacity(8 + namespace_path.len() + procedure_name.len());
33 write!(&mut call_text, "CALL {}::{}()", namespace_path, procedure_name).unwrap();
34
35 let ctx = RequestContext {
36 identity,
37 operation: Operation::Command,
38 rql: call_text,
39 params,
40 metadata,
41 };
42
43 dispatch(state, ctx).await
44}