--- !ruby/object:RI::ClassDescription 
attributes: 
- !ruby/object:RI::Attribute 
  comment: 
  - !ruby/struct:SM::Flow::P 
    body: The Net::SSH::Connection::Channel object that the SFTP session is being processed by.
  name: channel
  rw: R
- !ruby/object:RI::Attribute 
  comment: 
  - !ruby/struct:SM::Flow::P 
    body: The hash of pending requests. Any requests that have been sent and which the server has not yet responded to will be represented here.
  name: pending_requests
  rw: R
- !ruby/object:RI::Attribute 
  comment: 
  - !ruby/struct:SM::Flow::P 
    body: The protocol instance being used by this SFTP session. Useful for querying the protocol version in effect.
  name: protocol
  rw: R
- !ruby/object:RI::Attribute 
  comment: 
  - !ruby/struct:SM::Flow::P 
    body: A reference to the Net::SSH session object that powers this SFTP session.
  name: session
  rw: R
- !ruby/object:RI::Attribute 
  comment: 
  - !ruby/struct:SM::Flow::P 
    body: The state of the SFTP connection. It will be :opening, :subsystem, :init, :open, or :closed.
  name: state
  rw: R
class_methods: 
- !ruby/object:RI::MethodSummary 
  name: new
comment: 
- !ruby/struct:SM::Flow::P 
  body: The Session class encapsulates a single SFTP channel on a Net::SSH connection. Instances of this class are what most applications will interact with most, as it provides access to both low-level (mkdir, rename, remove, symlink, etc.) and high-level (upload, download, etc.) SFTP operations.
- !ruby/struct:SM::Flow::P 
  body: "Although Session makes it easy to do SFTP operations serially, you can also set up multiple operations to be done in parallel, too, without needing to resort to threading. You merely need to fire off the requests, and then run the event loop until all of the requests have completed:"
- !ruby/struct:SM::Flow::VERB 
  body: "  handle1 = sftp.open!(&quot;/path/to/file1&quot;)\n  handle2 = sftp.open!(&quot;/path/to/file2&quot;)\n\n  r1 = sftp.read(handle1, 0, 1024)\n  r2 = sftp.read(handle2, 0, 1024)\n  sftp.loop { [r1, r2].any? { |r| r.pending? } }\n\n  puts &quot;chunk #1: #{r1.response[:data]}&quot;\n  puts &quot;chunk #2: #{r2.response[:data]}&quot;\n"
- !ruby/struct:SM::Flow::P 
  body: By passing blocks to the operations, you can set up powerful state machines, to fire off subsequent operations. In fact, the Net::SFTP::Operations::Upload and Net::SFTP::Operations::Download classes set up such state machines, so that multiple uploads and/or downloads can be running simultaneously.
- !ruby/struct:SM::Flow::P 
  body: "The convention with the names of the operations is as follows: if the method name ends with an exclamation mark, like #read!, it will be synchronous (e.g., it will block until the server responds). Methods without an exclamation mark (e.g. #read) are asynchronous, and return before the server has responded. You will need to make sure the SSH event loop is run in order to process these requests. (See #loop.)"
constants: 
- !ruby/object:RI::Constant 
  comment: 
  - !ruby/struct:SM::Flow::P 
    body: The highest protocol version supported by the Net::SFTP library.
  name: HIGHEST_PROTOCOL_VERSION_SUPPORTED
  value: "6"
full_name: Net::SFTP::Session
includes: 
- !ruby/object:RI::IncludedModule 
  name: Net::SSH::Loggable
- !ruby/object:RI::IncludedModule 
  name: Net::SFTP::Constants::PacketTypes
instance_methods: 
- !ruby/object:RI::MethodSummary 
  name: block
- !ruby/object:RI::MethodSummary 
  name: block!
- !ruby/object:RI::MethodSummary 
  name: close
- !ruby/object:RI::MethodSummary 
  name: close!
- !ruby/object:RI::MethodSummary 
  name: close_channel
- !ruby/object:RI::MethodSummary 
  name: closed?
- !ruby/object:RI::MethodSummary 
  name: connect
- !ruby/object:RI::MethodSummary 
  name: connect!
- !ruby/object:RI::MethodSummary 
  name: dir
- !ruby/object:RI::MethodSummary 
  name: download
- !ruby/object:RI::MethodSummary 
  name: download!
- !ruby/object:RI::MethodSummary 
  name: file
- !ruby/object:RI::MethodSummary 
  name: fsetstat
- !ruby/object:RI::MethodSummary 
  name: fsetstat!
- !ruby/object:RI::MethodSummary 
  name: fstat
- !ruby/object:RI::MethodSummary 
  name: fstat!
- !ruby/object:RI::MethodSummary 
  name: link
- !ruby/object:RI::MethodSummary 
  name: link!
- !ruby/object:RI::MethodSummary 
  name: loop
- !ruby/object:RI::MethodSummary 
  name: lstat
- !ruby/object:RI::MethodSummary 
  name: lstat!
- !ruby/object:RI::MethodSummary 
  name: mkdir
- !ruby/object:RI::MethodSummary 
  name: mkdir!
- !ruby/object:RI::MethodSummary 
  name: open
- !ruby/object:RI::MethodSummary 
  name: open!
- !ruby/object:RI::MethodSummary 
  name: open?
- !ruby/object:RI::MethodSummary 
  name: opendir
- !ruby/object:RI::MethodSummary 
  name: opendir!
- !ruby/object:RI::MethodSummary 
  name: opening?
- !ruby/object:RI::MethodSummary 
  name: read
- !ruby/object:RI::MethodSummary 
  name: read!
- !ruby/object:RI::MethodSummary 
  name: readdir
- !ruby/object:RI::MethodSummary 
  name: readdir!
- !ruby/object:RI::MethodSummary 
  name: readlink
- !ruby/object:RI::MethodSummary 
  name: readlink!
- !ruby/object:RI::MethodSummary 
  name: realpath
- !ruby/object:RI::MethodSummary 
  name: realpath!
- !ruby/object:RI::MethodSummary 
  name: remove
- !ruby/object:RI::MethodSummary 
  name: remove!
- !ruby/object:RI::MethodSummary 
  name: rename
- !ruby/object:RI::MethodSummary 
  name: rename!
- !ruby/object:RI::MethodSummary 
  name: rmdir
- !ruby/object:RI::MethodSummary 
  name: rmdir!
- !ruby/object:RI::MethodSummary 
  name: send_packet
- !ruby/object:RI::MethodSummary 
  name: setstat
- !ruby/object:RI::MethodSummary 
  name: setstat!
- !ruby/object:RI::MethodSummary 
  name: stat
- !ruby/object:RI::MethodSummary 
  name: stat!
- !ruby/object:RI::MethodSummary 
  name: symlink
- !ruby/object:RI::MethodSummary 
  name: symlink!
- !ruby/object:RI::MethodSummary 
  name: unblock
- !ruby/object:RI::MethodSummary 
  name: unblock!
- !ruby/object:RI::MethodSummary 
  name: upload
- !ruby/object:RI::MethodSummary 
  name: upload!
- !ruby/object:RI::MethodSummary 
  name: write
- !ruby/object:RI::MethodSummary 
  name: write!
name: Session
superclass: Object
