com.trilead.ssh2.sftp
Class OpenFlags

java.lang.Object
  extended by com.trilead.ssh2.sftp.OpenFlags

public class OpenFlags
extends java.lang.Object

SFTP Open Flags. The following table is provided to assist in mapping POSIX semantics to equivalent SFTP file open parameters:

TODO: This comment should be moved to the open method.


Field Summary
static int SSH_FXF_ACCESS_APPEND_DATA
          Data is always written at the end of the file.
static int SSH_FXF_ACCESS_APPEND_DATA_ATOMIC
          Data is always written at the end of the file.
static int SSH_FXF_ACCESS_BLOCK_ADVISORY
          If this bit is set, the above BLOCK modes are advisory.
static int SSH_FXF_ACCESS_BLOCK_DELETE
          The server MUST guarantee that no other handle has been opened with ACE4_DELETE access, opened with the SSH_FXF_ACCESS_DELETE_ON_CLOSE flag set, and that no other handle will be opened with ACE4_DELETE access or with the SSH_FXF_ACCESS_DELETE_ON_CLOSE flag set, and that the file itself is not deleted in any other way until the client closes the handle.
static int SSH_FXF_ACCESS_BLOCK_READ
          The server MUST guarantee that no other handle has been opened with ACE4_READ_DATA access, and that no other handle will be opened with ACE4_READ_DATA access until the client closes the handle.
static int SSH_FXF_ACCESS_BLOCK_WRITE
          The server MUST guarantee that no other handle has been opened with ACE4_WRITE_DATA or ACE4_APPEND_DATA access, and that no other handle will be opened with ACE4_WRITE_DATA or ACE4_APPEND_DATA access until the client closes the handle.
static int SSH_FXF_ACCESS_DELETE_ON_CLOSE
          The file should be deleted when the last handle to it is closed.
static int SSH_FXF_ACCESS_DISPOSITION
          Disposition is a 3 bit field that controls how the file is opened.
static int SSH_FXF_ACCESS_NOFOLLOW
          If the final component of the path is a symlink, then the open MUST fail, and the error SSH_FX_LINK_LOOP MUST be returned.
static int SSH_FXF_ACCESS_TEXT_MODE
          Indicates that the server should treat the file as text and convert it to the canonical newline convention in use.
static int SSH_FXF_CREATE_NEW
          A new file is created; if the file already exists, the server MUST return status SSH_FX_FILE_ALREADY_EXISTS.
static int SSH_FXF_CREATE_TRUNCATE
          A new file is created; if the file already exists, it is opened and truncated.
static int SSH_FXF_OPEN_EXISTING
          An existing file is opened.
static int SSH_FXF_OPEN_OR_CREATE
          If the file exists, it is opened.
static int SSH_FXF_TRUNCATE_EXISTING
          An existing file is opened and truncated.
 
Constructor Summary
OpenFlags()
           
 
Method Summary
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SSH_FXF_ACCESS_DISPOSITION

public static final int SSH_FXF_ACCESS_DISPOSITION
Disposition is a 3 bit field that controls how the file is opened. The server MUST support these bits (possible enumaration values: SSH_FXF_CREATE_NEW, SSH_FXF_CREATE_TRUNCATE, SSH_FXF_OPEN_EXISTING, SSH_FXF_OPEN_OR_CREATE or SSH_FXF_TRUNCATE_EXISTING).

See Also:
Constant Field Values

SSH_FXF_CREATE_NEW

public static final int SSH_FXF_CREATE_NEW
A new file is created; if the file already exists, the server MUST return status SSH_FX_FILE_ALREADY_EXISTS.

See Also:
Constant Field Values

SSH_FXF_CREATE_TRUNCATE

public static final int SSH_FXF_CREATE_TRUNCATE
A new file is created; if the file already exists, it is opened and truncated.

See Also:
Constant Field Values

SSH_FXF_OPEN_EXISTING

public static final int SSH_FXF_OPEN_EXISTING
An existing file is opened. If the file does not exist, the server MUST return SSH_FX_NO_SUCH_FILE. If a directory in the path does not exist, the server SHOULD return SSH_FX_NO_SUCH_PATH. It is also acceptable if the server returns SSH_FX_NO_SUCH_FILE in this case.

See Also:
Constant Field Values

SSH_FXF_OPEN_OR_CREATE

public static final int SSH_FXF_OPEN_OR_CREATE
If the file exists, it is opened. If the file does not exist, it is created.

See Also:
Constant Field Values

SSH_FXF_TRUNCATE_EXISTING

public static final int SSH_FXF_TRUNCATE_EXISTING
An existing file is opened and truncated. If the file does not exist, the server MUST return the same error codes as defined for SSH_FXF_OPEN_EXISTING.

See Also:
Constant Field Values

SSH_FXF_ACCESS_APPEND_DATA

public static final int SSH_FXF_ACCESS_APPEND_DATA
Data is always written at the end of the file. The offset field of the SSH_FXP_WRITE requests are ignored.

