net.esper.view.internal
Class PriorEventBufferMulti

java.lang.Object
  extended by net.esper.view.internal.PriorEventBufferMulti
All Implemented Interfaces:
ViewUpdatedCollection, RelativeAccessByEventNIndex

public class PriorEventBufferMulti
extends Object
implements ViewUpdatedCollection, RelativeAccessByEventNIndex

Buffers view-posted insert stream (new data) and remove stream (old data) events for use with determining prior results in these streams, for multiple different prior events.

Buffers only exactly those events in new data and old data that are being asked for via the 2 or more 'prior' functions that specify different indexes. For example "select prior(2, price), prior(1, price)" results in on buffer instance handling both the need to the immediatly prior (1) and the 2-events-ago event (2).

As all views are required to post new data and post old data that removes the new data to subsequent views, this buffer can be attached to all views and should not result in a memory leak.

When the buffer receives old data (rstream) events it removes the prior events to the rstream events from the buffer the next time it receives a post (not immediatly) to allow queries to the buffer.


Constructor Summary
PriorEventBufferMulti(int[] priorToIndexSet)
          Ctor.
 
Method Summary
 EventBean getRelativeToEvent(EventBean event, int priorToIndex)
           
 void update(EventBean[] newData, EventBean[] oldData)
          Accepts view insert and remove stream.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PriorEventBufferMulti

public PriorEventBufferMulti(int[] priorToIndexSet)
Ctor.

Parameters:
priorToIndexSet - holds a list of prior-event indexes.

For example, an array {0,4,6} means the current event, 4 events before the current event and 6 events before the current event.

Method Detail

update

public void update(EventBean[] newData,
                   EventBean[] oldData)
Description copied from interface: ViewUpdatedCollection
Accepts view insert and remove stream.

Specified by:
update in interface ViewUpdatedCollection
Parameters:
newData - is the insert stream events or null if no data
oldData - is the remove stream events or null if no data

getRelativeToEvent

public EventBean getRelativeToEvent(EventBean event,
                                    int priorToIndex)
Specified by:
getRelativeToEvent in interface RelativeAccessByEventNIndex