sealed trait ReversibleAggregator[T, A] extends Aggregator[T, A]
Extension to the Aggregator that also supports removing entries from the aggregated value. Assuming we want to aggregate the content of a window, and to do so for each different window returned by WindowSlider, many iterations will be required.
Depending on the aggregation function, this is however not required: For simple cases like addition or multiplication and any situation where the contributions of a single entry to the aggregated value may be reversed, we can compute an aggregated value for each window in linear time.
The reversible aggregator will be applied sequentially, so it may keep track of any state from one addition or removal to the next.
Some aggregations depend on the duration of the entries like integration or averaging, others like min max don't. To keep those types of aggregations well separated, implementations need to extend either the time-aware or the time-unaware subtrait. This allows us to use different windowing functions for the two types.
- T
the type of the entries being aggregated over
- A
the type of the aggregated value
- Alphabetic
- By Inheritance
- ReversibleAggregator
- Aggregator
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Abstract Value Members
- abstract def addEntry(e: TSEntry[T]): Unit
Update the internal aggregated value according to the entry that is about to be added to the window.
Update the internal aggregated value according to the entry that is about to be added to the window.
- e
the entry that is about to enter the window
- Definition Classes
- Aggregator
- abstract def currentValue: Option[A]
- returns
the current aggregated value or None
- Definition Classes
- Aggregator
- abstract def dropEntry(entry: TSEntry[T]): Unit
Updates the aggregated value according to the fact that this entry is being removed.
Updates the aggregated value according to the fact that this entry is being removed.
- entry
to remove from the head of the window
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##(): Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def addAndDrop(add: TSEntry[T], remove: TSEntry[T]): Unit
Combine the addition and the removal of entries from the aggregated value.
Combine the addition and the removal of entries from the aggregated value.
- add
the entry that will be added at the tail
- remove
the entry that will be removed at the head
- def addAndDrop(add: TSEntry[T], currentWindow: Queue[TSEntry[T]]): Unit
Combine the addition and the removal of entries from the aggregated value.
Combine the addition and the removal of entries from the aggregated value.
- add
the value that will be added
- currentWindow
the current window, from which we will drop the first entry. Note that it does not yet contain 'add'
- def addEntry(e: TSEntry[T], currentWindow: Queue[TSEntry[T]]): Unit
Update the internal aggregated value according to the entry that is about to be added to the window.
Update the internal aggregated value according to the entry that is about to be added to the window.
- e
the entry that is about to enter the window
- currentWindow
the current content of the window: it does not include 'e' at this point.
- Definition Classes
- Aggregator
- Note
By default this ignores the currentWindow and passes the entry to the function that only takes the entry. If you want to use the entire window in the aggregaton you can override this method.
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def dropHead(currentWindow: Queue[TSEntry[T]]): Unit
Updates the aggregated value according to the fact that the head of the currentWindow is being removed.
Updates the aggregated value according to the fact that the head of the currentWindow is being removed.
- currentWindow
the current content of the window. It still contains the entry that has to be removed
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()