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 boolean
protected final ReentrantLock
protects lifecycle methods such as commit, rollback and close()protected final ReentrantLock
protects structural layout of records.protected Volume
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
long
clone
(long cLink) void
close()
void
commit()
void
compact()
void
delete
(long clink) Deletes the data pointed by the specified clink.void
void
drop()
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 recordsbyte
getByte
(long offset) int
getInt
(long offset) long
getLong
(long offset) Read long from specified offsetboolean
isClosed()
boolean
long
put
(byte[] val, boolean reserveExtraSpace) Store bytes into volume and return internal link.long
put
(ByteBuffer bb, boolean reserveExtraSpace) Puts a sequence of bytes to this engine from the given buffer.void
putByte
(long offset, byte value) void
putInt
(long offset, int value) void
putLong
(long offset, long value) void
void
rollback()
void
snapshot()
protected void
sync()
long
update
(long clink, byte[] newVal, boolean reserveExtraSpace) Updates the record identified by the specified compact link (clink).long
update
(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:
close
in interfaceAutoCloseable
- Specified by:
close
in 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()
-