/** Set data from string - convenience operation */ public void setString(String dataStr) { checkWriteTxn(); if ( dataStr == null ) { setBlob(null); return ; } // Attempt to reuse the write-transaction byte buffer // We can't reuse if it's the blobRef (shared by other transactions) // but if it's a new to this write transaction buffer we can reuse. int maxNeeded = dataStr.length()*4 ; ByteBuffer bb = getDataState().getByteBuffer() ; if ( bb == blobRef.get() ) bb = ByteBuffer.allocate(maxNeeded) ; else if ( bb.capacity() >= maxNeeded ) bb.clear() ; else bb = ByteBuffer.allocate(maxNeeded) ; Bytes.toByteBuffer(dataStr, bb) ; bb.flip() ; setBlob(bb); }
/** Set data from string - convenience operation */ public void setString(String dataStr) { checkWriteTxn(); if ( dataStr == null ) { setBlob(null); return ; } // Attempt to reuse the write-transaction byte buffer // We can't reuse if it's the blobRef (shared by other transactions) // but if it's a new to this write transaction buffer we can reuse. int maxNeeded = dataStr.length()*4 ; ByteBuffer bb = getDataState().getByteBuffer() ; if ( bb == blobRef.get() ) bb = ByteBuffer.allocate(maxNeeded) ; else if ( bb.capacity() >= maxNeeded ) bb.clear() ; else bb = ByteBuffer.allocate(maxNeeded) ; Bytes.toByteBuffer(dataStr, bb) ; bb.flip() ; setBlob(bb); }
@Override protected void _commit(TxnId txnId, BlobState state) { if ( ! state.hasChanged ) return; // NB Change reference. blobRef.set(state.getByteBuffer()) ; write() ; }
@Override protected ByteBuffer _commitPrepare(TxnId txnId, BlobState state) { if ( ! state.hasChanged ) return null; return state.getByteBuffer() ; }
public ByteBuffer getBlob() { if ( isActiveTxn() ) return getDataState().getByteBuffer() ; return blobRef.get() ; }
@Override protected void _commit(TxnId txnId, BlobState state) { if ( ! state.hasChanged ) return; // NB Change reference. blobRef.set(state.getByteBuffer()) ; write() ; }
@Override protected ByteBuffer _commitPrepare(TxnId txnId, BlobState state) { if ( ! state.hasChanged ) return null; return state.getByteBuffer() ; }
public ByteBuffer getBlob() { if ( isActiveTxn() ) return getDataState().getByteBuffer() ; return blobRef.get() ; }