pub async fn handle_peer(
peer_addr: SocketAddrV4,
metadata: TorrentMeta,
client_peer_id: [u8; 20],
state: Arc<RwLock<TorrentSharedState>>,
tx: UnboundedSender<(SocketAddrV4, PeerEvent)>,
new_peer_req_tx: UnboundedSender<(SocketAddrV4, Sender<TorrentManagerReq>)>,
) -> Result<()>