Package org.apache.sshd.sftp.client.impl
Class SftpRemotePathChannel
- java.lang.Object
-
- java.nio.channels.spi.AbstractInterruptibleChannel
-
- java.nio.channels.FileChannel
-
- org.apache.sshd.sftp.client.impl.SftpRemotePathChannel
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,java.nio.channels.ByteChannel,java.nio.channels.Channel,java.nio.channels.GatheringByteChannel,java.nio.channels.InterruptibleChannel,java.nio.channels.ReadableByteChannel,java.nio.channels.ScatteringByteChannel,java.nio.channels.SeekableByteChannel,java.nio.channels.WritableByteChannel
public class SftpRemotePathChannel extends java.nio.channels.FileChannel
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.concurrent.atomic.AtomicReference<java.lang.Thread>blockingThreadHolderprotected booleancloseOnExitprotected SftpClient.CloseableHandlehandleprotected java.lang.Objectlockprotected org.slf4j.Loggerlogprotected java.util.Collection<SftpClient.OpenMode>modesprivate java.lang.Stringpathprotected java.util.concurrent.atomic.AtomicLongposTrackerstatic java.util.Set<SftpClient.OpenMode>READ_MODESprotected SftpClientsftpstatic java.util.Set<SftpClient.OpenMode>WRITE_MODES
-
Constructor Summary
Constructors Constructor Description SftpRemotePathChannel(java.lang.String path, SftpClient sftp, boolean closeOnExit, java.util.Collection<SftpClient.OpenMode> modes)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidbeginBlocking(java.lang.Object actionHint)protected longdoRead(java.util.Collection<? extends java.nio.ByteBuffer> buffers, long position)protected longdoWrite(java.util.Collection<? extends java.nio.ByteBuffer> buffers, long position)protected voidendBlocking(java.lang.Object actionHint, boolean completed)private voidensureOpen(java.util.Collection<SftpClient.OpenMode> reqModes)Checks that the channel is open and that its current mode contains at least one of the required onesvoidforce(boolean metaData)java.lang.StringgetRemotePath()protected voidimplCloseChannel()java.nio.channels.FileLocklock(long position, long size, boolean shared)java.nio.MappedByteBuffermap(java.nio.channels.FileChannel.MapMode mode, long position, long size)longposition()java.nio.channels.FileChannelposition(long newPosition)intread(java.nio.ByteBuffer dst)longread(java.nio.ByteBuffer[] dsts, int offset, int length)intread(java.nio.ByteBuffer dst, long position)longsize()java.lang.StringtoString()longtransferFrom(java.nio.channels.ReadableByteChannel src, long position, long count)longtransferTo(long position, long count, java.nio.channels.WritableByteChannel target)java.nio.channels.FileChanneltruncate(long size)java.nio.channels.FileLocktryLock(long position, long size, boolean shared)intwrite(java.nio.ByteBuffer src)longwrite(java.nio.ByteBuffer[] srcs, int offset, int length)intwrite(java.nio.ByteBuffer src, long position)-
Methods inherited from class java.nio.channels.spi.AbstractInterruptibleChannel
begin, close, end, isOpen
-
-
-
-
Field Detail
-
READ_MODES
public static final java.util.Set<SftpClient.OpenMode> READ_MODES
-
WRITE_MODES
public static final java.util.Set<SftpClient.OpenMode> WRITE_MODES
-
log
protected final org.slf4j.Logger log
-
modes
protected final java.util.Collection<SftpClient.OpenMode> modes
-
closeOnExit
protected final boolean closeOnExit
-
sftp
protected final SftpClient sftp
-
handle
protected final SftpClient.CloseableHandle handle
-
lock
protected final java.lang.Object lock
-
posTracker
protected final java.util.concurrent.atomic.AtomicLong posTracker
-
blockingThreadHolder
protected final java.util.concurrent.atomic.AtomicReference<java.lang.Thread> blockingThreadHolder
-
path
private final java.lang.String path
-
-
Constructor Detail
-
SftpRemotePathChannel
public SftpRemotePathChannel(java.lang.String path, SftpClient sftp, boolean closeOnExit, java.util.Collection<SftpClient.OpenMode> modes) throws java.io.IOException- Throws:
java.io.IOException
-
-
Method Detail
-
getRemotePath
public java.lang.String getRemotePath()
-
read
public int read(java.nio.ByteBuffer dst) throws java.io.IOException- Specified by:
readin interfacejava.nio.channels.ReadableByteChannel- Specified by:
readin interfacejava.nio.channels.SeekableByteChannel- Specified by:
readin classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
read
public int read(java.nio.ByteBuffer dst, long position) throws java.io.IOException- Specified by:
readin classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
read
public long read(java.nio.ByteBuffer[] dsts, int offset, int length) throws java.io.IOException- Specified by:
readin interfacejava.nio.channels.ScatteringByteChannel- Specified by:
readin classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
doRead
protected long doRead(java.util.Collection<? extends java.nio.ByteBuffer> buffers, long position) throws java.io.IOException- Throws:
java.io.IOException
-
write
public int write(java.nio.ByteBuffer src) throws java.io.IOException- Specified by:
writein interfacejava.nio.channels.SeekableByteChannel- Specified by:
writein interfacejava.nio.channels.WritableByteChannel- Specified by:
writein classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
write
public int write(java.nio.ByteBuffer src, long position) throws java.io.IOException- Specified by:
writein classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
write
public long write(java.nio.ByteBuffer[] srcs, int offset, int length) throws java.io.IOException- Specified by:
writein interfacejava.nio.channels.GatheringByteChannel- Specified by:
writein classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
doWrite
protected long doWrite(java.util.Collection<? extends java.nio.ByteBuffer> buffers, long position) throws java.io.IOException- Throws:
java.io.IOException
-
position
public long position() throws java.io.IOException- Specified by:
positionin interfacejava.nio.channels.SeekableByteChannel- Specified by:
positionin classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
position
public java.nio.channels.FileChannel position(long newPosition) throws java.io.IOException- Specified by:
positionin interfacejava.nio.channels.SeekableByteChannel- Specified by:
positionin classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
size
public long size() throws java.io.IOException- Specified by:
sizein interfacejava.nio.channels.SeekableByteChannel- Specified by:
sizein classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
truncate
public java.nio.channels.FileChannel truncate(long size) throws java.io.IOException- Specified by:
truncatein interfacejava.nio.channels.SeekableByteChannel- Specified by:
truncatein classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
force
public void force(boolean metaData) throws java.io.IOException- Specified by:
forcein classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
transferTo
public long transferTo(long position, long count, java.nio.channels.WritableByteChannel target) throws java.io.IOException- Specified by:
transferToin classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
transferFrom
public long transferFrom(java.nio.channels.ReadableByteChannel src, long position, long count) throws java.io.IOException- Specified by:
transferFromin classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
map
public java.nio.MappedByteBuffer map(java.nio.channels.FileChannel.MapMode mode, long position, long size) throws java.io.IOException- Specified by:
mapin classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
lock
public java.nio.channels.FileLock lock(long position, long size, boolean shared) throws java.io.IOException- Specified by:
lockin classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
tryLock
public java.nio.channels.FileLock tryLock(long position, long size, boolean shared) throws java.io.IOException- Specified by:
tryLockin classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
implCloseChannel
protected void implCloseChannel() throws java.io.IOException- Specified by:
implCloseChannelin classjava.nio.channels.spi.AbstractInterruptibleChannel- Throws:
java.io.IOException
-
beginBlocking
protected void beginBlocking(java.lang.Object actionHint)
-
endBlocking
protected void endBlocking(java.lang.Object actionHint, boolean completed) throws java.nio.channels.AsynchronousCloseException- Throws:
java.nio.channels.AsynchronousCloseException
-
ensureOpen
private void ensureOpen(java.util.Collection<SftpClient.OpenMode> reqModes) throws java.io.IOException
Checks that the channel is open and that its current mode contains at least one of the required ones- Parameters:
reqModes- The required modes - ignored ifnull/empty- Throws:
java.io.IOException- If channel not open or the required modes are not satisfied
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-