public interface VirtualDataWindow
An instance is associated to each named window that is backed by a virtual data window.
Modifier and Type | Method and Description |
---|---|
void |
destroy()
Called when the named window is stopped or destroyed.
|
VirtualDataWindowLookup |
getLookup(VirtualDataWindowLookupContext desc)
Returns the lookup strategy for use by an EPL statement to obtain data.
|
void |
handleEvent(VirtualDataWindowEvent theEvent)
Handle a management event.
|
Iterator<EventBean> |
iterator()
This method is called when a consuming statement to the named window
receives initial state from the named window, for example "select sum(field) from MyVirtualDataWindow"
in order to initialize its state.
|
void |
update(EventBean[] newData,
EventBean[] oldData)
This method is invoked when events are inserted-into or removed-from the
virtual data window.
|
VirtualDataWindowLookup getLookup(VirtualDataWindowLookupContext desc)
This method is invoked one or more times at the time an EPL statement is created that performs a subquery, join, on-action or fire-and-forget query against the virtual data window.
The lookup strategy returned is used when the EPL statement for which it was created performs a read-operation against the managed data. Multiple lookup strategies for the same EPL statement are possible for join statements.
The context object passed in is derived from an analysis of the where-clause and lists the unique property names of the event type that are index fields, i.e. fields against which the lookup occurs.
The order of hash and btree properties provided by the context matches the order that lookup values are provided to the lookup strategy.
desc
- hash and binary tree (sorted access for ranges) index fieldsvoid handleEvent(VirtualDataWindowEvent theEvent)
Management events indicate:
theEvent
- to handlevoid update(EventBean[] newData, EventBean[] oldData)
When a statement uses insert-into to insert events into the virtual data window the newData parameter carries the inserted event.
When a statement uses on-delete to delete events from the virtual data window the oldData parameter carries the deleted event.
When a statement uses on-merge to merge events with the virtual data window the events passed depends on the action: For then-delete the oldData carries the removed event, for then-update the newData carries the after-update event and the oldData carries the before-update event, for then-insert the newData carries the inserted event.
When a statement uses on-update to update events in the virtual data window the newData carries the after-update event and the oldData parameter carries the before-update event.
Implement as follows to post all inserted or removed events to consuming statements: context.getOutputStream().update(newData, oldData);
For data originating from the virtual data window use the sendEvent() method with "insert-into" statement to insert events.
newData
- the insert streamoldData
- the remove streamvoid destroy()
We used with contexts then this method is invoked for each context partition that gets destroyed.
There is also a destroy method on the factory level that is called once per named window (and not once per context partition).
Iterator<EventBean> iterator()
It is valid to return an empty iterator such as "return Collections.<EventBean>emptyList().iterator();". If returning an empty iterator then consuming statements do not receive initial data, therefor in the example provide earlier the "sum(field)" is initially zero and no the sum of the field values.