@Override public long getLong(long offset) { return ptr.getLong(base + offset); }
value = memory.getLong(offset); break;
@Override public long getLong(long offset) { return ptr.getLong(base + offset); }
value = memory.getLong(offset); break;
@Override public long getLong(long offset) { return ptr.getLong(base + offset); }
value = memory.getLong(offset); break;
@Override protected ByteBuffer out(final ByteBuffer buffer, final Pointer ptr, final long ptrAddr) { final long addr = ptr.getLong(STRUCT_FIELD_OFFSET_DATA); final long size = ptr.getLong(STRUCT_FIELD_OFFSET_SIZE); try { ADDRESS_FIELD.set(buffer, addr); CAPACITY_FIELD.set(buffer, (int) size); } catch (final IllegalArgumentException | IllegalAccessException e) { throw new LmdbException("Cannot modify buffer", e); } buffer.clear(); return buffer; }
@Override protected final byte[] out(final byte[] buffer, final Pointer ptr, final long ptrAddr) { final long addr = ptr.getLong(STRUCT_FIELD_OFFSET_DATA); final int size = (int) ptr.getLong(STRUCT_FIELD_OFFSET_SIZE); final Pointer pointer = MEM_MGR.newPointer(addr, size); final byte[] bytes = new byte[size]; pointer.get(0, bytes, 0, size); return bytes; } }
@Override protected ByteBuffer out(final ByteBuffer buffer, final Pointer ptr, final long ptrAddr) { final long addr = ptr.getAddress(STRUCT_FIELD_OFFSET_DATA); final long size = ptr.getLong(STRUCT_FIELD_OFFSET_SIZE); try { ADDRESS_FIELD.set(buffer, addr); CAPACITY_FIELD.set(buffer, (int) size); } catch (final IllegalArgumentException | IllegalAccessException e) { throw new LmdbException("Cannot modify buffer", e); } buffer.clear(); return buffer; }
@Override protected final byte[] out(final byte[] buffer, final Pointer ptr, final long ptrAddr) { final long addr = ptr.getAddress(STRUCT_FIELD_OFFSET_DATA); final int size = (int) ptr.getLong(STRUCT_FIELD_OFFSET_SIZE); final Pointer pointer = MEM_MGR.newPointer(addr, size); final byte[] bytes = new byte[size]; pointer.get(0, bytes, 0, size); return bytes; } }
/** * Prepares an array suitable for presentation as the data argument to a * <code>MDB_MULTIPLE</code> put. * * <p> * The returned array is equivalent of two <code>MDB_val</code>s as follows: * * <ul> * <li>ptrVal1.data = pointer to the data address of passed buffer</li> * <li>ptrVal1.size = size of each individual data element</li> * <li>ptrVal2.data = unused</li> * <li>ptrVal2.size = number of data elements (as passed to this method)</li> * </ul> * * @param val a user-provided buffer with data elements (required) * @param elements number of data elements the user has provided * @return a properly-prepared pointer to an array for the operation */ Pointer valInMulti(final T val, final int elements) { final long ptrVal2SizeOff = MDB_VAL_STRUCT_SIZE + STRUCT_FIELD_OFFSET_SIZE; ptrArray.putLong(ptrVal2SizeOff, elements); // ptrVal2.size proxy.in(val, ptrVal, ptrValAddr); // ptrVal1.data final long totalBufferSize = ptrVal.getLong(STRUCT_FIELD_OFFSET_SIZE); final long elemSize = totalBufferSize / elements; ptrVal.putLong(STRUCT_FIELD_OFFSET_SIZE, elemSize); // ptrVal1.size return ptrArray; }
/** * Prepares an array suitable for presentation as the data argument to a * <code>MDB_MULTIPLE</code> put. * * <p> * The returned array is equivalent of two <code>MDB_val</code>s as follows: * * <ul> * <li>ptrVal1.data = pointer to the data address of passed buffer</li> * <li>ptrVal1.size = size of each individual data element</li> * <li>ptrVal2.data = unused</li> * <li>ptrVal2.size = number of data elements (as passed to this method)</li> * </ul> * * @param val a user-provided buffer with data elements (required) * @param elements number of data elements the user has provided * @return a properly-prepared pointer to an array for the operation */ Pointer valInMulti(final T val, final int elements) { final long ptrVal2SizeOff = MDB_VAL_STRUCT_SIZE + STRUCT_FIELD_OFFSET_SIZE; ptrArray.putLong(ptrVal2SizeOff, elements); // ptrVal2.size proxy.in(val, ptrVal, ptrValAddr); // ptrVal1.data final long totalBufferSize = ptrVal.getLong(STRUCT_FIELD_OFFSET_SIZE); final long elemSize = totalBufferSize / elements; ptrVal.putLong(STRUCT_FIELD_OFFSET_SIZE, elemSize); // ptrVal1.size return ptrArray; }
fuseOperations.bmap.set((path, blocksize, idx) -> fuse.bmap(path, blocksize, idx.getLong(0)));
fuseOperations.bmap.set((path, blocksize, idx) -> fuse.bmap(path, blocksize, idx.getLong(0)));