package net.fusejna; import java.nio.ByteBuffer; import java.util.Arrays; public final class XattrFiller { private final ByteBuffer buffer; private final long maxSize; private final int position; private byte[] value = null; private boolean isSet = false; XattrFiller(final ByteBuffer buffer, final long size, final int position) { this.buffer = buffer; maxSize = size; this.position = position; } long getSize() { return value == null ? 0 : value.length; } public final void set(byte[] value) { if (buffer != null && value != null) { if (isSet) { throw new IllegalStateException("Cannot set the xattr twice."); } isSet = true; if (value.length > position + maxSize) { value = Arrays.copyOf(value, position + (int) maxSize); } buffer.put(value, position, value.length); } this.value = value; } }