b.t.ConnectedTransport(Transport) : class documentation

Part of bzrlib.transport View In Hierarchy

Known subclasses: bzrlib.transport.ftp.FtpTransport, bzrlib.transport.gio_transport.GioTransport, bzrlib.transport.http.HttpTransportBase, bzrlib.transport.remote.RemoteTransport, bzrlib.transport.sftp.SFTPTransport

A transport connected to a remote server.

This class provide the basis to implement transports that need to connect to a remote server.

Host and credentials are available as private attributes, cloning preserves them and share the underlying, protocol specific, connection.

Method __init__ Constructor.
Method clone Return a new transport with root at self.base + offset
Method relpath Return the local path portion from a given absolute path
Method abspath Return the full url to the given relative path.
Method disconnect Disconnect the transport.
Method _user Undocumented
Method _password Undocumented
Method _host Undocumented
Method _port Undocumented
Method _path Undocumented
Method _scheme Undocumented
Static Method _split_url Undocumented
Static Method _unsplit_url Build the full URL for the given already URL encoded path.
Method _remote_path Return the absolute path part of the url to the given relative path.
Method _get_shared_connection Get the object shared amongst cloned transports.
Method _set_connection Record a newly created connection with its associated credentials.
Method _get_connection Returns the transport specific connection object.
Method _get_credentials Returns the credentials used to establish the connection.
Method _update_credentials Update the credentials of the current connection.
Method _reuse_for Returns a transport sharing the same connection if possible.

Inherited from Transport:

Method create_prefix Create all the directories leading down to self.base.
Method ensure_base Ensure that the directory this transport references exists.
Method external_url Return a URL for self that can be given to an external process.
Method get_segment_parameters Return the segment parameters for the top segment of the URL.
Method recommended_page_size Return the recommended page size for this transport.
Method local_abspath Return the absolute path on the local filesystem.
Method has Does the file relpath exist?
Method has_multi Return True/False for each entry in relpaths
Method has_any Return True if any of the paths exist.
Method iter_files_recursive Iter the relative paths of files in the transports sub-tree.
Method get Get the file at the given relative path.
Method get_bytes Get a raw string of the bytes for a file at the given location.
Method get_smart_medium Return a smart client medium for this transport if possible.
Method readv Get parts of the file at the given relative path.
Method get_multi Get a list of file-like objects, one for each entry in relpaths.
Method put_bytes Atomically put the supplied bytes into the given location.
Method put_bytes_non_atomic Copy the string into the target location.
Method put_file Copy the file-like object into the location.
Method put_file_non_atomic Copy the file-like object into the target location.
Method mkdir Create a directory at the given path.
Method mkdir_multi Create a group of directories
Method open_write_stream Open a writable file stream at relpath.
Method append_file Append bytes from a file-like object to a file at relpath.
Method append_bytes Append bytes to a file at relpath.
Method append_multi Append the text in each file-like or string object to
Method copy Copy the item at rel_from to the location at rel_to.
Method copy_multi Copy a bunch of entries.
Method copy_to Copy a set of entries from self into another Transport.
Method copy_tree Copy a subtree from one relpath to another.
Method copy_tree_to_transport Copy a subtree from one transport to another.
Method rename Rename a file or directory.
Method move Move the item at rel_from to the location at rel_to.
Method move_multi Move a bunch of entries.
Method move_multi_to Move a bunch of entries to a single location.
Method delete Delete the item at relpath
Method delete_multi Queue up a bunch of deletes to be done.
Method delete_tree Delete an entire tree. This may require a listable transport.
Method __repr__ Undocumented
Method stat Return the stat information for a file.
Method rmdir Remove a directory at the given path.
Method stat_multi Stat multiple files and return the information.
Method readlink Return a string representing the path to which the symbolic link points.
Method hardlink Create a hardlink pointing to source named link_name.
Method symlink Create a symlink pointing to source named link_name.
Method listable Return True if this store supports listing.
Method list_dir Return a list of all files at the given location.
Method lock_read Lock the given file for shared (read) access.
Method lock_write Lock the given file for exclusive (write) access.
Method is_readonly Return true if this connection cannot be written to.
Method _translate_error Translate an IOError or OSError into an appropriate bzr error.
Method _pump Most children will need to copy from one file-like
Method _get_total Try to figure out how many entries are in multi,
Method _report_activity Notify that this transport has activity.
Method _update_pb Update the progress bar based on the current count
Method _iterate_over Iterate over all entries in multi, passing them to func,
Method _readv Get parts of the file at the given relative path.
Method _seek_and_read An implementation of readv that uses fp.seek and fp.read.
Method _sort_expand_and_combine Helper for readv.
Static Method _coalesce_offsets Yield coalesced offsets.
Method _can_roundtrip_unix_modebits Return true if this transport can store and retrieve unix modebits.
Method _redirected_to Returns a transport suitable to re-issue a redirected request.
def __init__(self, base, _from_transport=None):
Constructor.

