use synapse::{
EnhancedSynapseRouter, Config,
types::{SecurityLevel, MessageType},
transport::abstraction::MessageUrgency,
error::Result as SynapseResult,
};
#[tokio::main]
async fn main() -> SynapseResult<()> {
println!("� Simple Message Sending Example");
println!("=================================");
let config = Config::for_testing();
let router = EnhancedSynapseRouter::new(
config,
"demo-bot@company.com".to_string()
).await?;
router.start().await?;
println!("🚀 Enhanced Synapse Router started successfully");
println!("\n📝 Example 1: Sending a direct message");
match router.send_message_smart(
"alice@company.com",
"Hello Alice! This is a test message from the demo bot.",
MessageType::Direct,
SecurityLevel::Secure,
MessageUrgency::Interactive
).await {
Ok(message_id) => println!("✅ Message sent successfully. ID: {}", message_id),
Err(e) => println!("❌ Failed to send message: {}", e),
}
println!("\n📝 Example 2: Sending a system message");
match router.send_message_smart(
"bob@company.com",
"System notification: Demo bot is now online and ready.",
MessageType::System,
SecurityLevel::Authenticated,
MessageUrgency::Background
).await {
Ok(message_id) => println!("✅ System message sent successfully. ID: {}", message_id),
Err(e) => println!("❌ Failed to send system message: {}", e),
}
println!("\n📝 Example 3: Sending a real-time message");
match router.send_message_smart(
"charlie@company.com",
"Real-time alert: This message requires immediate attention!",
MessageType::Direct,
SecurityLevel::Secure,
MessageUrgency::RealTime
).await {
Ok(message_id) => println!("✅ Real-time message sent successfully. ID: {}", message_id),
Err(e) => println!("❌ Failed to send real-time message: {}", e),
}
println!("\n📝 Example 4: Sending a tool call message");
match router.send_message_smart(
"ai-assistant@company.com",
"Please analyze the latest project status report.",
MessageType::ToolCall,
SecurityLevel::Secure,
MessageUrgency::Interactive
).await {
Ok(message_id) => println!("✅ Tool call message sent successfully. ID: {}", message_id),
Err(e) => println!("❌ Failed to send tool call message: {}", e),
}
println!("\n📝 Example 5: Sending a broadcast message");
match router.send_message_smart(
"team@company.com",
"Broadcast: Demo bot testing is now complete.",
MessageType::Broadcast,
SecurityLevel::Authenticated,
MessageUrgency::Background
).await {
Ok(message_id) => println!("✅ Broadcast message sent successfully. ID: {}", message_id),
Err(e) => println!("❌ Failed to send broadcast message: {}", e),
}
println!("\n📝 Example 6: Testing connection capabilities");
let capabilities = router.test_connection("test-peer@company.com").await;
println!("🔗 Connection capabilities:");
println!(" Email: {}", capabilities.email);
println!(" Direct TCP: {}", capabilities.direct_tcp);
println!(" Direct UDP: {}", capabilities.direct_udp);
println!(" mDNS Local: {}", capabilities.mdns_local);
println!(" NAT Traversal: {}", capabilities.nat_traversal);
println!(" Estimated Latency: {}ms", capabilities.estimated_latency_ms);
println!("\n📝 Example 7: Getting router status");
let status = router.status().await;
println!("📊 Router Status:");
println!(" Multi-transport enabled: {}", status.multi_transport_enabled);
println!(" Email server enabled: {}", status.email_server_enabled);
println!(" Available transports: {}", status.available_transports.len());
println!(" Email configured: {}", status.synapse_status.email_available);
println!(" Known entities: {}", status.synapse_status.known_peers);
println!("\n🎉 Example completed successfully!");
println!("This demonstrates basic message sending patterns with the Enhanced Synapse Router:");
println!(" 1. Direct messages with different security levels");
println!(" 2. System notifications");
println!(" 3. Real-time messages");
println!(" 4. Tool call messages");
println!(" 5. Broadcast messages");
println!(" 6. Connection testing");
println!(" 7. Router status monitoring");
Ok(())
}