//! use { super::message::Message, crossbeam_queue::{ArrayQueue, SegQueue}, }; pub enum BufferTypes { Unbound(SegQueue), Bound(ArrayQueue), } /// Interproccess buffer pub struct IpcBuffer { protocol: Protocol, buffer: BufferTypes, } impl IpcBuffer { /// Validate a message to match the `IPC.protocol` pub fn validate_messages(&mut self) -> Result<(), IpcError> { Ok(()) } } /// Interprocess Communication Errors pub enum IpcError { /// An invalid message error returned to the sender InvalidMessage, } /// TODO: define this, possibly as the binary form of the IDL /// DEPEND: This depends on an IDL pub struct Protocol { // TODO: add in settings // like `invalid_message_handler` with some options similar to // `Deny` Drops the message // `Allow` Allows invalid messages (This disables validators IPC side and relies on programs to handle invalid messages) // `CustomFunct` a callback // and `report_invalid_messages_to_sender` // `True` // `False` // settings: PSettings, }