Provides an extended interface to be implemented by a Data Adapter in order
to attach a Data Provider to Lightstreamer Kernel.
Data Adapters that implement this interface can relieve the Kernel from
finding item data by item name at every update call.
By implementing this interface, a Data Adapter will receive item
subscription requests by an extended subscribe call, which supplies handles
to item data in the Kernel. These handles can be used, instead of item
names, to identify items in update calls, through the various smartUpdate
and the smartEndOfSnapshot methods.
Using this extended interface is natural in many situations, where an
internal lookup for item data by item name is already performed in the
Data Adapter. In these cases, a second lookup in the Kernel can be saved.
This also saves a global synchronization, allowing different update calls
issued in different threads to be managed concurrently, provided that calls
for the same item are issued in the same thread.
Lightstreamer Kernel always uses different handles across subsequent
subscriptions of the same item. This gives an additional benefit: if
spurious trailing updates are sent, through smartUpdate, after an item has
been unsubscribed and then immediately subscribed again, these trailing
updates cannot conflict with the new updates sent against the new
subscription and are just ignored by Lightstreamer Kernel.
Called by Lightstreamer Kernel to request data for an Item. If the
request succeeds, the Data Adapter can start sending an ItemEvent
to the listener for any update in the Item value. Before sending the
updates, the Data Adapter may optionally send one or more ItemEvents
to supply the current Snapshot.
Both item name and item handle can be used to identify the item,
but using the latter is far more efficient.
itemHandle - Object to be used to identify the item in update
calls. Lightstreamer Kernel always uses different handles across
subsequent subscriptions of the same item.
needsIterator - Signals that the getNames method will be called
on the ItemEvents received for this Item. If this flag is set to false,
the ItemEvent objects sent for this Item need not implement the method.
FailureException - if the method execution has caused a severe
problem that can compromise future operation of the Data Adapter.
This causes the whole Server to exit, so that an external recovery
mechanism may come into action.