Trait git_transport::client::TransportWithoutIO[][src]

pub trait TransportWithoutIO {
    fn to_url(&self) -> String;
fn connection_persists_across_multiple_requests(&self) -> bool; fn set_identity(&mut self, _identity: Identity) -> Result<(), Error> { ... }
fn supported_protocol_versions(&self) -> &[Protocol] { ... } }
Expand description

This trait represents all transport related functions that don’t require any input/output to be done which helps implementation to share more code across blocking and async programs.

Required methods

Returns the canonical URL pointing to the destination of this transport. Please note that local paths may not be represented correctly, as they will go through a potentially lossy unicode conversion.

Returns true if the transport provides persistent connections across multiple requests, or false otherwise. Not being persistent implies that certain information has to be resent on each ‘turn’ of the fetch negotiation or that the end of interaction (i.e. no further request will be made) has to be indicated to the server for most graceful termination of the connection.

Provided methods

If the handshake or subsequent reads failed with std::io::ErrorKind::PermissionDenied, use this method to inform the transport layer about the identity to use for subsequent calls. If authentication continues to fail even with an identity set, consider communicating this to the provider of the identity in order to mark it as invalid. Otherwise the user might have difficulty updating obsolete credentials. Please note that most transport layers are unauthenticated and thus return an error here.

If the actually advertised server version is contained in the returned slice or empty, continue as normal, assume the server’s protocol version is desired or acceptable.

Otherwise, abort the fetch operation with an error to avoid continuing any interaction with the transport.

In V1 this means a potentially large list of advertised refs won’t be read, instead the connection is ignored leaving the server with a client who potentially unexpectedly terminated the connection.

Note that transport.close() is not called explicitly.

Implementations on Foreign Types

Implementors