From d42412c57d7d95672ba64b3e489b95f1c4b04a08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20Kaan=20G=C3=9CM=C3=9C=C5=9E?= <96421894+Tahinli@users.noreply.github.com> Date: Thu, 12 Oct 2023 14:21:47 +0300 Subject: [PATCH] remove_ram_limitations --- README.md | 2 +- src/main.rs | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 1027232..021d417 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ TCP File Transfer Server and Client in Rust ☑ File transfer over network. -☐ Remove memory limitations. +☑ Remove memory limitations. ☐ Folder transfer. diff --git a/src/main.rs b/src/main.rs index 19fbc5d..5c42ab5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,8 @@ use std::fs::{File, Metadata, self}; +use std::os::unix::prelude::FileExt; use std::time::Instant; use std::net::{TcpListener, TcpStream}; -use std::io::{Read, Write, self, BufWriter, BufReader, BufRead}; +use std::io::{Read, Write, self, BufWriter, BufReader, BufRead, Seek}; use std::env::{self}; @@ -143,7 +144,7 @@ impl FileInfo let mut file_reader = BufReader::new(self.file.as_ref().unwrap()); if iteration != 0 { - match file_reader.read_exact(&mut buffer) + match self.file.as_ref().unwrap().read_exact(&mut buffer) { Ok(_) => { @@ -161,14 +162,12 @@ impl FileInfo } else { - let mut last_buffer:Vec = Vec::new(); - match file_reader.read_to_end(&mut last_buffer) + match self.file.as_ref().unwrap().read_exact(&mut buffer[..(self.metadata.as_ref().unwrap().len()%BUFFER_SIZE as u64) as usize]) { - Ok(read_size) => + //fix it + Ok(_) => { - self.size_current += read_size; - last_buffer.append(&mut buffer[..(self.metadata.as_ref().unwrap().len()%BUFFER_SIZE as u64) as usize].to_vec()); - buffer.copy_from_slice(&last_buffer); + self.size_current += (self.metadata.as_ref().unwrap().len()%BUFFER_SIZE as u64) as usize; println!("Size now = {}", self.size_current); //println!("{} | {} | {:#?}", iteration,buffer.len(), buffer); }