taubyte_sdk/http/event/
write.rs

1use 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}