scatter_net/legacy/packet/variants/fetch_response/methods/
process.rs

1use 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}