| 518 | } |
| 519 | |
| 520 | async fn send_current_digest(&mut self, stream: &mut Stream) -> ResultType<()> { |
| 521 | let mut msg = Message::new(); |
| 522 | let mut resp = FileResponse::new(); |
| 523 | let meta = self |
| 524 | .file |
| 525 | .as_ref() |
| 526 | .ok_or(anyhow!("file is None"))? |
| 527 | .metadata() |
| 528 | .await?; |
| 529 | let last_modified = meta |
| 530 | .modified()? |
| 531 | .duration_since(SystemTime::UNIX_EPOCH)? |
| 532 | .as_secs(); |
| 533 | resp.set_digest(FileTransferDigest { |
| 534 | id: self.id, |
| 535 | file_num: self.file_num, |
| 536 | last_modified, |
| 537 | file_size: meta.len(), |
| 538 | ..Default::default() |
| 539 | }); |
| 540 | msg.set_file_response(resp); |
| 541 | stream.send(&msg).await?; |
| 542 | log::info!( |
| 543 | "id: {}, file_num: {}, digest message is sent. waiting for confirm. msg: {:?}", |
| 544 | self.id, |
| 545 | self.file_num, |
| 546 | msg |
| 547 | ); |
| 548 | Ok(()) |
| 549 | } |
| 550 | |
| 551 | pub fn set_overwrite_strategy(&mut self, overwrite_strategy: Option<bool>) { |
| 552 | self.default_overwrite_strategy = overwrite_strategy; |