1#![cfg_attr(not(feature = "std"), no_std)]
2
3mod test;
4
5pub use shrink_wrap;
6use shrink_wrap::prelude::ShrinkWrapError;
7pub use wire_weaver_derive::{full_version, ww_api, ww_trait};
8pub use ww_version;
9use ww_version::FullVersion;
10
11pub mod prelude {
12 pub use shrink_wrap;
13 pub use shrink_wrap::prelude::*;
14 pub use wire_weaver_derive::{full_version, ww_api, ww_trait};
15 pub use ww_version;
16 pub use ww_version::FullVersion;
17}
18
19pub trait WireWeaverAsyncApiBackend {
20 fn process_bytes<'a>(
22 &mut self,
23 data: &[u8],
24 scratch_args: &'a mut [u8],
25 scratch_event: &'a mut [u8],
26 scratch_err: &'a mut [u8],
27 ) -> impl Future<Output = Result<&'a [u8], ShrinkWrapError>>;
28
29 fn send_updates(
30 &mut self,
31 sink: &mut impl MessageSink,
32 scratch_value: &mut [u8],
33 scratch_event: &mut [u8],
34 ) -> impl Future<Output = ()> {
35 let _ = sink;
36 let (_, _) = (scratch_value, scratch_event);
37 core::future::ready(())
38 }
39
40 fn version(&self) -> FullVersion<'_>;
42}
43
44pub trait MessageSink {
45 fn send(&mut self, message: &[u8]) -> impl Future<Output = Result<(), ()>>;
46}