pub fn try_wait(mut self) -> Result<TryWaitSessionStatus, (Error, Self)> {
        use EstablishedSessionState::*;

        match self.try_wait_impl() {
            Ok(Some(Exited(exit_value))) => Ok(TryWaitSessionStatus::Exited { exit_value }),
            Ok(Some(TtyAllocFail)) => Ok(TryWaitSessionStatus::TtyAllocFail(self)),
            Ok(None) => Ok(TryWaitSessionStatus::InProgress(self)),
            Err(err) => Err((err, self)),
        }
    }
/// Since waiting for the remote child to exit is basically waiting for the socket
/// to become readable, try_wait is basically polling for readable.
///
/// If it is readable, then it would read the entire packet in blocking manner.
/// While this is indeed a blocking call, it is unlikely to block since
/// the ssh multiplex master most likely would send it using one write/send.
///
/// And even if it does employ multiple write/send, these functions would just
/// return immediately since the buffer for the unix socket is empty
/// and should be big enough for one packet.
///
/// If it is not readable, then it would return Ok(InProgress).
Since waiting for the remote child to exit is basically waiting for the socket
to become readable, try_wait is basically polling for readable.

If it is readable, then it would read the entire packet in blocking manner.
While this is indeed a blocking call, it is unlikely to block since
the ssh multiplex master most likely would send it using one write/send.

And even if it does employ multiple write/send, these functions would just
return immediately since the buffer for the unix socket is empty
and should be big enough for one packet.

If it is not readable, then it would return Ok(InProgress).
Since waiting for the remote child to exit is basically waiting for the socket to become readable try_wait is basically polling for readable . If it is readable then it would read the entire packet in blocking manner . While this is indeed a blocking call it is unlikely to block since the ssh multiplex master most likely would send it using one write / send . And even if it does employ multiple write / send these functions would just return immediately since the buffer for the unix socket is empty and should be big enough for one packet . If it is not readable then it would return Ok ( InProgress ) .
pub fn try_wait(mut self) -> Result<TryWaitSessionStatus, (Error, Self)> {
        use EstablishedSessionState::*;
        match self.try_wait_impl() {
            Ok(Some(Exited(exit_value))) => Ok(TryWaitSessionStatus::Exited { exit_value }),
            Ok(Some(TtyAllocFail)) => Ok(TryWaitSessionStatus::TtyAllocFail(self)),
            Ok(None) => Ok(TryWaitSessionStatus::InProgress(self)),
            Err(err) => Err((err, self)),
        }
    }
pub fn try_wait ( mut self ) -> Result < TryWaitSessionStatus , ( Error , Self ) > { use EstablishedSessionState :: * ; match self . try_wait_impl ( ) { Ok ( Some ( Exited ( exit_value ) ) ) => Ok ( TryWaitSessionStatus :: Exited { exit_value } ) , Ok ( Some ( TtyAllocFail ) ) => Ok ( TryWaitSessionStatus :: TtyAllocFail ( self ) ) , Ok ( None ) => Ok ( TryWaitSessionStatus :: InProgress ( self ) ) , Err ( err ) => Err ( ( err , self ) ) , } }
Since waiting for the remote child to exit is basically waiting for the socket
to become readable, try_wait is basically polling for readable.
Since waiting for the remote child to exit is basically waiting for the socket to become readable try_wait is basically polling for readable .
mut self