Package velox.api.layer1.dynamichistory
Record Class LinearDataSlice<T>
java.lang.Object
java.lang.Record
velox.api.layer1.dynamichistory.LinearDataSlice<T>
- Type Parameters:
T- decoded block payload type, as defined by the structure's descriptor
The finalized blocks of one interval of a linear data structure intersecting a requested time
range, clamped to what the server has recorded.
Entries tile the time axis: consecutive entries always touch (start[i] =
end[i-1]) and their index ranges are consecutive. Two kinds of entry exist:
LinearDataSlice.Block— one recorded block. Periods with no market activity are still recorded, as a block whose payload says so (e.g. a candle with zero volume), so quiet markets do not produce gaps.LinearDataSlice.Gap— a run of blocks the server does not have at all: a hole between merged recordings, or blocks removed by retention. It carries the missing index range and the time it spans, so a consumer can render or skip it without arithmetic.
A gap is only ever reported between two blocks. Where the recorded data simply ends before the requested range does (the server's finalized edge, or blocks missing at the very start of the range), the slice is shorter rather than ending in a gap — there is no second block to bound the hole in time. An unavailable structure or interval yields an empty slice rather than an error.
Consumers that only want data can use blocks(); those that render the time axis
should walk entries() and switch over the sealed LinearDataSlice.Entry.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final recordOne decoded block placed on the time axis.static interfaceOne entry on the time axis: either a recordedLinearDataSlice.Blockor aLinearDataSlice.Gapof missing blocks.static final recordA run of consecutive blocks the server does not have. -
Constructor Summary
ConstructorsConstructorDescriptionLinearDataSlice(List<LinearDataSlice.Entry<T>> entries) Creates an instance of aLinearDataSlicerecord class. -
Method Summary
Modifier and TypeMethodDescriptionblocks()The recorded blocks only, ascending by index.static <T> LinearDataSlice<T> empty()entries()Returns the value of theentriesrecord component.final booleanIndicates whether some other object is "equal to" this one.gaps()The holes only, ascending by index.booleanhasGaps()True if at least oneLinearDataSlice.Gapseparates the blocks.final inthashCode()Returns a hash code value for this object.booleanisEmpty()True if there is neither a block nor a gap — nothing recorded intersects the request.final StringtoString()Returns a string representation of this record class.
-
Constructor Details
-
LinearDataSlice
Creates an instance of aLinearDataSlicerecord class.- Parameters:
entries- the value for theentriesrecord component
-
-
Method Details
-
empty
-
isEmpty
public boolean isEmpty()True if there is neither a block nor a gap — nothing recorded intersects the request. -
hasGaps
public boolean hasGaps()True if at least oneLinearDataSlice.Gapseparates the blocks. -
blocks
The recorded blocks only, ascending by index. Gaps are skipped, so indices may jump. -
gaps
The holes only, ascending by index. -
toString
Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components. -
hashCode
public final int hashCode()Returns a hash code value for this object. The value is derived from the hash code of each of the record components. -
equals
Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared withObjects::equals(Object,Object). -
entries
Returns the value of theentriesrecord component.- Returns:
- the value of the
entriesrecord component
-