what's wrong with my code?
use futures::FutureExt;
use log::{info, warn};
use rand::distributions::uniform::SampleBorrow;
use std::sync::{Arc, Mutex};
use std::thread;
use tokio::{
select,
sync::{
mpsc,
mpsc::{Receiver, Sender},
oneshot,
},
};
use tonic::{transport::Server, Request, Response, Status};
use uuid::Uuid;
pub struct FilWindowPostServer {
pub server_info: Arc<Mutex<ServerInfo>>,
pub do_task_signal_tx: Sender<String>,
pub do_task_signal_rx: Receiver<String>,
}
impl Default for FilWindowPostServer {
fn default() -> Self {
let (mut task_signal_tx, mut task_signal_rx) = mpsc::channel(1);
FilWindowPostServer {
server_info: Arc::new(Mutex::new(ServerInfo::default())),
do_task_signal_tx: task_signal_tx,
do_task_signal_rx: task_signal_rx,
}
}
}
impl FilWindowPostServer {
#[tokio::main]
pub async fn run_task(&self, mut exit_rx: &oneshot::Receiver<&str>) {
loop {
select! {
val = exit_rx => {
break;
}
flag = self.do_task_signal_rx => {
if flag == "Ok".to_string() {
let wi = self.server_info.lock().unwrap();
info!("start to do task: {}", wi.task_info.task_id);
drop(wi);
} else {
continue;
}
}
};
}
}
}
[dependencies]
storage-proofs-core = { path = "../storage-proofs-core", version = "^10.0.0", default-features = false }
storage-proofs-porep = { path = "../storage-proofs-porep", version = "^10.0.0", default-features = false }
storage-proofs-post = { path = "../storage-proofs-post", version = "^10.0.0", default-features = false }
filecoin-hashers = { version = "^5.0.0", path = "../filecoin-hashers", default-features = false, features = ["poseidon", "sha256"] }
bitvec = "0.17"
rand = "0.8"
lazy_static = "1.2"
memmap = "0.7"
byteorder = "1"
itertools = "0.9"
serde = { version = "1.0", features = ["rc", "derive"] }
serde_json = "1.0"
ff = "0.11.0"
blake2b_simd = "0.5"
bellperson = "0.18.0"
log = "0.4.7"
fil_logger = "0.1"
rayon = "1.1.0"
blake2s_simd = "0.5.8"
hex = "0.4.0"
merkletree = "0.21.0"
bincode = "1.1.2"
anyhow = "1.0.23"
rand_xorshift = "0.3.0"
sha2 = "0.9.1"
typenum = "1.11.2"
gperftools = { version = "0.2", optional = true }
generic-array = "0.14.4"
group = "0.11.0"
byte-slice-cast = "1.0.0"
fr32 = { path = "../fr32", version = "^3.0.0", default-features = false }
once_cell = "1.8.0"
blstrs = "0.4.0"
tonic = "0.5"
prost = "0.8"
tokio = { version = "1.0", features = ["full"] }
uuid = { version = "0.8", features = ["serde", "v4"] }
signal-hook = "0.3.10"
futures = "0.3"