Class: Net::SFTP::Protocol::V05::Base

Class | Net::SFTP::Protocol::V05::Base
In: | lib/net/sftp/protocol/05/base.rb lib/net/sftp/protocol/05/base.rb
Parent: | V04::Base

Wraps the low-level SFTP calls for version 5 of the SFTP protocol.

None of these protocol methods block—all of them return immediately, requiring the SSH event loop to be run while the server response is pending.

You will almost certainly never need to use this driver directly. Please see Net::SFTP::Session for the recommended interface.

### Methods

open open rename rename version version

### Public Instance methods

open(path, flags, options)

Sends a FXP_OPEN packet to the server and returns the packet identifier. The `flags` parameter is either an integer (in which case it must be a combination of the IO constants) or a string (in which case it must be one of the mode strings that IO::open accepts). The `options` parameter is a hash that is used to construct a new Attribute object, to pass as part of the FXP_OPEN request.

[Source]

        # File lib/net/sftp/protocol/05/base.rb, line 35
    35:     def open(path, flags, options)
    36:       flags = normalize_open_flags(flags)
    37:
    38:       sftp_flags, desired_access = if flags & (IO::WRONLY | IO::RDWR) != 0
    39:           open = if flags & (IO::CREAT | IO::EXCL) == (IO::CREAT | IO::EXCL)
    40:             FV5::CREATE_NEW
    41:           elsif flags & (IO::CREAT | IO::TRUNC) == (IO::CREAT | IO::TRUNC)
    42:             FV5::CREATE_TRUNCATE
    43:           elsif flags & IO::CREAT == IO::CREAT
    44:             FV5::OPEN_OR_CREATE
    45:           else
    46:             FV5::OPEN_EXISTING
    47:           end
    48:           access = ACE::Mask::WRITE_DATA | ACE::Mask::WRITE_ATTRIBUTES
    49:           access |= ACE::Mask::READ_DATA | ACE::Mask::READ_ATTRIBUTES if (flags & IO::RDWR) == IO::RDWR
    50:           if flags & IO::APPEND == IO::APPEND
    51:             open |= FV5::APPEND_DATA
    52:             access |= ACE::Mask::APPEND_DATA
    53:           end
    54:           [open, access]
    55:         else
    56:           [FV5::OPEN_EXISTING, ACE::Mask::READ_DATA | ACE::Mask::READ_ATTRIBUTES]
    57:         end
    58:
    59:       attributes = attribute_factory.new(options)
    60:
    61:       send_request(FXP_OPEN, :string, path, :long, desired_access, :long, sftp_flags, :raw, attributes.to_s)
    62:     end

open(path, flags, options)

Sends a FXP_OPEN packet to the server and returns the packet identifier. The `flags` parameter is either an integer (in which case it must be a combination of the IO constants) or a string (in which case it must be one of the mode strings that IO::open accepts). The `options` parameter is a hash that is used to construct a new Attribute object, to pass as part of the FXP_OPEN request.

[Source]

        # File lib/net/sftp/protocol/05/base.rb, line 35
    35:     def open(path, flags, options)
    36:       flags = normalize_open_flags(flags)
    37:
    38:       sftp_flags, desired_access = if flags & (IO::WRONLY | IO::RDWR) != 0
    39:           open = if flags & (IO::CREAT | IO::EXCL) == (IO::CREAT | IO::EXCL)
    40:             FV5::CREATE_NEW
    41:           elsif flags & (IO::CREAT | IO::TRUNC) == (IO::CREAT | IO::TRUNC)
    42:             FV5::CREATE_TRUNCATE
    43:           elsif flags & IO::CREAT == IO::CREAT
    44:             FV5::OPEN_OR_CREATE
    45:           else
    46:             FV5::OPEN_EXISTING
    47:           end
    48:           access = ACE::Mask::WRITE_DATA | ACE::Mask::WRITE_ATTRIBUTES
    49:           access |= ACE::Mask::READ_DATA | ACE::Mask::READ_ATTRIBUTES if (flags & IO::RDWR) == IO::RDWR
    50:           if flags & IO::APPEND == IO::APPEND
    51:             open |= FV5::APPEND_DATA
    52:             access |= ACE::Mask::APPEND_DATA
    53:           end
    54:           [open, access]
    55:         else
    56:           [FV5::OPEN_EXISTING, ACE::Mask::READ_DATA | ACE::Mask::READ_ATTRIBUTES]
    57:         end
    58:
    59:       attributes = attribute_factory.new(options)
    60:
    61:       send_request(FXP_OPEN, :string, path, :long, desired_access, :long, sftp_flags, :raw, attributes.to_s)
    62:     end

rename(name, new_name, flags=nil)

Sends a FXP_RENAME packet to the server to request that the file or directory with the given `name` (must be a full path) be changed to `new_name` (which must also be a path). The `flags` parameter must be either `nil` or 0 (the default), or some combination of the Net::SFTP::Constants::RenameFlags constants.

[Source]

        # File lib/net/sftp/protocol/05/base.rb, line 25
    25:     def rename(name, new_name, flags=nil)
    26:       send_request(FXP_RENAME, :string, name, :string, new_name, :long, flags || 0)
    27:     end

rename(name, new_name, flags=nil)

Sends a FXP_RENAME packet to the server to request that the file or directory with the given `name` (must be a full path) be changed to `new_name` (which must also be a path). The `flags` parameter must be either `nil` or 0 (the default), or some combination of the Net::SFTP::Constants::RenameFlags constants.

[Source]

        # File lib/net/sftp/protocol/05/base.rb, line 25
    25:     def rename(name, new_name, flags=nil)
    26:       send_request(FXP_RENAME, :string, name, :string, new_name, :long, flags || 0)
    27:     end

version()

Returns the protocol version implemented by this driver. (5, in this case)

[Source]

        # File lib/net/sftp/protocol/05/base.rb, line 16
    16:     def version
    17:       5
    18:     end

version()

Returns the protocol version implemented by this driver. (5, in this case)

[Source]

        # File lib/net/sftp/protocol/05/base.rb, line 16
    16:     def version
    17:       5
    18:     end

[Validate]