rustyclaw_core/messengers/
console.rs1use super::{Message, Messenger};
4use anyhow::Result;
5use async_trait::async_trait;
6use tracing::debug;
7
8pub struct ConsoleMessenger {
10 name: String,
11 connected: bool,
12}
13
14impl ConsoleMessenger {
15 pub fn new(name: String) -> Self {
16 Self {
17 name,
18 connected: false,
19 }
20 }
21}
22
23#[async_trait]
24impl Messenger for ConsoleMessenger {
25 fn name(&self) -> &str {
26 &self.name
27 }
28
29 fn messenger_type(&self) -> &str {
30 "console"
31 }
32
33 async fn initialize(&mut self) -> Result<()> {
34 self.connected = true;
35 debug!(name = %self.name, "ConsoleMessenger initialized");
36 Ok(())
37 }
38
39 async fn send_message(&self, recipient: &str, content: &str) -> Result<String> {
40 let id = format!("console-{}", chrono::Utc::now().timestamp_millis());
41 println!("[{}] To {}: {}", self.name, recipient, content);
42 Ok(id)
43 }
44
45 async fn receive_messages(&self) -> Result<Vec<Message>> {
46 Ok(Vec::new())
47 }
48
49 fn is_connected(&self) -> bool {
50 self.connected
51 }
52
53 async fn disconnect(&mut self) -> Result<()> {
54 self.connected = false;
55 debug!(name = %self.name, "ConsoleMessenger disconnected");
56 Ok(())
57 }
58}