class Net::SFTP::Protocol::V04::Base

  1. lib/net/sftp/protocol/04/base.rb
Parent: V04

Wraps the low-level SFTP calls for version 4 of the SFTP protocol. Also implements the updated FXP_NAME packet parsing as mandated by v4 of the 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

Public Instance

  1. fstat
  2. lstat
  3. parse_name_packet
  4. stat
  5. version

Protected Instance

  1. attribute_factory
  2. name_factory

Constants

DEFAULT_FLAGS = Attributes::F_SIZE | Attributes::F_PERMISSIONS | Attributes::F_ACCESSTIME | Attributes::F_CREATETIME | Attributes::F_MODIFYTIME | Attributes::F_ACL | Attributes::F_OWNERGROUP | Attributes::F_SUBSECOND_TIMES | Attributes::F_EXTENDED  

The default flags used if the flags parameter is nil for any of the stat, lstat, or fstat operations.

Public Instance methods

fstat (handle, flags=nil)

Sends a FXP_FSTAT packet to the server for the given path, and with the given flags. If flags is nil, it defaults to F_SIZE | F_PERMISSIONS | F_ACCESSTIME | F_CREATETIME | F_MODIFYTIME | F_ACL | F_OWNERGROUP | F_SUBSECOND_TIMES | F_EXTENDED (see Net::SFTP::Protocol::V04::Attributes for those constants).

[show source]
# File lib/net/sftp/protocol/04/base.rb, line 63
def fstat(handle, flags=nil)
  send_request(FXP_FSTAT, :string, handle, :long, flags || DEFAULT_FLAGS)
end
lstat (path, flags=nil)

Sends a FXP_LSTAT packet to the server for the given path, and with the given flags. If flags is nil, it defaults to F_SIZE | F_PERMISSIONS | F_ACCESSTIME | F_CREATETIME | F_MODIFYTIME | F_ACL | F_OWNERGROUP | F_SUBSECOND_TIMES | F_EXTENDED (see Net::SFTP::Protocol::V04::Attributes for those constants).

[show source]
# File lib/net/sftp/protocol/04/base.rb, line 54
def lstat(path, flags=nil)
  send_request(FXP_LSTAT, :string, path, :long, flags || DEFAULT_FLAGS)
end
parse_name_packet (packet)

As of v4 of the SFTP protocol, the "longname" member was removed from the FXP_NAME structure. This method is essentially the same as the previous implementation, but omits longname.

[show source]
# File lib/net/sftp/protocol/04/base.rb, line 28
def parse_name_packet(packet)
  names = []

  packet.read_long.times do
    filename = packet.read_string
    attrs    = attribute_factory.from_buffer(packet)
    names   << name_factory.new(filename, attrs)
  end

  { :names => names }
end
stat (path, flags=nil)

Sends a FXP_STAT packet to the server for the given path, and with the given flags. If flags is nil, it defaults to F_SIZE | F_PERMISSIONS | F_ACCESSTIME | F_CREATETIME | F_MODIFYTIME | F_ACL | F_OWNERGROUP | F_SUBSECOND_TIMES | F_EXTENDED (see Net::SFTP::Protocol::V04::Attributes for those constants).

[show source]
# File lib/net/sftp/protocol/04/base.rb, line 45
def stat(path, flags=nil)
  send_request(FXP_STAT, :string, path, :long, flags || DEFAULT_FLAGS)
end
version ()

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

[show source]
# File lib/net/sftp/protocol/04/base.rb, line 21
def version
  4
end

Protected Instance methods

attribute_factory ()

Returns the Attributes class used by this version of the protocol (Net::SFTP::Protocol::V04::Attributes, in this case)

[show source]
# File lib/net/sftp/protocol/04/base.rb, line 83
def attribute_factory
  V04::Attributes
end
name_factory ()

Returns the Name class used by this version of the protocol (Net::SFTP::Protocol::V04::Name, in this case)

[show source]
# File lib/net/sftp/protocol/04/base.rb, line 89
def name_factory
  V04::Name
end