Package com._1c.g5.v8.xmdb.impl
Class Engine
java.lang.Object
com._1c.g5.v8.xmdb.impl.Engine
- All Implemented Interfaces:
Closeable,AutoCloseable
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanprotected final ReentrantLockprotects lifecycle methods such as commit, rollback and close()protected final ReentrantLockprotects structural layout of records.protected Volume -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidlongclone(long cLink) voidclose()voidcommit()voidcompact()voiddelete(long clink) Deletes the data pointed by the specified clink.voidvoiddrop()byte[]get(long compactLink) Read record bytes (all) from volume (Include joining long recordsget2(long compactLink) Read record bytes (all) from volume (Include joining long recordsbytegetByte(long offset) intgetInt(long offset) longgetLong(long offset) Read long from specified offsetbooleanisClosed()booleanlongput(byte[] val, boolean reserveExtraSpace) Store bytes into volume and return internal link.longput(ByteBuffer bb, boolean reserveExtraSpace) Puts a sequence of bytes to this engine from the given buffer.voidputByte(long offset, byte value) voidputInt(long offset, int value) voidputLong(long offset, long value) voidvoidrollback()voidsnapshot()protected voidsync()longupdate(long clink, byte[] newVal, boolean reserveExtraSpace) Updates the record identified by the specified compact link (clink).longupdate(long clink, ByteBuffer newVal, boolean reserveExtraSpace) Updates the record identified by the specified compact link (clink).
-
Field Details
-
vol
-
closed
protected volatile boolean closed -
structuralLock
protects structural layout of records. Memory allocator is single threaded under this lock -
commitLock
protects lifecycle methods such as commit, rollback and close()
-
-
Constructor Details
-
Engine
Creates a new instance.- Parameters:
file- the file to store data in. May not benull.
-
Engine
Creates a new instance.- Parameters:
file- the file to store data in. May not benull.pageSize- the size of the page (minimal unit of disk space allocation). Must be greater than0.
-
-
Method Details
-
sync
protected void sync() -
close
public void close()- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable
-
get
public byte[] get(long compactLink) Read record bytes (all) from volume (Include joining long records- Parameters:
compactLink-- Returns:
-
get2
Read record bytes (all) from volume (Include joining long records- Parameters:
compactLink-- Returns:
-
getLong
public long getLong(long offset) Read long from specified offset- Parameters:
complexLink-- Returns:
-
putLong
public void putLong(long offset, long value) -
getInt
public int getInt(long offset) -
putInt
public void putInt(long offset, int value) -
getByte
public byte getByte(long offset) -
putByte
public void putByte(long offset, byte value) -
put
Puts a sequence of bytes to this engine from the given buffer.- Parameters:
bb- the byte buffer, may not benull.reserveExtraSpace- the flag showing whether extra space should be reserved for future updates.- Returns:
- compact link (clink) to the put data.
-
put
public long put(byte[] val, boolean reserveExtraSpace) Store bytes into volume and return internal link. If data fit's in link (<= 7 bytes) than nothink is writing into volume, just construct appropriate link- Parameters:
val- bytes to storereserveExtraSpace- the flag showing whether extra space should be reserved for future updates.- Returns:
- internal ling (not recid!)
-
update
Updates the record identified by the specified compact link (clink).- Parameters:
clink- the compact link.newVal- the byte buffer containing new value.reserveExtraSpace- the flag showing whether extra space should be reserved for future updates.- Returns:
- compact link (clink) to the updated record (might not be the same as the specified one).
-
update
public long update(long clink, byte[] newVal, boolean reserveExtraSpace) Updates the record identified by the specified compact link (clink).- Parameters:
clink- the compact link.newVal- the byte array containing new value.reserveExtraSpace- the flag showing whether extra space should be reserved for future updates.- Returns:
- compact link (clink) to the updated record (might not be the same as the specified one).
-
delete
public void delete(long clink) Deletes the data pointed by the specified clink.- Parameters:
clink- the clink.
-
isClosed
public boolean isClosed() -
isReadOnly
public boolean isReadOnly() -
commit
public void commit() -
rollback
public void rollback() -
snapshot
public void snapshot() -
compact
public void compact() -
getVolume
-
clone
public long clone(long cLink) -
renameTo
-
detachStorage
public void detachStorage() -
attachStorage
public void attachStorage() -
drop
public void drop()
-