wasmcloud_actor_extras/
generated.rs1extern crate rmp_serde as rmps;
2use rmps::{Deserializer, Serializer};
3use serde::{Deserialize, Serialize};
4use std::io::Cursor;
5
6#[cfg(feature = "guest")]
7extern crate wapc_guest as guest;
8#[cfg(feature = "guest")]
9use guest::prelude::*;
10
11#[cfg(feature = "guest")]
12pub struct Host {
13 binding: String,
14}
15
16#[cfg(feature = "guest")]
17impl Default for Host {
18 fn default() -> Self {
19 Host {
20 binding: "default".to_string(),
21 }
22 }
23}
24
25#[cfg(feature = "guest")]
27pub fn host(binding: &str) -> Host {
28 Host {
29 binding: binding.to_string(),
30 }
31}
32
33#[cfg(feature = "guest")]
35pub fn default() -> Host {
36 Host::default()
37}
38
39#[cfg(feature = "guest")]
40impl Host {
41 pub fn request_guid(&self, req: GeneratorRequest) -> HandlerResult<GeneratorResult> {
43 host_call(
44 &self.binding,
45 "wasmcloud:extras",
46 "RequestGuid",
47 &serialize(req)?,
48 )
49 .map(|vec| {
50 let resp = deserialize::<GeneratorResult>(vec.as_ref()).unwrap();
51 resp
52 })
53 .map_err(|e| e.into())
54 }
55 pub fn request_random(&self, req: GeneratorRequest) -> HandlerResult<GeneratorResult> {
58 host_call(
59 &self.binding,
60 "wasmcloud:extras",
61 "RequestRandom",
62 &serialize(req)?,
63 )
64 .map(|vec| {
65 let resp = deserialize::<GeneratorResult>(vec.as_ref()).unwrap();
66 resp
67 })
68 .map_err(|e| e.into())
69 }
70 pub fn request_sequence(&self, req: GeneratorRequest) -> HandlerResult<GeneratorResult> {
72 host_call(
73 &self.binding,
74 "wasmcloud:extras",
75 "RequestSequence",
76 &serialize(req)?,
77 )
78 .map(|vec| {
79 let resp = deserialize::<GeneratorResult>(vec.as_ref()).unwrap();
80 resp
81 })
82 .map_err(|e| e.into())
83 }
84}
85
86#[derive(Debug, PartialEq, Deserialize, Serialize, Default, Clone)]
87pub struct GeneratorResult {
88 #[serde(rename = "guid")]
89 pub guid: Option<String>,
90 #[serde(rename = "sequenceNumber")]
91 pub sequence_number: u64,
92 #[serde(rename = "random_number")]
93 pub random_number: u32,
94}
95
96#[derive(Debug, PartialEq, Deserialize, Serialize, Default, Clone)]
97pub struct GeneratorRequest {
98 #[serde(rename = "guid")]
99 pub guid: bool,
100 #[serde(rename = "sequence")]
101 pub sequence: bool,
102 #[serde(rename = "random")]
103 pub random: bool,
104 #[serde(rename = "min")]
105 pub min: u32,
106 #[serde(rename = "max")]
107 pub max: u32,
108}
109
110pub fn serialize<T>(
114 item: T,
115) -> ::std::result::Result<Vec<u8>, Box<dyn std::error::Error + Send + Sync>>
116where
117 T: Serialize,
118{
119 let mut buf = Vec::new();
120 item.serialize(&mut Serializer::new(&mut buf).with_struct_map())?;
121 Ok(buf)
122}
123
124pub fn deserialize<'de, T: Deserialize<'de>>(
128 buf: &[u8],
129) -> ::std::result::Result<T, Box<dyn std::error::Error + Send + Sync>> {
130 let mut de = Deserializer::new(Cursor::new(buf));
131 match Deserialize::deserialize(&mut de) {
132 Ok(t) => Ok(t),
133 Err(e) => Err(format!("Failed to de-serialize: {}", e).into()),
134 }
135}