pub async fn connection_terminated<RT: Runtime>(cb: Rc<ControlBlock<RT>>) -> Result<!, Fail> {
    futures::select_biased! {
        r = active_send_fin(cb.clone()).fuse() => r,
        r = active_ack_fin(cb.clone()).fuse() => r,
        r = active_wait_2msl(cb.clone()).fuse() => r,
        r = passive_close(cb.clone()).fuse() => r,
        r = passive_send_fin(cb.clone()).fuse() => r,
        r = passive_wait_fin_ack(cb.clone()).fuse() => r,
    }
}
/// Launches various closures having to do with connection termination. Neither `active_ack_fin`
/// nor `active_send_fin` terminate so the only way to return is via `active_wait_2msl`.
Launches various closures having to do with connection termination.
Launches various closures having to do with connection termination .
pub async fn connection_terminated<RT: Runtime>(cb: Rc<ControlBlock<RT>>) -> Result<!, Fail> {
    futures::select_biased! {
        r = active_send_fin(cb.clone()).fuse() => r,
        r = active_ack_fin(cb.clone()).fuse() => r,
        r = active_wait_2msl(cb.clone()).fuse() => r,
        r = passive_close(cb.clone()).fuse() => r,
        r = passive_send_fin(cb.clone()).fuse() => r,
        r = passive_wait_fin_ack(cb.clone()).fuse() => r,
    }
}
pub async fn connection_terminated < RT : Runtime > ( cb : Rc < ControlBlock < RT > > ) -> Result < ! , Fail > { futures :: select_biased ! { r active_send_fin ( cb clone ( ) ) fuse ( ) r r active_ack_fin ( cb clone ( ) ) fuse ( ) r r active_wait_2msl ( cb clone ( ) ) fuse ( ) r r passive_close ( cb clone ( ) ) fuse ( ) r r passive_send_fin ( cb clone ( ) ) fuse ( ) r r passive_wait_fin_ack ( cb clone ( ) ) fuse ( ) r } }
Launches various closures having to do with connection termination.
Launches various closures having to do with connection termination .
cb
Rc<ControlBlock<RT>>
cb
Rc<ControlBlock<RT>>