jnr.posix.SpawnFileAction Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of cassandra-driver Show documentation
Show all versions of cassandra-driver Show documentation
Shaded version of DataStax Java Driver for Apache Cassandra
package jnr.posix;
import jnr.ffi.Pointer;
public abstract class SpawnFileAction {
abstract boolean act(POSIX posix, Pointer nativeFileActions);
public static SpawnFileAction dup(int fd, int newfd) {
return new Dup(fd, newfd);
}
public static SpawnFileAction open(String path, int fd, int flags, int mode) {
return new Open(path, fd, flags, mode);
}
public static SpawnFileAction close(int fd) {
return new Close(fd);
}
private static final class Dup extends SpawnFileAction {
final int fd, newfd;
public Dup(int fd, int newfd) {
this.fd = fd;
this.newfd = newfd;
}
final boolean act(POSIX posix, Pointer nativeFileActions) {
return ((UnixLibC) posix.libc()).posix_spawn_file_actions_adddup2(nativeFileActions, fd, newfd) == 0;
}
public String toString() {
return "SpawnFileAction::Dup(old = " + fd + ", new = " + newfd + ")";
}
}
private static final class Open extends SpawnFileAction {
final String path;
final int fd;
final int flags, mode;
public Open(String path, int fd, int flags, int mode) {
this.path = path;
this.fd = fd;
this.flags = flags;
this.mode = mode;
}
final boolean act(POSIX posix, Pointer nativeFileActions) {
return ((UnixLibC) posix.libc()).posix_spawn_file_actions_addopen(nativeFileActions, fd, path, flags, mode) == 0;
}
public String toString() {
return "SpawnFileAction::Open(path = '" + path + "', fd = " + fd + ", flags = " + Integer.toHexString(flags) + ", mode = " + Integer.toHexString(mode) + ")";
}
}
private static final class Close extends SpawnFileAction {
final int fd;
public Close(int fd) {
this.fd = fd;
}
final boolean act(POSIX posix, Pointer nativeFileActions) {
return ((UnixLibC) posix.libc()).posix_spawn_file_actions_addclose(nativeFileActions, fd) == 0;
}
public String toString() {
return "SpawnFileAction::Close(fd = " + fd + ")";
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy