package ru.serce.jnrfuse.struct; import jnr.ffi.BaseStruct; import ru.serce.jnrfuse.flags.FuseBufFlags; /** * Single data buffer * <p> * Generic data buffer for I/O, extended attributes, etc... Data may * be supplied as a memory pointer or as a file descriptor */ public class FuseBuf extends BaseStruct { protected FuseBuf(jnr.ffi.Runtime runtime) { super(runtime); } /** * Size of data in bytes */ public final size_t size = new size_t(); /** * Buffer flags */ public final Enum<FuseBufFlags> flags = new Enum<>(FuseBufFlags.class); /** * Memory pointer * <p> * Used unless FUSE_BUF_IS_FD flag is set. */ public final Pointer mem = new Pointer(); /** * File descriptor * <p> * Used if FUSE_BUF_IS_FD flag is set. */ public final Signed32 fd = new Signed32(); /** * File position * <p> * Used if FUSE_BUF_FD_SEEK flag is set. */ public final off_t pos = new off_t(); public static FuseBuf of(jnr.ffi.Pointer pointer) { FuseBuf buf = new FuseBuf(jnr.ffi.Runtime.getSystemRuntime()); buf.useMemory(pointer); return buf; } }