public BindStream(int index, DirectBuffer buffer) throws IOException { myIndex = index; myBuffer = buffer; myBuffer.data().clear(); }
public static int wrapper_free(DirectBuffer buffer) { SWIGTYPE_p_direct_buffer handle = buffer.getHandle(); buffer.invalidate(); if (handle == null) return 0; int rc = _SQLiteManualJNI.wrapper_free(SWIGTYPE_p_direct_buffer.getCPtr(handle)); return rc; }
for (int i = myBuffers.size() - 1; i >= 0; i--) { DirectBuffer b = myBuffers.get(i); if (!b.isValid()) { myBuffers.remove(i); myBuffersTotalSize -= b.getCapacity(); continue; if (b.getCapacity() < payloadSize) { break; if (!b.isUsed()) { buffer = b; buffer.incUsed(); buffer.data().clear(); return buffer; buffer.incUsed(); buffer.data().clear(); if (allocated + size < MAX_POOLED_DIRECT_BUFFER_SIZE) { synchronized (myLock) { for (i = 0; i < myBuffers.size(); i++) { DirectBuffer b = myBuffers.get(i); if (b.getCapacity() > payloadSize) break; myBuffersTotalSize += buffer.getCapacity();
public static int wrapper_bind_buffer(SWIGTYPE_p_sqlite3_stmt stmt, int index, DirectBuffer buffer) { SWIGTYPE_p_direct_buffer handle = buffer.getHandle(); if (handle == null) return SQLiteConstants.WRAPPER_WEIRD; int size = buffer.getPosition(); return _SQLiteManualJNI.wrapper_bind_buffer(SWIGTYPE_p_sqlite3_stmt.getCPtr(stmt), index, SWIGTYPE_p_direct_buffer.getCPtr(handle), size); }
private ByteBuffer buffer(int len) throws IOException, SQLiteException { DirectBuffer buffer = getBuffer(); ByteBuffer data = buffer.data(); if (data.remaining() < len) { DirectBuffer newBuffer = null; try { newBuffer = myController.allocateBuffer(buffer.getCapacity() + len); } catch (IOException e) { dispose(); throw e; } ByteBuffer newData = newBuffer.data(); data.flip(); newData.put(data); myController.freeBuffer(buffer); data = newData; myBuffer = newBuffer; assert data.remaining() >= len : data.capacity(); } return data; }
public ByteBuffer data() throws IOException { if (!isValid()) throw new IOException("buffer disposed"); return myDataBuffer; }
private void freeBuffer(DirectBuffer buffer) throws SQLiteException { checkThread(); boolean cached; synchronized (myLock) { cached = myBuffers.indexOf(buffer) >= 0; } buffer.decUsed(); if (!cached) { int rc = _SQLiteManual.wrapper_free(buffer); if (rc != 0) { Internal.recoverableError(this, "error deallocating buffer", true); } } }
public DirectBuffer wrapper_alloc(int size) { myLastReturnCode = 0; myLong[0] = 0; myObject[0] = null; myObject[1] = null; myLastReturnCode = _SQLiteManualJNI.wrapper_alloc(size, myLong, myObject); ByteBuffer controlBuffer = myObject[0] instanceof ByteBuffer ? (ByteBuffer) myObject[0] : null; ByteBuffer dataBuffer = myObject[1] instanceof ByteBuffer ? (ByteBuffer) myObject[1] : null; long ptr = myLong[0]; if (controlBuffer == null || dataBuffer == null || ptr == 0) { return null; } return new DirectBuffer(new SWIGTYPE_p_direct_buffer(ptr, true), controlBuffer, dataBuffer, size); }
public void close() throws IOException { try { myController.validate(); DirectBuffer buffer = myBuffer; if (buffer == null) return; if (Internal.isFineLogging()) Internal.logFine(SQLiteStatement.this, "BindStream.close:bind([" + buffer.data().capacity() + "])"); int rc = _SQLiteManual.wrapper_bind_buffer(handle(), myIndex, buffer); dispose(); myController.throwResult(rc, "bind(buffer)", SQLiteStatement.this); } catch (SQLiteException e) { throw new IOException("cannot write: " + e); } }