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 boolean
closed
protected ReentrantLock
commitLock
protects lifecycle methods such as commit, rollback and close()protected ReentrantLock
structuralLock
protects structural layout of records.protected Volume
vol
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
attachStorage()
long
clone(long cLink)
void
close()
void
commit()
void
compact()
void
delete(long clink)
Deletes the data pointed by the specified clink.void
detachStorage()
void
drop()
byte[]
get(long compactLink)
Read record bytes (all) from volume (Include joining long recordsByteBuffer
get2(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 offsetVolume
getVolume()
boolean
isClosed()
boolean
isReadOnly()
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
renameTo(String newName)
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 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:
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
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()
-
-