jnr.posix.BaseIovec 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.Runtime;
import jnr.ffi.Memory;
import jnr.ffi.Pointer;
import jnr.ffi.StructLayout;
import java.nio.ByteBuffer;
/**
* @author Bob McWhirter
*/
public class BaseIovec implements Iovec {
public static class Layout extends StructLayout {
protected Layout(Runtime runtime) {
super(runtime);
}
public final Pointer iov_base = new Pointer();
public final size_t iov_len = new size_t();
}
public static final Layout layout = new Layout(Runtime.getSystemRuntime());
private final NativePOSIX posix;
protected final Pointer memory;
public String toString(String indent) {
StringBuffer buf = new StringBuffer();
buf.append( indent ).append( "iovec {\n" );
buf.append(indent).append( " iov_base=" ).append(layout.iov_base.get(this.memory)).append( ",\n" );
buf.append( indent ).append( " iov_len=" ).append( layout.iov_len.get( this.memory ) ).append(",\n");
buf.append(indent).append( "}" );
return buf.toString();
}
protected BaseIovec(NativePOSIX posix) {
this.posix = posix;
this.memory = Memory.allocate(posix.getRuntime(), layout.size());
}
BaseIovec(NativePOSIX posix, Pointer memory) {
this.posix = posix;
this.memory = memory;
}
public ByteBuffer get() {
int len = getLen();
byte[] bytes = new byte[len];
layout.iov_base.get( this.memory ).get(0, bytes, 0, len );
return ByteBuffer.wrap( bytes );
}
public void set(ByteBuffer buf) {
int len = buf.remaining();
layout.iov_base.set( this.memory, Pointer.wrap( posix.getRuntime(), buf ) );
setLen(len);
}
protected void setLen(int len) {
layout.iov_len.set( this.memory, len );
}
protected int getLen() {
return (int) layout.iov_len.get( this.memory );
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy