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_type::{
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))]
36pub async fn dispatch_binding(
37 state: &AppState,
38 namespace_path: &str,
39 procedure_name: &str,
40 params: Params,
41 identity: IdentityId,
42 metadata: RequestMetadata,
43) -> Result<(Vec<Frame>, ExecutionMetrics), ExecuteError> {
44 let mut call_text = String::with_capacity(8 + namespace_path.len() + procedure_name.len());
45 write!(&mut call_text, "CALL {}::{}()", namespace_path, procedure_name).unwrap();
46
47 let ctx = RequestContext {
48 identity,
49 operation: Operation::Command,
50 rql: call_text,
51 params,
52 metadata,
53 };
54
55 dispatch(state, ctx).await
56}