Add interface skeleton
This commit is contained in:
commit
c8384a95c5
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/target
|
||||||
|
Cargo.lock
|
9
Cargo.toml
Normal file
9
Cargo.toml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
[package]
|
||||||
|
name = "orsb"
|
||||||
|
version = "0.1.0"
|
||||||
|
authors = ["Alex Mikhalev <alexmikhalevalex@gmail.com>"]
|
||||||
|
edition = "2018"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
63
src/lib.rs
Normal file
63
src/lib.rs
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
use std::marker::PhantomData;
|
||||||
|
|
||||||
|
pub trait Message: 'static + Clone + Send + Sync {}
|
||||||
|
|
||||||
|
impl<T> Message for T where T: 'static + Clone + Send + Sync {}
|
||||||
|
|
||||||
|
pub struct Orsb {}
|
||||||
|
|
||||||
|
impl Orsb {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn subscribe<T: Message>(&mut self) -> Subscription<T> {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn advertise<T: Message>(&mut self) -> Publication<T> {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Debug)]
|
||||||
|
#[non_exhaustive]
|
||||||
|
pub enum RecvErr {
|
||||||
|
Empty,
|
||||||
|
Closed,
|
||||||
|
Lagged,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct Subscription<T> {
|
||||||
|
_phantom: PhantomData<T>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T: Message> Subscription<T> {
|
||||||
|
pub async fn recv_wait(&mut self) -> Result<T, RecvErr> {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn recv(&mut self) -> Result<T, RecvErr> {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn try_recv(&mut self) -> Result<T, RecvErr> {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Debug)]
|
||||||
|
#[non_exhaustive]
|
||||||
|
pub enum SendErr {
|
||||||
|
NoListeners,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct Publication<T> {
|
||||||
|
_phantom: PhantomData<T>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T: Message> Publication<T> {
|
||||||
|
pub fn send(&mut self) -> Result<T, SendErr> {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user