class Net::SFTP::Protocol::Base

The abstract superclass of the specific implementations for each supported SFTP protocol version. It implements general packet parsing logic, and provides a way for subclasses to send requests.

Attributes

session[R]

The SFTP session object that acts as client to this protocol instance

Public Class Methods

new(session) click to toggle source

Create a new instance of a protocol driver, servicing the given session.

# File lib/net/sftp/protocol/base.rb, line 18
def initialize(session)
  @session = session
  self.logger = session.logger
  @request_id_counter = -1
end

Public Instance Methods

parse(packet) click to toggle source

Attept to parse the given packet. If the packet is of an unsupported type, an exception will be raised. Returns the parsed data as a hash (the keys in the hash are packet-type specific).

# File lib/net/sftp/protocol/base.rb, line 27
def parse(packet)
  case packet.type
  when FXP_STATUS then parse_status_packet(packet)
  when FXP_HANDLE then parse_handle_packet(packet)
  when FXP_DATA   then parse_data_packet(packet)
  when FXP_NAME   then parse_name_packet(packet)
  when FXP_ATTRS  then parse_attrs_packet(packet)
  else raise NotImplementedError, "unknown packet type: #{packet.type}"
  end
end

Private Instance Methods

send_request(type, *args) click to toggle source

Send a new packet of the given type, and with the given data arguments. A new request identifier will be allocated to this request, and will be returned.

# File lib/net/sftp/protocol/base.rb, line 43
def send_request(type, *args)
  @request_id_counter += 1
  session.send_packet(type, :long, @request_id_counter, *args)
  return @request_id_counter
end