read write functions writen and done
This commit is contained in:
+39
-2
@@ -21,10 +21,11 @@ pub struct PowChallengeResponse{
|
||||
*/
|
||||
use sha2::{Sha512, Digest};
|
||||
use rand::RngCore;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde::{de::Error, Deserialize, Serialize};
|
||||
use serde_big_array::BigArray;
|
||||
use socket2::Socket;
|
||||
use threadpool::ThreadPool;
|
||||
use std::sync::{Arc, Mutex};
|
||||
use std::{ io::{Read, Write}, sync::{Arc, Mutex}};
|
||||
|
||||
const CHALLENGE_DIFF: usize = 40;
|
||||
const SHA_LENGTH: usize = 512;
|
||||
@@ -115,3 +116,39 @@ impl PowChallengeResponse {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn custom_write<T: Write>(target_stream: &mut T, buffer_to_write: &[u8])-> std::result::Result<(), ()>{
|
||||
let length: u32 = buffer_to_write.len() as u32;
|
||||
let length_write_status = target_stream.write_all(&length.to_be_bytes());
|
||||
if length_write_status.is_err(){
|
||||
return Result::Err(());
|
||||
}
|
||||
let status = target_stream.write_all(buffer_to_write);
|
||||
|
||||
if status.is_err(){
|
||||
return Result::Err(());
|
||||
}
|
||||
|
||||
let flush_status = target_stream.flush();
|
||||
if flush_status.is_err(){
|
||||
return Result::Err(());
|
||||
}
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
pub fn custom_read<G: Read>(target_stream: &mut G) -> std::result::Result<Vec<u8>, ()> {
|
||||
let mut length_buffer = [0u8; 4];
|
||||
if target_stream.read_exact(&mut length_buffer).is_err() {
|
||||
return Err(());
|
||||
}
|
||||
|
||||
let read_full_len: u32 = u32::from_be_bytes(length_buffer);
|
||||
let mut full_read_buffer = vec![0u8; read_full_len as usize]; // dynamic size
|
||||
|
||||
// You can now read into this buffer
|
||||
if target_stream.read_exact(&mut full_read_buffer).is_err() {
|
||||
return Err(());
|
||||
}
|
||||
|
||||
return Ok(full_read_buffer);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user