use std::io::Write; use std::net::TcpStream; use std::sync::{Arc, RwLock}; use anyhow::Result; use bank::bank::Bank; use crate::commands::Command; use crate::protocol; pub struct CreateAccount; impl Command for CreateAccount { fn execute( &self, bank: Arc>, data: &[u8], mut stream: &TcpStream, ) -> Result { debug!("owner nr bytes {:?}", data); let owner = String::from_utf8_lossy(data); info!("creating new account with owner {}...", owner); let mut bank = bank.write().unwrap(); let nr = bank.create_account(owner.into()); info!("created account {}", nr); let written = stream.write(&protocol::account_nr(&nr))?; Ok(written) } }