taubyte_sdk/http/event/
write.rs1use super::{imports, Event};
2use crate::errno::Error;
3
4impl Event {
5 fn write_unsafe(&self, buffer: &[u8], n: &mut u32) -> Error {
6 #[allow(unused_unsafe)]
7 unsafe {
8 imports::eventHttpWrite(self.event, buffer.as_ptr(), buffer.len(), n)
9 }
10 }
11
12 pub fn write(&self, buffer: &[u8]) -> Result<u32, Box<dyn std::error::Error>> {
13 let mut n = 0;
14
15 let err0 = self.write_unsafe(buffer, &mut n);
16 if err0.is_err() {
17 Err(format!("write failed with: {}", err0).into())
18 } else {
19 Ok(n)
20 }
21 }
22}
23
24#[cfg(test)]
25pub mod test {
26 pub static EXPECTED_ID: u32 = 0;
27 pub static EXPECTED_WRITE: &str = "Hello, world!";
28
29 #[test]
30 fn test_write() {
31 use crate::http::Event;
32
33 let http: Event = Event {
34 event: (EXPECTED_ID),
35 };
36
37 let wrong_string = http.write("pong".as_bytes());
38 assert!(wrong_string.is_err());
39
40 let wrong_http: Event = Event { event: (1) };
41 let wrong_id = wrong_http.write(EXPECTED_WRITE.as_bytes());
42 assert!(wrong_id.is_err());
43
44 let success = http.write(EXPECTED_WRITE.as_bytes());
45 assert!(success.is_ok());
46 }
47}