diff options
author | Quentin Dufour <quentin@deuxfleurs.fr> | 2020-05-21 15:22:45 +0200 |
---|---|---|
committer | Quentin Dufour <quentin@deuxfleurs.fr> | 2020-05-21 15:22:45 +0200 |
commit | feadc844c060ff0879d8d547807147ae2213fd13 (patch) | |
tree | bcae4c29092586a442ffb8eb7ed48ab3f9875f69 | |
parent | 32d62d13496bd0ea6fd548cddb38dfdc72f4d41e (diff) | |
download | diplonat-feadc844c060ff0879d8d547807147ae2213fd13.tar.gz diplonat-feadc844c060ff0879d8d547807147ae2213fd13.zip |
WIP loops
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | src/diplonat.rs | 27 | ||||
-rw-r--r-- | src/main.rs | 2 |
3 files changed, 27 insertions, 3 deletions
@@ -18,5 +18,6 @@ export DIPLONAT_PRIVATE_IP="192.168.0.18" export DIPLONAT_REFRESH_TIME="60" export DIPLONAT_EXPIRATION_TIME="300" export DIPLONAT_CONSUL_NODE_NAME="lheureduthe" +RUST_LOG=info cargo run ``` diff --git a/src/diplonat.rs b/src/diplonat.rs index 3dd4e91..9062dd7 100644 --- a/src/diplonat.rs +++ b/src/diplonat.rs @@ -1,4 +1,5 @@ use anyhow::{Result, Context}; +use tokio::try_join; use crate::*; pub struct Diplonat { @@ -16,7 +17,29 @@ impl Diplonat { return Ok(ctx); } - pub fn listen(&self) -> bool { - return true; + // Action sinks + pub async fn consul_catalog(&self) -> Result<()> { + info!("Consul catalog loop started"); + return Ok(()); + } + pub async fn control_loop(&self) -> Result<()> { + info!("Control loop started"); + return Ok(()); + } + + // Action taps + pub async fn igd(&self) -> Result<()> { + info!("IGD loop started"); + return Ok(()); + } + // @TODO: implement netfilter, dns + + pub async fn listen(&self) -> Result<()> { + try_join!( + self.consul_catalog(), + self.control_loop(), + self.igd() + )?; + return Ok(()); } } diff --git a/src/main.rs b/src/main.rs index fee73aa..c8a4b0a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,7 +14,7 @@ async fn main() { info!("Starting Diplonat"); let diplo = Diplonat::new().await.expect("Setup failed"); - diplo.listen(); + diplo.listen().await.expect("A runtime error occured"); /* let url = format!("http://127.0.0.1:8500/v1/catalog/node/{}", config.consul_node_name); let resp = reqwest::get(&url) |