class HrrRbSftp::Protocol

This class implements SFTP protocol operations.

Public Class Methods

extension_pairs(version) click to toggle source

@return [Array] A list of extension-pair that the library supports.

# File lib/hrr_rb_sftp/protocol.rb, line 19
def self.extension_pairs version
  version_class = const_get(:"Version#{version}")
  if version_class.const_defined?(:Extensions)
    version_class::Extensions.extension_pairs
  else
    []
  end
end
new(version, logger: nil) click to toggle source

@param version [Integer] Protocol version. @param logger [Logger] Logger.

# File lib/hrr_rb_sftp/protocol.rb, line 32
def initialize version, logger: nil
  self.logger = logger

  @context = Hash.new
  @context[:version] = version
  @context[:handles] = Hash.new
  @packets = self.class.const_get(:"Version#{version}")::Packets.new(@context, logger: logger)
end
versions() click to toggle source

@return [Array] A list of SFTP protocol versions that the library supports.

# File lib/hrr_rb_sftp/protocol.rb, line 12
def self.versions
  constants.select{|c| c.to_s.start_with?("Version")}.map{|c| const_get(c)}.map{|klass| klass::PROTOCOL_VERSION}
end

Public Instance Methods

close_handles() click to toggle source

Closes opened and not closed handles.

# File lib/hrr_rb_sftp/protocol.rb, line 54
def close_handles
  log_info { "closing handles" }
  @context[:handles].each do |k, v|
    v.close rescue nil
  end
  @context[:handles].clear
  log_info { "handles closed" }
end
respond_to(request_payload) click to toggle source

Responds to a request.

@param request_payload [String] Request payload. @return [String] Response payload that is encoded packet generated by each SFTP protocol version and each request responder.

# File lib/hrr_rb_sftp/protocol.rb, line 47
def respond_to request_payload
  @packets.respond_to request_payload
end