The caller should ensure that _from_transport points at the same host as the new base.

Parametersbasetransport root URL
_from_transportoptional transport to build from. The built transport will share the connection with this transport.
@property
def _user(self):
Undocumented
@property
def _password(self):
Undocumented
@property
def _host(self):
Undocumented
@property
def _port(self):
Undocumented
@property
def _path(self):
Undocumented
@property
def _scheme(self):
Undocumented
def clone(self, offset=None):
Return a new transport with root at self.base + offset

We leave the daughter classes take advantage of the hint that it's a cloning not a raw creation.

@staticmethod
def _split_url(url):
Undocumented
@staticmethod
def _unsplit_url(scheme, user, password, host, port, path):
Build the full URL for the given already URL encoded path.

user, password, host and path will be quoted if they contain reserved chars.

Parametersschemeprotocol
userlogin
passwordassociated password
hostthe server address
portthe associated port
paththe absolute path on the server
ReturnsThe corresponding URL.
def relpath(self, abspath):
Return the local path portion from a given absolute path
def abspath(self, relpath):
Return the full url to the given relative path.
Parametersrelpaththe relative path urlencoded
Returnsthe Unicode version of the absolute path for relpath.
def _remote_path(self, relpath):
Return the absolute path part of the url to the given relative path.

This is the path that the remote server expect to receive in the requests, daughter classes should redefine this method if needed and use the result to build their requests.

Parametersrelpaththe path relative to the transport base urlencoded.
Returnsthe absolute Unicode path on the server,
def _get_shared_connection(self):
Get the object shared amongst cloned transports.

This should be used only by classes that needs to extend the sharing with objects other than transports.

Use _get_connection to get the connection itself.

def _set_connection(self, connection, credentials=None):
Record a newly created connection with its associated credentials.

Note: To ensure that connection is still shared after a temporary failure and a new one needs to be created, daughter classes should always call this method to set the connection and do so each time a new connection is created.

ParametersconnectionAn opaque object representing the connection used by the daughter class.
credentialsAn opaque object representing the credentials needed to create the connection.
def _get_connection(self):
Returns the transport specific connection object.
def _get_credentials(self):
Returns the credentials used to establish the connection.
def _update_credentials(self, credentials):
Update the credentials of the current connection.

Some protocols can renegociate the credentials within a connection, this method allows daughter classes to share updated credentials.

Parameterscredentialsthe updated credentials.
def _reuse_for(self, other_base):
Returns a transport sharing the same connection if possible.

Note: we share the connection if the expected credentials are the same: (host, port, user). Some protocols may disagree and redefine the criteria in daughter classes.

Note: we don't compare the passwords here because other_base may have been obtained from an existing transport.base which do not mention the password.

Parametersother_basethe URL we want to share the connection with.
ReturnsA new transport or None if the connection cannot be shared.
def disconnect(self):
Disconnect the transport.

If and when required the transport willl reconnect automatically.

API Documentation for Bazaar, generated by pydoctor at 2019-05-20 00:19:23.