Lists
The list data type is an alternative implementation of the container model offering higher performance when serving collections of records intended to be displayed together, such as a trade blotter. It combines both index and records in a single compound object, while remaining compatible with StreamLink application code that subscribes to containers.
Available from Caplin Platform 8 (see Product support for versions).
Overview
A list object combines index and row data in a single object. It comprises two collections:
-
Elements: an ordered set of row IDs. This collection is a list’s equivalent of a container subject.
-
Rows: a map of records keyed by row ID. This collection is a list’s equivalent of a container’s constituent objects.
Lists are performance optimised for serving views of row-based data, such as trade blotters:
A list object built to serve the blotter above would look like this:
Compare the list object above with the equivalent implementation as a container, with the elements collection (the container) and each row (the container constituents) hosted under their own individual subjects:
A list object can be retrieved by Liberator from an adapter more efficiently than an equivalent container. For Liberator to retrieve a container from an adapter requires \$n + 1\$ requests, where \$n\$ is the number of container elements. To retrieve an equivalent list from an adapter, requires just one request.
A list object can be served to StreamLink clients more efficiently than an equivalent container. Optimisations in the transport of lists to clients reduces the amount of processing required by StreamLink.
Compatibility with container subscription code
In versions of StreamLink that support lists (see Product support), the handling of lists is identical to the handling of containers, making them interchangeable.
From Liberator 8.0.10, when setting a window size for a StreamLink subscription to a list object (see Subscription.setContainerWindow), set the window size to a value less than the value of Liberator’s list-object-yield-size configuration item.
Product support
The List data type is available in Caplin Platform 8 from the following versions:
| Component | Minimum Version |
|---|---|
Liberator |
8.0.5 |
Transformer |
8.0.4 |
Refiner module |
Not supported yet |
| Library | Minimum Version |
|---|---|
StreamLink Android |
8.0.4 |
StreamLink Java |
8.0.4 |
StreamLink JS |
8.0.4 |
StreamLink TS |
8.0.4 |
StreamLink .NET |
8.0.4 |
StreamLink iOS |
Not supported yet |
| Library | Minimum Version |
|---|---|
C DataSource API |
8.0.6 |
Java DataSource API |
8.0.6 |
.NET DataSource API |
Not supported yet |
Feature parity with containers
| Feature | Containers | Lists |
|---|---|---|
Add element |
||
Insert element |
||
Remove element |
||
Add row |
||
Update row fields |
||
Add new fields to row |
||
Remove row |
| Feature | Containers | Lists |
|---|---|---|
Permission the element collection |
||
Permission individual rows |
||
StreamLink parameters: windowing |
Since SL 8.0.6 |
|
Liberator server : windowing |
Since Liberator 8.0.10 |
|
StreamLink parameters: field selection |
Not supported yet |
|
StreamLink parameters: row filtering |
Not supported yet |
| Feature | Containers | Lists |
|---|---|---|
Server-side sorting |
Not supported yet |
|
Server-side filtering |
Not supported yet |
Reference documentation
You subscribe to a List object from your StreamLink application in the exact same way as you do to a container. See the Container Event StreamLink API documentation for more information.
See the DataSource for Java API documentation for List messages for more information about creating, sending and updating List objects in a Java Adapter.
List object how-to
See the container to List object migration guide to see how to convert an existing container solution to use List objects.
See also:
-
DataSource for Java: com.caplin.datasource.messaging.list package