Interface VirtualDataWindow


public interface VirtualDataWindow
A virtual data window exposes externally-managed data transparently as a named window without the need to retain any data in memory.

An instance is associated to each named window that is backed by a virtual data window.

  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Called when the named window is stopped or destroyed.
    Returns the lookup strategy for use by an EPL statement to obtain data.
    void
    Handle a management event.
    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.
  • Method Details

    • getLookup

      Returns the lookup strategy for use by an EPL statement to obtain data.

      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.

      Parameters:
      desc - hash and binary tree (sorted access for ranges) index fields
      Returns:
      lookup strategy, or null to veto the statement
    • handleEvent

      void handleEvent(VirtualDataWindowEvent theEvent)
      Handle a management event.

      Management events indicate:

      • Create/Start of an index on a virtual data window.
      • Stop/Destroy of an index.
      • Destroy of the virtual data window.
      • Add/Remove of a consumer to the virtual data window.
      Parameters:
      theEvent - to handle
    • update

      void update(EventBean[] newData, EventBean[] oldData)
      This method is invoked when events are inserted-into or removed-from the virtual data window.

      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.

      Parameters:
      newData - the insert stream
      oldData - the remove stream
    • destroy

      void destroy()
      Called when the named window is stopped or destroyed.

      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

      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.

      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.

      Returns:
      empty iterator or an iterator for all events currently held by the virtual data window.