Class SftpOutputStreamAsync

  • All Implemented Interfaces:
    java.io.Closeable, java.io.Flushable, java.lang.AutoCloseable, java.nio.channels.Channel, SftpClientHolder

    public class SftpOutputStreamAsync
    extends OutputStreamWithChannel
    implements SftpClientHolder
    Implements an output stream for a given remote file
    • Field Detail

      • log

        protected final org.slf4j.Logger log
      • bb

        protected final byte[] bb
      • bufferSize

        protected final int bufferSize
      • buffer

        protected Buffer buffer
      • offset

        protected long offset
      • pendingAcks

        protected final java.util.Deque<SftpAckData> pendingAcks
      • path

        private final java.lang.String path
      • handleId

        private final byte[] handleId
      • ownsHandle

        private final boolean ownsHandle
      • bufferPool

        private final Buffer[] bufferPool
      • packetSize

        private final int packetSize
      • sftpPreamble

        private final int sftpPreamble
      • usePacket

        private final boolean usePacket
      • nextBuffer

        private int nextBuffer
    • Constructor Detail

      • SftpOutputStreamAsync

        public SftpOutputStreamAsync​(AbstractSftpClient client,
                                     int bufferSize,
                                     java.lang.String path,
                                     java.util.Collection<SftpClient.OpenMode> mode)
                              throws java.io.IOException
        Creates a new stream to write data to a remote file.
        Parameters:
        client - AbstractSftpClient to use for writing data
        bufferSize - SFTP packet length to use. Most servers have a limit of 256kB. If zero, the stream picks a size such that each SFTP packet fits into a single SSH packet, i.e., roughly 32kB.
        path - remote path to write to
        mode - SftpClient.OpenModes for opening the file.
        Throws:
        java.io.IOException - if the remote file cannot be opened
      • SftpOutputStreamAsync

        public SftpOutputStreamAsync​(AbstractSftpClient client,
                                     int bufferSize,
                                     java.lang.String path,
                                     SftpClient.CloseableHandle handle)
        Creates a new stream to write data to a remote file.
        Parameters:
        client - AbstractSftpClient to use for writing data
        bufferSize - SFTP packet length to use. Most servers have a limit of 256kB. If zero, the stream picks a size such that each SFTP packet fits into a single SSH packet, i.e., roughly 32kB.
        handle - SftpClient.CloseableHandle of the remote file to write to; will be closed when this output stream is closed
      • SftpOutputStreamAsync

        public SftpOutputStreamAsync​(AbstractSftpClient client,
                                     int bufferSize,
                                     java.lang.String path,
                                     SftpClient.CloseableHandle handle,
                                     boolean closeHandle)
        Creates a new stream to write data to a remote file.
        Parameters:
        client - AbstractSftpClient to use for writing data
        bufferSize - SFTP packet length to use. Most servers have a limit of 256kB. If zero, the stream picks a size such that each SFTP packet fits into a single SSH packet, i.e., roughly 32kB.
        handle - SftpClient.CloseableHandle of the remote file to write to
        closeHandle - whether to close the handle when this output stream is closed
    • Method Detail

      • setOffset

        public void setOffset​(long offset)
      • getPath

        public final java.lang.String getPath()
        The remotely accessed file path
        Returns:
        Remote file path
      • isOpen

        public boolean isOpen()
        Specified by:
        isOpen in interface java.nio.channels.Channel
      • write

        public void write​(int b)
                   throws java.io.IOException
        Specified by:
        write in class java.io.OutputStream
        Throws:
        java.io.IOException
      • write

        public void write​(byte[] b,
                          int off,
                          int len)
                   throws java.io.IOException
        Overrides:
        write in class java.io.OutputStream
        Throws:
        java.io.IOException
      • transferFrom

        public long transferFrom​(java.io.InputStream stream)
                          throws java.io.IOException
        Throws:
        java.io.IOException
      • transferFrom

        public long transferFrom​(java.nio.channels.ReadableByteChannel stream,
                                 long count)
                          throws java.io.IOException
        Throws:
        java.io.IOException
      • internalTransfer

        private long internalTransfer​(SftpOutputStreamAsync.ByteInput stream,
                                      boolean forceFlush)
                               throws java.io.IOException
        Throws:
        java.io.IOException
      • flush

        public void flush()
                   throws java.io.IOException
        Specified by:
        flush in interface java.io.Flushable
        Overrides:
        flush in class java.io.OutputStream
        Throws:
        java.io.IOException
      • internalFlush

        private void internalFlush()
                            throws java.io.IOException
        Throws:
        java.io.IOException
      • checkStatus

        private void checkStatus​(AbstractSftpClient client,
                                 Buffer buf)
                          throws java.io.IOException
        Throws:
        java.io.IOException
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.nio.channels.Channel
        Specified by:
        close in interface java.io.Closeable
        Overrides:
        close in class java.io.OutputStream
        Throws:
        java.io.IOException
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object