use crate::traits::stream_buffer::StreamBuffer;
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum DecodeResult<F> {
Frame { frame: F, consumed: usize },
NeedMore,
}
#[derive(Debug, Clone)]
pub enum DecodeState<B: StreamBuffer> {
Initial,
AfterMagic,
AfterContMarker,
ReadingContinuationSize,
ReadingMessageLength,
ReadingMessage {
msg_len: usize,
},
ReadingBody {
body_len: usize,
message: B,
},
ReadingFooter {
footer_len: usize,
footer_offset: usize,
},
Done,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum BufferChunkSize {
FileIO,
Http,
WebSocket,
WebTransport,
InMemory,
Custom(usize),
}
impl BufferChunkSize {
pub fn chunk_size(self) -> usize {
match self {
BufferChunkSize::FileIO => 1 * 1024 * 1024, BufferChunkSize::Http => 64 * 1024, BufferChunkSize::WebSocket => 32 * 1024, BufferChunkSize::WebTransport => 64 * 1024, BufferChunkSize::InMemory => 512 * 1024, BufferChunkSize::Custom(n) => n,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum IPCMessageProtocol {
Stream,
File,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum MessageType {
Schema,
RecordBatch,
DictionaryBatch,
Unknown,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum BatchState {
NeedSchema,
Ready,
Done,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum WriterState {
Fresh,
SchemaDone,
Closed,
}