pub async fn handle(
state: Arc<RwLock<State>>,
connection_info_receiver: Receiver<Option<ConnectionInfo>>,
crypt_state_sender: Sender<ClientCryptState>,
packet_sender: UnboundedSender<ControlPacket<Serverbound>>,
packet_receiver: UnboundedReceiver<ControlPacket<Serverbound>>,
event_queue: TcpEventQueue,
) -> Result<(), TcpError>