the natsy
This commit is contained in:
parent
7375842089
commit
c7f3cdc0d6
@ -1,5 +1,23 @@
|
|||||||
|
mod publisher;
|
||||||
mod validator;
|
mod validator;
|
||||||
|
|
||||||
#[tokio::main]
|
#[allow(dead_code)]
|
||||||
async fn main(){
|
#[derive(Debug)]
|
||||||
|
enum StartupError{
|
||||||
|
Connect(async_nats::ConnectError),
|
||||||
|
Subscribe(async_nats::SubscribeError),
|
||||||
|
}
|
||||||
|
|
||||||
|
#[tokio::main]
|
||||||
|
async fn main()->Result<(),StartupError>{
|
||||||
|
let nasty=async_nats::connect("nats").await.map_err(StartupError::Connect)?;
|
||||||
|
let (publisher,validator)=tokio::try_join!(
|
||||||
|
publisher::Publisher::new(nasty.clone()),
|
||||||
|
validator::Validator::new(nasty)
|
||||||
|
).map_err(StartupError::Subscribe)?;
|
||||||
|
// publisher thread
|
||||||
|
tokio::spawn(publisher.run());
|
||||||
|
// run validator on the main thread indefinitely
|
||||||
|
validator.run().await;
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
25
validation/src/publisher.rs
Normal file
25
validation/src/publisher.rs
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
use futures::StreamExt;
|
||||||
|
|
||||||
|
enum PublishError{
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct Publisher{
|
||||||
|
nats:async_nats::Client,
|
||||||
|
subscriber:async_nats::Subscriber,
|
||||||
|
}
|
||||||
|
impl Publisher{
|
||||||
|
pub async fn new(nats:async_nats::Client)->Result<Self,async_nats::SubscribeError>{
|
||||||
|
Ok(Self{
|
||||||
|
subscriber:nats.subscribe("publish").await?,
|
||||||
|
nats,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
pub async fn run(mut self){
|
||||||
|
while let Some(message)=self.subscriber.next().await{
|
||||||
|
self.publish(message).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async fn publish(&self,message:async_nats::Message){
|
||||||
|
println!("publish {:?}",message);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
use futures::StreamExt;
|
||||||
|
use rbx_dom_weak::WeakDom;
|
||||||
|
|
||||||
|
enum Valid{
|
||||||
|
Untouched(WeakDom),
|
||||||
|
Modified(WeakDom),
|
||||||
|
}
|
||||||
|
|
||||||
|
enum ValidateError{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
pub struct Validator{
|
||||||
|
nats:async_nats::Client,
|
||||||
|
subscriber:async_nats::Subscriber,
|
||||||
|
}
|
||||||
|
impl Validator{
|
||||||
|
pub async fn new(nats:async_nats::Client)->Result<Self,async_nats::SubscribeError>{
|
||||||
|
Ok(Self{
|
||||||
|
subscriber:nats.subscribe("validate").await?,
|
||||||
|
nats,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
pub async fn run(mut self){
|
||||||
|
while let Some(message)=self.subscriber.next().await{
|
||||||
|
self.validate(message).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async fn validate(&self,message:async_nats::Message){
|
||||||
|
println!("validate {:?}",message);
|
||||||
|
// download map
|
||||||
|
// validate map
|
||||||
|
// validate(dom)
|
||||||
|
// reply with validity
|
||||||
|
// Ok(Valid::Untouched(dom))
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user