use air_interpreter_sede::define_simple_representation;
use air_interpreter_sede::derive_serialized_type;
use air_interpreter_sede::MsgPackMultiformat;
use air_interpreter_sede::Representation;
use serde::Deserialize;
use serde::Serialize;
use serde_json::Value as JValue;
use std::collections::HashMap;
pub type CallResults = HashMap<String, CallServiceResult>;
pub const CALL_SERVICE_SUCCESS: i32 = 0;
pub type CallResultsFormat = MsgPackMultiformat;
derive_serialized_type!(SerializedCallResults);
define_simple_representation! {
CallResultsRepr,
CallResults,
CallResultsFormat,
SerializedCallResults
}
pub type CallResultsDeserializeError = <CallResultsRepr as Representation>::DeserializeError;
pub type CallResultsSerializeError = <CallResultsRepr as Representation>::SerializeError;
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CallServiceResult {
pub ret_code: i32,
pub result: String,
}
impl CallServiceResult {
pub fn ok(result: &JValue) -> Self {
Self {
ret_code: CALL_SERVICE_SUCCESS,
result: result.to_string(),
}
}
pub fn err(err_code: i32, result: &JValue) -> Self {
Self {
ret_code: err_code,
result: result.to_string(),
}
}
}
use std::fmt;
impl fmt::Display for CallServiceResult {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "ret_code: {}, result: '{}'", self.ret_code, self.result)
}
}