dust_devil_core/sandstorm/
event_stream.rs1use std::io::Error;
2
3use tokio::io::{AsyncRead, AsyncWrite};
4
5use crate::{
6 logging::Event,
7 serialize::{ByteRead, ByteWrite},
8};
9
10use super::SandstormCommandType;
11
12pub struct EventStreamResponse(
14 pub Event,
16);
17
18pub struct EventStreamResponseRef<'a>(
20 pub &'a Event,
22);
23
24impl EventStreamResponse {
25 pub fn as_ref(&self) -> EventStreamResponseRef {
26 EventStreamResponseRef(&self.0)
27 }
28}
29
30impl ByteRead for EventStreamResponse {
31 async fn read<R: AsyncRead + Unpin + ?Sized>(reader: &mut R) -> Result<Self, Error> {
32 Ok(Self(Event::read(reader).await?))
33 }
34}
35
36impl ByteWrite for EventStreamResponse {
37 async fn write<W: AsyncWrite + Unpin + ?Sized>(&self, writer: &mut W) -> Result<(), Error> {
38 self.as_ref().write(writer).await
39 }
40}
41
42impl<'a> ByteWrite for EventStreamResponseRef<'a> {
43 async fn write<W: AsyncWrite + Unpin + ?Sized>(&self, writer: &mut W) -> Result<(), Error> {
44 (SandstormCommandType::EventStream, &self.0).write(writer).await
45 }
46}