wagie start

This commit is contained in:
Jack Chakany 2024-12-04 10:31:36 -05:00
parent f90866be8a
commit 07b63963d5
4 changed files with 67 additions and 3 deletions

7
Cargo.lock generated
View file

@ -1131,9 +1131,9 @@ dependencies = [
[[package]]
name = "crossbeam-channel"
version = "0.5.12"
version = "0.5.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95"
checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
dependencies = [
"crossbeam-utils",
]
@ -2090,6 +2090,7 @@ dependencies = [
name = "hoot-app"
version = "0.1.0"
dependencies = [
"crossbeam-channel",
"eframe",
"egui_extras",
"egui_tabs",
@ -4361,7 +4362,9 @@ dependencies = [
"bytes",
"libc",
"mio",
"parking_lot",
"pin-project-lite",
"signal-hook-registry",
"socket2 0.5.7",
"tokio-macros",
"windows-sys 0.52.0",

View file

@ -28,7 +28,8 @@ rand = "0.8.5"
nostr = { version = "0.32.1", features = ["std", "nip59"] }
serde = "1.0.204"
serde_json = "1.0.121"
tokio = "1.41.1"
tokio = { version = "1.41.1", features = ["full"] }
crossbeam-channel = "0.5.13"
[target.'cfg(target_os = "macos")'.dependencies]
security-framework = "3.0.0"

View file

@ -13,6 +13,7 @@ mod keystorage;
mod mail_event;
mod relay;
mod ui;
mod wagie;
fn main() -> Result<(), eframe::Error> {
let (non_blocking, _guard) = tracing_appender::non_blocking(std::io::stdout()); // add log files in prod one day

59
src/wagie/mod.rs Normal file
View file

@ -0,0 +1,59 @@
use tokio::sync::mpsc;
#[derive(Debug)]
pub enum Command {
Decrypt { content: String, pk: String }
}
#[derive(Debug)]
pub enum Response {
DecryptedText
}
pub struct Boss {
from_wagie: crossbeam_channel::Receiver<Response>,
to_wagie: mpsc::UnboundedSender<Command>,
}
impl Boss {
pub fn init() -> Self {
let (from_wagie_sender, from_wagie_receiver) = crossbeam_channel::unbounded::<Response>();
let (to_wagie_sender, to_wagie_receiver) = mpsc::unbounded_channel::<Command>();
tokio::spawn(async move {
let mut wagie = Wagie::init(to_wagie_receiver, from_wagie_sender);
wagie.run().await;
});
Self {
from_wagie: from_wagie_receiver,
to_wagie: to_wagie_sender,
}
}
}
pub struct Wagie {
to_boss: crossbeam_channel::Sender<Response>,
from_boss: mpsc::UnboundedReceiver<Command>,
}
impl Wagie {
pub fn init(from_boss: mpsc::UnboundedReceiver<Command>, to_boss: crossbeam_channel::Sender<Response>) -> Self {
Self {
to_boss,
from_boss,
}
}
async fn run(&mut self) {
while let Some(command) = self.from_boss.recv().await {
match command {
Command::Decrypt { content, pk } => {
// Process the decrypt command
// For now, just send a dummy response
let _ = self.to_boss.send(Response::DecryptedText);
}
}
}
}
}