changes
This commit is contained in:
72
src/main.rs
72
src/main.rs
@@ -37,6 +37,7 @@
|
|||||||
#![allow(unsafe_code)]
|
#![allow(unsafe_code)]
|
||||||
#![allow(unused_variables)]
|
#![allow(unused_variables)]
|
||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
|
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::fs::OpenOptions;
|
use std::fs::OpenOptions;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
@@ -756,6 +757,77 @@ impl Market {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn process_file(fname: &str) {
|
||||||
|
println!("Processing file: {}",fname)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fn interactive(m: &mut Market) {
|
||||||
|
println!("Trading interactively in Tuesday Markets (demo)");
|
||||||
|
let stdin = io::stdin();
|
||||||
|
let mut trader:usize=0;
|
||||||
|
for line in stdin.lock().lines() {
|
||||||
|
match line {
|
||||||
|
Ok(input) => {
|
||||||
|
let tokens: Vec<&str> = input.split_whitespace().collect();
|
||||||
|
match tokens.as_slice() {
|
||||||
|
["dump"] => m.dump(),
|
||||||
|
["login", username] =>
|
||||||
|
if let Some(t)=m.trader_name2num.get_mut(*username) { trader=*t; println!("Logged in as {}",m.traders[trader].name) } else { println!("Trader {} not found.",username) },
|
||||||
|
["whoami" ] => { println!("Logged in as {}, id {}",m.traders[trader].name,trader ); }
|
||||||
|
["addtrader", username] => { let id=m.register_trader(username); println!("Added user {} as id {}",username,id); },
|
||||||
|
["balances"] => {
|
||||||
|
println!("Balances for trader {}",m.traders[trader].name);
|
||||||
|
for (key,value) in &m.traders[trader].balances { println!(" {} {}",m.number_to_name(*key),value); }
|
||||||
|
}
|
||||||
|
["addasset", assetname] => {
|
||||||
|
if let Some(cur)=m.register_asset(assetname) { println!("Added asset {} ",m.number_to_name(cur)) }
|
||||||
|
else { println!("Asset {} already exists.",assetname) }
|
||||||
|
}
|
||||||
|
["addfunds", username, qty0, cur0 ] => {
|
||||||
|
let id=m.trader_name2num.get(*username);
|
||||||
|
let qty=FiNum::new_str(qty0);
|
||||||
|
let cur=m.name_to_number(cur0);
|
||||||
|
if id.is_none() { println!("Could not find trader {}",username); }
|
||||||
|
else if qty.is_zero() { println!("Could not parse quantity {}",qty0) }
|
||||||
|
else if cur.is_none() { println!("Could not find asset {}",cur0) }
|
||||||
|
else {
|
||||||
|
let id=*id.unwrap();
|
||||||
|
let cur=*cur.unwrap();
|
||||||
|
m.add_trader_balance(id,cur,qty);
|
||||||
|
println!("Added {} {} to {}",qty,m.number_to_asset(cur).name,m.traders[id].name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
["order", qty0, cur0, qty1, cur1 ] => {
|
||||||
|
let qty0=FiNum::new_str(qty0);
|
||||||
|
let cur0=m.name_to_number(cur0);
|
||||||
|
let qty1=FiNum::new_str(qty1);
|
||||||
|
let cur1=m.name_to_number(cur1);
|
||||||
|
if !qty0.is_zero() && cur0.is_some() && !qty1.is_zero() && cur1.is_some() {
|
||||||
|
m.make_order(trader,*cur0.unwrap(),*cur1.unwrap(),qty0,qty1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
["quit"] => {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
_ => println!("Invalid command. Please try again."),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Err(error) => println!("Error reading input: {}", error),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn erase(filename: &str) {
|
||||||
|
// Stub function for erasing a file
|
||||||
|
println!("Erasing file: {}", filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn copy(source: &str, destination: &str) {
|
||||||
|
// Stub function for copying a file
|
||||||
|
println!("Copying file from {} to {}", source, destination);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
fn tokens_to_command(m: &Market, logged_in: usize, tokens: Vec<&str>) -> Command {
|
fn tokens_to_command(m: &Market, logged_in: usize, tokens: Vec<&str>) -> Command {
|
||||||
let cmd:Command=match &tokens[..] {
|
let cmd:Command=match &tokens[..] {
|
||||||
|
|||||||
Reference in New Issue
Block a user