Common/IPC/
ProxyCallToSideCar.rs1use std::sync::Arc;
7
8use serde_json::Value;
9
10use super::IPCProvider::IPCProvider;
11use crate::{Effect::ActionEffect::ActionEffect, Error::CommonError::CommonError};
12
13pub fn ProxyCallToSideCar(
32 TargetSideCarIdentifier:String,
33
34 CallData:Value,
35) -> ActionEffect<Arc<dyn IPCProvider>, CommonError, Value> {
36 ActionEffect::New(Arc::new(move |Provider:Arc<dyn IPCProvider>| {
37 let TargetIdentifierClone = TargetSideCarIdentifier.clone();
38
39 let CallDataClone = CallData.clone();
40
41 Box::pin(async move {
42 let MethodString = CallDataClone
43 .get("Method")
44 .and_then(Value::as_str)
45 .ok_or_else(|| {
46 CommonError::InvalidArgument {
47 ArgumentName:"CallData.Method".to_string(),
48
49 Reason:"Expected a 'Method' string field in CallData for proxying.".to_string(),
50 }
51 })?
52 .to_string();
53
54 let ParametersValue = CallDataClone.get("Parameters").cloned().unwrap_or(Value::Null);
55
56 let DefaultTimeoutMilliseconds = 30000;
59
60 Provider
61 .SendRequestToSideCar(TargetIdentifierClone, MethodString, ParametersValue, DefaultTimeoutMilliseconds)
62 .await
63 })
64 }))
65}