jnr.posix.SpawnAttribute 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.*;
import jnr.ffi.byref.NumberByReference;
public abstract class SpawnAttribute {
public static final int RESETIDS = 0x0001; /* [SPN] R[UG]ID not E[UG]ID */
public static final int SETPGROUP = 0x0002; /* [SPN] set non-parent PGID */
public static final int SETSIGDEF = 0x0004; /* [SPN] reset sigset default */
public static final int SETSIGMASK = 0x0008; /* [SPN] set signal mask */
abstract boolean set(POSIX posix, Pointer nativeFileActions);
public static SpawnAttribute pgroup(long pgroup) {
return new PGroup(pgroup);
}
public static SpawnAttribute flags(short flags) {
return new SetFlags(flags);
}
public static SpawnAttribute sigdef(long sigdef) {
throw new RuntimeException("sigdefault not yet supported");
// return new Sigdef(sigdef);
}
public static SpawnAttribute sigmask(long sigmask) {
throw new RuntimeException("sigmask not yet supported");
// return new Sigmask(sigmask);
}
private static final class PGroup extends SpawnAttribute {
final long pgroup;
public PGroup(long pgroup) {
this.pgroup = pgroup;
}
final boolean set(POSIX posix, Pointer nativeSpawnAttr) {
return ((UnixLibC) posix.libc()).posix_spawnattr_setpgroup(nativeSpawnAttr, pgroup) == 0;
}
public String toString() {
return "SpawnAttribute::PGroup(pgroup = " + pgroup + ")";
}
}
private static final class SetFlags extends SpawnAttribute {
final short flags;
public SetFlags(short flags) {
this.flags = flags;
}
final boolean set(POSIX posix, Pointer nativeSpawnAttr) {
return ((UnixLibC) posix.libc()).posix_spawnattr_setflags(nativeSpawnAttr, flags) == 0;
}
public String toString() {
return "SpawnAttribute::SetFlags(flags = " + Integer.toHexString(flags) + ")";
}
}
private static final class Sigmask extends SpawnAttribute {
final long sigmask;
public Sigmask(long sigmask) {
this.sigmask = sigmask;
}
final boolean set(POSIX posix, Pointer nativeSpawnAttr) {
throw new RuntimeException("sigmask not yet supported");
// return ((UnixLibC) posix.libc()).posix_spawnattr_setsigmask(nativeSpawnAttr, mask) == 0;
}
public String toString() {
return "SpawnAttribute::Sigmask(mask = " + Long.toHexString(sigmask) + ")";
}
}
private static final class Sigdef extends SpawnAttribute {
final long sigdef;
public Sigdef(long sigdef) {
this.sigdef = sigdef;
}
final boolean set(POSIX posix, Pointer nativeSpawnAttr) {
throw new RuntimeException("sigdefault not yet supported");
// return ((UnixLibC) posix.libc()).posix_spawnattr_setsigdefault(nativeSpawnAttr, sigdef) == 0;
}
public String toString() {
return "SpawnAttribute::Sigdef(def = " + Long.toHexString(sigdef) + ")";
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy