forge/bin/icom/examples/server_3_client.rs
Jacob Schmidt ebfe77a340 feat: implement complete Forge framework with Rust/Redis backend and Arma 3 integration
Implemented features:
- High-performance Rust extension with Redis persistence
- Actor/player management with loadout, position, and state tracking
- Banking system with deposit, withdraw, and transfer operations
- Physical and virtual garage/locker systems for vehicle and equipment storage
- Organization management with member tracking and permissions
- Client-side UI with React-like state management
- Server-side event-driven architecture with CBA Events
- Security: Self-transfer prevention at multiple layers
- Logging system with per-module log files
- ICOM module for inter-server communication

Co-Authored-By: Warp <agent@warp.dev>
2026-01-04 12:52:15 -06:00

42 lines
1.2 KiB
Rust

use forge_icom::{Message, client::IComClient};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("Server 3 - ICOM Client");
println!("Connecting to ICOM server...\n");
// Connect to ICOM as server_3
let client = IComClient::connect("127.0.0.1:9090", "server_3".to_string()).await?;
println!("Registered as 'server_3'.");
println!("Listening for incoming messages...\n");
// Listen for incoming messages indefinitely
client
.listen_for_events(|msg| {
match msg {
Message::Event {
event_name, data, ..
} => {
println!("EVENT: {}", event_name);
println!("Data: {:#?}", data);
println!();
}
Message::Ack { .. } => {
// Ignore acks in listener mode
}
Message::Error { message } => {
eprintln!("Error: {}", message);
}
_ => {
println!("Received: {:?}", msg);
println!();
}
}
Ok(())
})
.await?;
Ok(())
}