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