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 sha2::{Sha512, Digest};
|
||||||
use rand::RngCore;
|
use rand::RngCore;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{de::Error, Deserialize, Serialize};
|
||||||
use serde_big_array::BigArray;
|
use serde_big_array::BigArray;
|
||||||
|
use socket2::Socket;
|
||||||
use threadpool::ThreadPool;
|
use threadpool::ThreadPool;
|
||||||
use std::sync::{Arc, Mutex};
|
use std::{ io::{Read, Write}, sync::{Arc, Mutex}};
|
||||||
|
|
||||||
const CHALLENGE_DIFF: usize = 40;
|
const CHALLENGE_DIFF: usize = 40;
|
||||||
const SHA_LENGTH: usize = 512;
|
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