scatter_net/legacy/packet/variants/fetch_response/methods/
process.rs1use ps_str::Utf8Encoder;
2
3use crate::{FetchResponse, Packet, PacketProcessError, Peer, ScatterNet};
4
5impl FetchResponse {
6 pub async fn process(self, peer: Peer) -> Result<Option<Packet>, PacketProcessError> {
7 match self {
8 Self::Error(err) => {
9 eprintln!(
10 "Received spurious FetchResponse::Error from {}: {err}",
11 peer.node_id()
12 );
13 }
14 Self::NotFound => {
15 eprintln!(
16 "Received spurious FetchResponse::NotFound from {}",
17 peer.node_id()
18 );
19 }
20 Self::Success(blob) => {
21 let hkey = ScatterNet::put_blob(peer.net(), blob).await?;
22
23 let hkey = hkey.to_string();
24
25 return Ok(Some(Packet::PutResponse(crate::PutResponse::Success(hkey))));
26 }
27 Self::Suggest(node_id) => {
28 eprintln!(
29 "Received spurious FetchResponse::Suggest({}) from {}",
30 node_id.to_utf8_string(),
31 peer.node_id(),
32 );
33 }
34 }
35
36 Ok(None)
37 }
38}