public class SingleTableStore<T extends Metadata> extends Object implements TableStore<T>
| Constructor and Description |
|---|
SingleTableStore(net.openhft.chronicle.wire.WireType wireType,
net.openhft.chronicle.bytes.MappedBytes mappedBytes,
StoreRecovery recovery,
T metadata) |
| Modifier and Type | Method and Description |
|---|---|
net.openhft.chronicle.core.values.LongValue |
acquireValueFor(CharSequence key)
Acquire
LongValue mapped to underlying file, providing atomic operations on the value that is shared
across threads and/or JVMs. |
net.openhft.chronicle.bytes.MappedBytes |
bytes() |
void |
close() |
static <T,R> R |
doWithExclusiveLock(File file,
Function<T,? extends R> code,
Supplier<T> target) |
<R> R |
doWithExclusiveLock(Function<TableStore<T>,? extends R> code)
Acquires file-system level lock on the underlying file, to prevent concurrent access from multiple processes.
|
String |
dump() |
File |
file() |
boolean |
isClosed() |
T |
metadata() |
long |
refCount() |
void |
release() |
void |
reserve() |
String |
toString() |
void |
writeMarshallable(net.openhft.chronicle.wire.WireOut wire) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitpublic static final String SUFFIX
public SingleTableStore(@NotNull
net.openhft.chronicle.wire.WireType wireType,
@NotNull
net.openhft.chronicle.bytes.MappedBytes mappedBytes,
@NotNull
StoreRecovery recovery,
@NotNull
T metadata)
wireType - the wire type that is being usedmappedBytes - used to mapped the data store filerecovery - used to recover from concurrent modificationspublic boolean isClosed()
@NotNull public File file()
file in interface CommonStore@NotNull public String dump()
dump in interface CommonStorepublic void reserve()
throws IllegalStateException
reserve in interface net.openhft.chronicle.core.ReferenceCountedIllegalStateExceptionpublic void release()
throws IllegalStateException
release in interface net.openhft.chronicle.core.ReferenceCountedIllegalStateExceptionpublic long refCount()
refCount in interface net.openhft.chronicle.core.ReferenceCountedpublic void close()
close in interface Closeableclose in interface AutoCloseable@NotNull public net.openhft.chronicle.bytes.MappedBytes bytes()
bytes in interface CommonStorepublic void writeMarshallable(@NotNull
net.openhft.chronicle.wire.WireOut wire)
writeMarshallable in interface net.openhft.chronicle.wire.WriteMarshallablepublic net.openhft.chronicle.core.values.LongValue acquireValueFor(CharSequence key)
LongValue mapped to underlying file, providing atomic operations on the value that is shared
across threads and/or JVMs.
Note: The implementation of this method is not required to guarantee that if the value does not exist in the file,
it will create one and only one value in the file in case of concurrent access. On the contrary, it's possible
that different threads or processes acquire LongValues pointing to different fields in the underlying
file. To prevent this, it is advised to use TableStore.doWithExclusiveLock(Function) to wrap calls to this method,
which will ensure exclusive access to file while initially acquiring values.acquireValueFor in interface TableStore<T extends Metadata>key - the key of the valueLongValue object pointing to particular location in mapped underlying filepublic <R> R doWithExclusiveLock(Function<TableStore<T>,? extends R> code)
TableStore.acquireValueFor(CharSequence) calls, to atomically acquire
multiple values.doWithExclusiveLock in interface TableStore<T extends Metadata>R - result typecode - code block to execute using locked table storepublic T metadata()
metadata in interface TableStore<T extends Metadata>Copyright © 2018. All rights reserved.