From 223da5cfea8608f7b11f32720203a2704dd02601 Mon Sep 17 00:00:00 2001 From: bnewbold Date: Sun, 29 May 2016 15:33:04 -0400 Subject: fix module hierarchy; actually call common functions --- src/client.rs | 15 ++++++++------- src/common.rs | 13 ++++++++++--- src/main.rs | 4 ++++ src/server.rs | 24 ++++++++++-------------- 4 files changed, 32 insertions(+), 24 deletions(-) diff --git a/src/client.rs b/src/client.rs index 9687488..a2ebf27 100644 --- a/src/client.rs +++ b/src/client.rs @@ -1,6 +1,8 @@ extern crate utp; +use super::common; + use std::string::String; use std::env; use std::process; @@ -46,12 +48,11 @@ pub fn run_client(host: &str, local_file: &str, remote_file: &str, remote_is_dir println!("\thost: {}", remote_host); println!("\tsecret: {}", remote_secret); - let mut buf = [0; 2000]; let mut socket = UtpSocket::connect((remote_host, remote_port)).unwrap();; - socket.send_to("PING".as_bytes()); - socket.flush(); - let (amt, _src) = socket.recv_from(&mut buf).ok().unwrap(); - let reply = String::from_utf8_lossy(&buf[..amt]); - println!("Got uTP reply: {}", reply); - socket.close(); + if is_recv { + common::receive_files(&mut socket, local_file, remote_is_dir); + } else { + common::send_files(&mut socket, local_file, remote_is_dir); + } + socket.close().unwrap(); } diff --git a/src/common.rs b/src/common.rs index 063b166..8183bbf 100644 --- a/src/common.rs +++ b/src/common.rs @@ -3,14 +3,21 @@ extern crate utp; use std::str; use std::env; +use std::fs::File; +use std::io::Read; use std::process::exit; use utp::{UtpSocket}; -fn send_files(socket: UtpSocket, file_path: &str, recursive: bool) { +pub fn send_files(socket: &mut UtpSocket, file_path: &str, recursive: bool) { + assert!(!recursive); + let f = File::open(file_path).unwrap(); unimplemented!(); } -fn receive_files(socket: UtpSocket, file_path: &str) { - unimplemented!(); +pub fn receive_files(socket: &mut UtpSocket, file_path: &str, recursive: bool) { + assert!(!recursive); + let f = File::create(file_path).unwrap(); + + //f.set_len(); } diff --git a/src/main.rs b/src/main.rs index 8a78e67..bf2ceba 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,13 @@ +// XXX: re-enable these warnings +#![allow(unused_imports, unused_variables)] + extern crate getopts; extern crate utp; mod client; mod server; +mod common; use std::str; use std::env; diff --git a/src/server.rs b/src/server.rs index e1b414e..e60c054 100644 --- a/src/server.rs +++ b/src/server.rs @@ -3,6 +3,8 @@ extern crate getopts; extern crate utp; extern crate daemonize; +use super::common; + use std::str; use std::env; use std::env::home_dir; @@ -10,7 +12,7 @@ use std::process::exit; use getopts::Options; use utp::{UtpSocket, UtpListener}; -fn run_server(path: &str, is_receive: bool) { +fn run_server(path: &str, is_recv: bool, recursive: bool) { // TODO: try to detect the address the SSH connection came in on via the SSH_CONNECTION env // variable. @@ -46,18 +48,12 @@ fn run_server(path: &str, is_receive: bool) { let (mut socket, _src) = listener.accept().unwrap(); println!("Got connection from {}", socket.peer_addr().unwrap()); - loop { - - let mut buf = [0; 1000]; - let (amt, _src) = socket.recv_from(&mut buf).ok().unwrap(); - if amt <= 0 { - break; - } - let buf = &buf[..amt]; - let s = str::from_utf8(buf).unwrap(); - println!("\tgot: {}", s); - socket.send_to(buf); + if is_recv { + common::receive_files(&mut socket, path, recursive); + } else { + common::send_files(&mut socket, path, recursive); } + socket.close().unwrap(); } fn usage_server(opts: Options) { @@ -101,9 +97,9 @@ pub fn main_server() { } if matches.opt_present("f") { - run_server(&matches.opt_str("f").unwrap(), false); + run_server(&matches.opt_str("f").unwrap(), false, dir_mode); } if matches.opt_present("t") { - run_server(&matches.opt_str("t").unwrap(), true); + run_server(&matches.opt_str("t").unwrap(), true, dir_mode); } } -- cgit v1.2.3