Data is not required to be appended atomically. This means that if multiple writers attempt to append data simultaneously, data from the first may be lost. However, data MAY be appended atomically.

See Also:
Constant Field Values

SSH_FXF_ACCESS_APPEND_DATA_ATOMIC

public static final int SSH_FXF_ACCESS_APPEND_DATA_ATOMIC
Data is always written at the end of the file. The offset field of the SSH_FXP_WRITE requests are ignored.

Data MUST be written atomically so that there is no chance that multiple appenders can collide and result in data being lost.

If both append flags are specified, the server SHOULD use atomic append if it is available, but SHOULD use non-atomic appends otherwise. The server SHOULD NOT fail the request in this case.

See Also:
Constant Field Values

SSH_FXF_ACCESS_TEXT_MODE

public static final int SSH_FXF_ACCESS_TEXT_MODE
Indicates that the server should treat the file as text and convert it to the canonical newline convention in use. (See Determining Server Newline Convention in section 5.3 in the SFTP standard draft).

When a file is opened with this flag, the offset field in the read and write functions is ignored.

Servers MUST process multiple, parallel reads and writes correctly in this mode. Naturally, it is permissible for them to do this by serializing the requests.

Clients SHOULD use the SSH_FXF_ACCESS_APPEND_DATA flag to append data to a text file rather then using write with a calculated offset.

See Also:
Constant Field Values

SSH_FXF_ACCESS_BLOCK_READ

public static final int SSH_FXF_ACCESS_BLOCK_READ
The server MUST guarantee that no other handle has been opened with ACE4_READ_DATA access, and that no other handle will be opened with ACE4_READ_DATA access until the client closes the handle. (This MUST apply both to other clients and to other processes on the server.)

If there is a conflicting lock the server MUST return SSH_FX_LOCK_CONFLICT. If the server cannot make the locking guarantee, it MUST return SSH_FX_OP_UNSUPPORTED.

Other handles MAY be opened for ACE4_WRITE_DATA or any other combination of accesses, as long as ACE4_READ_DATA is not included in the mask.

See Also:
Constant Field Values

SSH_FXF_ACCESS_BLOCK_WRITE

public static final int SSH_FXF_ACCESS_BLOCK_WRITE
The server MUST guarantee that no other handle has been opened with ACE4_WRITE_DATA or ACE4_APPEND_DATA access, and that no other handle will be opened with ACE4_WRITE_DATA or ACE4_APPEND_DATA access until the client closes the handle. (This MUST apply both to other clients and to other processes on the server.)

If there is a conflicting lock the server MUST return SSH_FX_LOCK_CONFLICT. If the server cannot make the locking guarantee, it MUST return SSH_FX_OP_UNSUPPORTED.

Other handles MAY be opened for ACE4_READ_DATA or any other combination of accesses, as long as neither ACE4_WRITE_DATA nor ACE4_APPEND_DATA are included in the mask.

See Also:
Constant Field Values

SSH_FXF_ACCESS_BLOCK_DELETE

public static final int SSH_FXF_ACCESS_BLOCK_DELETE
The server MUST guarantee that no other handle has been opened with ACE4_DELETE access, opened with the SSH_FXF_ACCESS_DELETE_ON_CLOSE flag set, and that no other handle will be opened with ACE4_DELETE access or with the SSH_FXF_ACCESS_DELETE_ON_CLOSE flag set, and that the file itself is not deleted in any other way until the client closes the handle.

If there is a conflicting lock the server MUST return SSH_FX_LOCK_CONFLICT. If the server cannot make the locking guarantee, it MUST return SSH_FX_OP_UNSUPPORTED.

See Also:
Constant Field Values

SSH_FXF_ACCESS_BLOCK_ADVISORY

public static final int SSH_FXF_ACCESS_BLOCK_ADVISORY
If this bit is set, the above BLOCK modes are advisory. In advisory mode, only other accesses that specify a BLOCK mode need be considered when determining whether the BLOCK can be granted, and the server need not prevent I/O operations that violate the block mode.

The server MAY perform mandatory locking even if the BLOCK_ADVISORY bit is set.

See Also:
Constant Field Values

SSH_FXF_ACCESS_NOFOLLOW

public static final int SSH_FXF_ACCESS_NOFOLLOW
If the final component of the path is a symlink, then the open MUST fail, and the error SSH_FX_LINK_LOOP MUST be returned.

See Also:
Constant Field Values

SSH_FXF_ACCESS_DELETE_ON_CLOSE

public static final int SSH_FXF_ACCESS_DELETE_ON_CLOSE
The file should be deleted when the last handle to it is closed. (The last handle may not be an sftp-handle.) This MAY be emulated by a server if the OS doesn't support it by deleting the file when this handle is closed.

It is implementation specific whether the directory entry is removed immediately or when the handle is closed.

See Also:
Constant Field Values
Constructor Detail

OpenFlags

public OpenFlags()