Split up into modules
This commit is contained in:
parent
4623cea844
commit
4d505f383d
53
src/lib.rs
53
src/lib.rs
@ -1,8 +1,10 @@
|
|||||||
use std::marker::PhantomData;
|
mod message;
|
||||||
|
mod publication;
|
||||||
|
mod subscription;
|
||||||
|
|
||||||
pub trait Message: 'static + Clone + Send + Sync {}
|
pub use message::Message;
|
||||||
|
pub use publication::{Publication, SendError};
|
||||||
impl<T> Message for T where T: 'static + Clone + Send + Sync {}
|
pub use subscription::{RecvError, Subscription};
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq)]
|
#[derive(Clone, Debug, PartialEq)]
|
||||||
#[non_exhaustive]
|
#[non_exhaustive]
|
||||||
@ -36,49 +38,6 @@ impl Orsb {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq)]
|
|
||||||
#[non_exhaustive]
|
|
||||||
pub enum RecvError {
|
|
||||||
Empty,
|
|
||||||
Closed,
|
|
||||||
Lagged,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct Subscription<T> {
|
|
||||||
_phantom: PhantomData<T>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<T: Message> Subscription<T> {
|
|
||||||
pub async fn recv(&mut self) -> Result<T, RecvError> {
|
|
||||||
todo!()
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn recv_blocking(&mut self) -> Result<T, RecvError> {
|
|
||||||
todo!()
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn try_recv(&mut self) -> Result<T, RecvError> {
|
|
||||||
todo!()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq)]
|
|
||||||
#[non_exhaustive]
|
|
||||||
pub enum SendError {
|
|
||||||
NoListeners,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct Publication<T> {
|
|
||||||
_phantom: PhantomData<T>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<T: Message> Publication<T> {
|
|
||||||
pub fn send(&mut self, message: T) -> Result<(), SendError> {
|
|
||||||
let _ = message;
|
|
||||||
todo!()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
3
src/message.rs
Normal file
3
src/message.rs
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
pub trait Message: 'static + Clone + Send + Sync {}
|
||||||
|
|
||||||
|
impl<T> Message for T where T: 'static + Clone + Send + Sync {}
|
20
src/publication.rs
Normal file
20
src/publication.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
use std::marker::PhantomData;
|
||||||
|
|
||||||
|
use crate::message::Message;
|
||||||
|
|
||||||
|
#[derive(Clone, Debug, PartialEq)]
|
||||||
|
#[non_exhaustive]
|
||||||
|
pub enum SendError {
|
||||||
|
NoListeners,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct Publication<T> {
|
||||||
|
_phantom: PhantomData<T>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T: Message> Publication<T> {
|
||||||
|
pub fn send(&mut self, message: T) -> Result<(), SendError> {
|
||||||
|
let _ = message;
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
}
|
29
src/subscription.rs
Normal file
29
src/subscription.rs
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
use std::marker::PhantomData;
|
||||||
|
|
||||||
|
use crate::message::Message;
|
||||||
|
|
||||||
|
#[derive(Clone, Debug, PartialEq)]
|
||||||
|
#[non_exhaustive]
|
||||||
|
pub enum RecvError {
|
||||||
|
Empty,
|
||||||
|
Closed,
|
||||||
|
Lagged,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct Subscription<T> {
|
||||||
|
_phantom: PhantomData<T>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T: Message> Subscription<T> {
|
||||||
|
pub async fn recv(&mut self) -> Result<T, RecvError> {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn recv_blocking(&mut self) -> Result<T, RecvError> {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn try_recv(&mut self) -> Result<T, RecvError> {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user