jnr.posix.LinuxMsgHdr Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of driver-cql-shaded Show documentation
Show all versions of driver-cql-shaded Show documentation
A Shaded CQL ActivityType driver for http://nosqlbench.io/
package jnr.posix;
import jnr.ffi.Pointer;
import jnr.ffi.Runtime;
import jnr.ffi.StructLayout;
/**
* @author Bob McWhirter
*/
class LinuxMsgHdr extends BaseMsgHdr {
public static class Layout extends StructLayout {
protected Layout(Runtime runtime) {
super(runtime);
}
public final Pointer msg_name = new Pointer();
public final socklen_t msg_namelen = new socklen_t();
public final Pointer msg_iov = new Pointer();
public final size_t msg_iovlen = new size_t();
public final Pointer msg_control = new Pointer();
public final size_t msg_controllen = new size_t();
public final Signed32 msg_flags = new Signed32();
}
private static final Layout layout = new Layout(Runtime.getSystemRuntime());
protected LinuxMsgHdr(NativePOSIX posix) {
super(posix, layout);
setName(null);
}
CmsgHdr allocateCmsgHdrInternal(NativePOSIX posix, Pointer pointer, int len) {
if (len > 0) {
return new LinuxCmsgHdr(posix, pointer, len);
} else {
return new LinuxCmsgHdr(posix, pointer);
}
}
@Override
void setControlPointer(Pointer control) {
layout.msg_control.set(this.memory, control);
}
@Override
void setControlLen(int len) {
layout.msg_controllen.set(this.memory, len);
}
public String toString() {
StringBuffer buf = new StringBuffer();
buf.append("msghdr {\n");
buf.append(" msg_name=").append(getName()).append(",\n");
buf.append(" msg_namelen=").append(getNameLen()).append(",\n");
buf.append(" msg_iov=[\n");
Pointer iovp = layout.msg_iov.get(this.memory);
int numIov = getIovLen();
for (int i = 0; i < numIov; ++i) {
Pointer eachp = iovp.slice(i * BaseIovec.layout.size());
buf.append(new BaseIovec(posix, eachp).toString(" "));
if (i < (numIov - 1)) {
buf.append(",\n");
} else {
buf.append("\n");
}
}
buf.append(" ],\n");
buf.append(" msg_control=[\n");
CmsgHdr[] controls = getControls();
for (int i = 0; i < controls.length; ++i) {
buf.append(((MacOSCmsgHdr) controls[i]).toString(" "));
if (i < controls.length - 1) {
buf.append(",\n");
} else {
buf.append("\n");
}
}
buf.append(" ],\n");
buf.append(" msg_controllen=").append(layout.msg_controllen.get(this.memory)).append("\n");
buf.append(" msg_iovlen=").append(getIovLen()).append(",\n");
buf.append(" msg_flags=").append(getFlags()).append(",\n");
buf.append("}");
return buf.toString();
}
@Override
void setNamePointer(Pointer name) {
layout.msg_name.set( this.memory, name );
}
@Override
Pointer getNamePointer() {
return layout.msg_name.get( this.memory );
}
@Override
void setNameLen(int len) {
layout.msg_namelen.set(this.memory, len);
}
@Override
int getNameLen() {
return (int) layout.msg_namelen.get(this.memory);
}
@Override
void setIovPointer(Pointer iov) {
layout.msg_iov.set(this.memory, iov);
}
@Override
Pointer getIovPointer() {
return layout.msg_iov.get( this.memory );
}
@Override
void setIovLen(int len) {
layout.msg_iovlen.set(this.memory, len);
}
@Override
int getIovLen() {
return (int) layout.msg_iovlen.get(this.memory);
}
@Override
Pointer getControlPointer() {
return layout.msg_control.get(this.memory);
}
public int getControlLen() {
return (int) layout.msg_controllen.get(this.memory);
}
public void setFlags(int flags) {
layout.msg_flags.set(this.memory, flags);
}
public int getFlags() {
return layout.msg_flags.get(this.memory);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy