|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.faunos.skwish.Segment com.faunos.skwish.sys.filters.SettableSegment
public class SettableSegment
Provides a way to slip a new Segment
under an existing view.
The main function of this class is to provide this mechanism in a thread-safe
way. This thread-safety is only achieved if the underlying segment is
itself thread-safe (which usually means read-only). This requirement
would usually translate to a read-only underlying implementation; but
only usually, which is why this class does not enforce such a read-only rule.
Field Summary |
---|
Fields inherited from class com.faunos.skwish.Segment |
---|
validator |
Constructor Summary | |
---|---|
SettableSegment()
Creates a new empty instance. |
|
SettableSegment(Segment inner)
Creates a new instance with the given initial inner
instance. |
Method Summary | |
---|---|
void |
delete(long id,
int count,
boolean purge)
Deletes count entries starting at the entry with the specified id. |
long |
getBaseId()
Returns the instance's base ID. |
void |
getEntry(long id,
ByteBuffer out,
ByteBuffer workBuffer)
Returns the contents of the entry with the specified id. |
FileChannel |
getEntryChannel(long id)
Returns the contents of the entry with the given id
as a FileChannel , or null , if deleted. |
long |
getEntryCount()
Returns the number of entries in this instance. |
int |
getEntryPart(long id,
long position,
ByteBuffer out,
ByteBuffer workBuffer)
Returns the specified part of the entry contents with the specified id. |
long |
getEntrySize(long id,
ByteBuffer workBuffer)
Returns the size of the entry with the specified id. |
long |
getNextId()
Returns the ID the entry will get on the next insertion. |
Segment |
getSegment()
Returns the underlying segment. |
long |
insertEntry(ByteBuffer entry)
Inserts the given entry and returns the entry's ID. |
long |
insertEntry(ReadableByteChannel entry)
Inserts the entry represented by the given channel. |
boolean |
isReadOnly()
Determines whether this instance is read-only (unmodifiable). |
boolean |
isSegmentSet()
Determines whether the segment has been set. |
long |
killNext(int count)
Kills the next count entry IDs. |
void |
setSegment(Segment segment)
Sets the underlying segment. |
Methods inherited from class com.faunos.skwish.Segment |
---|
contains, delete, delete, getEntry, getEntrySize, getEntryStream, hi, isDeleted, isDeleted, killNext, lo, toString |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public SettableSegment()
the default underlying segment
,
isSegmentSet()
public SettableSegment(Segment inner)
inner
instance.
inner
- may not be null
Method Detail |
---|
public final boolean isSegmentSet()
false
. Once the instance is initialized with a
call to setSegment(Segment)
this method forever returns
true
.
public final Segment getSegment()
Segment
methods overridden by
this class delegate to the underlying instance through this method.
public void setSegment(Segment segment)
Segment
methods overridden by this class
that have yet to return may still see the previous underlying segment after this
method has returned.
segment
- public void delete(long id, int count, boolean purge) throws IOException
Segment
delete
in class Segment
id
- the ID of the first entry to be deleted. Must be
a valid ID in this segment [baseId, baseId + entryCount)count
- the number of entries to be deleted. Specifies a
range of IDs to be deleted: [id, id + count). The range
of IDs must be valid entries within this segment; o.w.
an exception is raised.purge
- if true
, the contents of the deleted entries
are signaled to be purged (overwritten) immediately;
o.w. the contents will be deleted on the next time the segment is
compacted.
IOException
public long getBaseId()
Segment
getBaseId
in class Segment
Segment.getEntryCount()
public void getEntry(long id, ByteBuffer out, ByteBuffer workBuffer) throws IOException
Segment
out
buffer.
getEntry
in class Segment
out
- the buffer into which the contents are written. Its
remaining bytes must be large enough; o.w., an exception is raised.workBuffer
- a work buffer used internally to read offsets. The minimum
capacity of this work buffer must be 16
IOException
public FileChannel getEntryChannel(long id) throws IOException
Segment
id
as a FileChannel
, or null
, if deleted.
The returned channel is positioned at zero and is read-only.
getEntryChannel
in class Segment
IOException
public long getEntryCount()
Segment
getEntryCount
in class Segment
public long getEntrySize(long id, ByteBuffer workBuffer) throws IOException
Segment
getEntrySize
in class Segment
IOException
public long getNextId()
Segment
getNextId
in class Segment
public long insertEntry(ByteBuffer entry) throws IOException
Segment
insertEntry
in class Segment
entry
- they contents of the entry
IOException
public long insertEntry(ReadableByteChannel entry) throws IOException
Segment
entry
represented by the given channel.
The contents are of the entry is understood to be the entire
remaining contents in the specified channel.
This is the most efficient method for inserting a large-size entry
(even one that doesn't fit in memory).
insertEntry
in class Segment
IOException
public long killNext(int count) throws IOException
Segment
count
entry IDs. A killed entry is an
entry that begins (and ends) life in the deleted state.
killNext
in class Segment
count
- the number of entries to kill (must be greater than 1)
IOException
public boolean isReadOnly()
Segment
isReadOnly
in class Segment
public int getEntryPart(long id, long position, ByteBuffer out, ByteBuffer workBuffer) throws IOException
Segment
out.remaining()
bytes of the contents of the entry
are copied into the given out
buffer.
getEntryPart
in class Segment
position
- the starting position into the entry from where data will be
copied into the out bufferout
- the out buffer into which data is writtenworkBuffer
- a work buffer with a minimum size of 16
out
has
no remaining bytes), or -1, if the position is greater than the
size of the entry, or if the entry is deleted.
IOException
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |