Package com._1c.g5.v8.xmdb.impl
Class Engine
- java.lang.Object
-
- com._1c.g5.v8.xmdb.impl.Engine
-
- All Implemented Interfaces:
Closeable,AutoCloseable
public class Engine extends Object implements Closeable
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanclosedprotected ReentrantLockcommitLockprotects lifecycle methods such as commit, rollback and close()protected ReentrantLockstructuralLockprotects structural layout of records.protected Volumevol
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidattachStorage()longclone(long cLink)voidclose()voidcommit()voidcompact()voiddelete(long clink)Deletes the data pointed by the specified clink.voiddetachStorage()voiddrop()byte[]get(long compactLink)Read record bytes (all) from volume (Include joining long recordsByteBufferget2(long compactLink)Read record bytes (all) from volume (Include joining long recordsbytegetByte(long offset)intgetInt(long offset)longgetLong(long offset)Read long from specified offsetVolumegetVolume()booleanisClosed()booleanisReadOnly()longput(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)voidrenameTo(String newName)voidrollback()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 Detail
-
vol
protected volatile Volume vol
-
closed
protected volatile boolean closed
-
structuralLock
protected final ReentrantLock structuralLock
protects structural layout of records. Memory allocator is single threaded under this lock
-
commitLock
protected final ReentrantLock commitLock
protects lifecycle methods such as commit, rollback and close()
-
-
Constructor Detail
-
Engine
public Engine(File file)
Creates a new instance.- Parameters:
file- the file to store data in. May not benull.
-
Engine
public Engine(File file, int pageSize)
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 Detail
-
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
public ByteBuffer get2(long compactLink)
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
public long put(ByteBuffer bb, boolean reserveExtraSpace)
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
public long update(long clink, ByteBuffer newVal, boolean reserveExtraSpace)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
public Volume getVolume()
-
clone
public long clone(long cLink)
-
renameTo
public void renameTo(String newName)
-
detachStorage
public void detachStorage()
-
attachStorage
public void attachStorage()
-
drop
public void drop()
-
-