public abstract class SimpleDoubleBufferAggregator extends Object implements BufferAggregator
Modifier and Type | Field and Description |
---|---|
protected BaseDoubleColumnValueSelector |
selector |
Modifier and Type | Method and Description |
---|---|
void |
aggregate(ByteBuffer buf,
int position)
Aggregates metric values into the given aggregate byte representation
Implementations of this method must read in the aggregate value from the buffer at the given position,
aggregate the next element of data and write the updated aggregate value back into the buffer.
|
abstract void |
aggregate(ByteBuffer buf,
int position,
double value) |
void |
close()
Release any resources used by the aggregator
|
Object |
get(ByteBuffer buf,
int position)
Returns the intermediate object representation of the given aggregate.
|
double |
getDouble(ByteBuffer buffer,
int position)
Returns the double representation of the given aggregate byte array
Converts the given byte buffer representation into the intermediate aggregate value.
|
float |
getFloat(ByteBuffer buf,
int position)
Returns the float representation of the given aggregate byte array
Converts the given byte buffer representation into the intermediate aggregate value.
|
long |
getLong(ByteBuffer buf,
int position)
Returns the long representation of the given aggregate byte array
Converts the given byte buffer representation into the intermediate aggregate value.
|
BaseDoubleColumnValueSelector |
getSelector() |
void |
inspectRuntimeShape(RuntimeShapeInspector inspector)
Implementations of this method should call
inspector.visit() with all fields of this class, which meet two
conditions:
1. |
abstract void |
putFirst(ByteBuffer buf,
int position,
double value)
Faster equivalent to
aggregator.init(buf, position);
aggregator.aggregate(buf, position, value);
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
init, relocate
protected final BaseDoubleColumnValueSelector selector
public BaseDoubleColumnValueSelector getSelector()
@CalledFromHotLoop public abstract void putFirst(ByteBuffer buf, int position, double value)
@CalledFromHotLoop public abstract void aggregate(ByteBuffer buf, int position, double value)
public final void aggregate(ByteBuffer buf, int position)
BufferAggregator
aggregate
in interface BufferAggregator
buf
- byte buffer storing the byte array representation of the aggregateposition
- offset within the byte buffer at which the current aggregate value is storedpublic final Object get(ByteBuffer buf, int position)
BufferAggregator
get
in interface BufferAggregator
buf
- byte buffer storing the byte array representation of the aggregateposition
- offset within the byte buffer at which the aggregate value is storedpublic final float getFloat(ByteBuffer buf, int position)
BufferAggregator
AggregatorFactory.getTypeName()
of "float".
If unimplemented, throwing an UnsupportedOperationException
is common and recommended.getFloat
in interface BufferAggregator
buf
- byte buffer storing the byte array representation of the aggregateposition
- offset within the byte buffer at which the aggregate value is storedpublic final long getLong(ByteBuffer buf, int position)
BufferAggregator
AggregatorFactory.getTypeName()
of "long".
If unimplemented, throwing an UnsupportedOperationException
is common and recommended.getLong
in interface BufferAggregator
buf
- byte buffer storing the byte array representation of the aggregateposition
- offset within the byte buffer at which the aggregate value is storedpublic double getDouble(ByteBuffer buffer, int position)
BufferAggregator
AggregatorFactory.getTypeName()
of "double".
If unimplemented, throwing an UnsupportedOperationException
is common and recommended.
The default implementation casts BufferAggregator.getFloat(ByteBuffer, int)
to double.
This default method is added to enable smooth backward compatibility, please re-implement it if your aggregators
work with numeric double columns.getDouble
in interface BufferAggregator
buffer
- byte buffer storing the byte array representation of the aggregateposition
- offset within the byte buffer at which the aggregate value is storedpublic void close()
BufferAggregator
close
in interface BufferAggregator
public void inspectRuntimeShape(RuntimeShapeInspector inspector)
BufferAggregator
inspector.visit()
with all fields of this class, which meet two
conditions:
1. They are used in methods of this class, annotated with CalledFromHotLoop
2. They are either:
a. Nullable objects
b. Instances of HotLoopCallee
c. Objects, which don't always have a specific class in runtime. For example, a field of type Set
could be HashSet
or TreeSet
in runtime, depending on how
this instance (the instance on which inspectRuntimeShape() is called) is configured.
d. ByteBuffer or similar objects, where byte order matters
e. boolean flags, affecting branch taking
f. Arrays of objects, meeting any of conditions a-e.
The default implementation inspects nothing. Classes that implement BufferAggregator
are encouraged to
override this method, following the specification of HotLoopCallee.inspectRuntimeShape(io.druid.query.monomorphicprocessing.RuntimeShapeInspector)
.
inspectRuntimeShape
in interface BufferAggregator
inspectRuntimeShape
in interface HotLoopCallee
Copyright © 2011–2018. All rights reserved.