vesys-bank-server/socket-server/src/commands/create_account.rs

34 lines
768 B
Rust

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<RwLock<Bank>>,
data: &[u8],
mut stream: &TcpStream,
) -> Result<usize> {
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)
}
}