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:

list datatype example blotter
FX execution blotter

A list object built to serve the blotter above would look like this:

list datatype example
Example blotter implemented as a list, using Trade IDs for row IDs (data abridged for clarity)

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:

list datatype example container
Example blotter implemented as a container, using Trade IDs for row IDs

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 support for the list data type
Component Minimum Version

Liberator

8.0.5

Transformer

8.0.4

   Refiner module

Not supported yet

StreamLink support for the list data type
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

DataSource support for the list data type
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

DataSource: feature parity between lists and containers
Feature Containers Lists

Add element

Insert element

Remove element

Add row

Update row fields

Add new fields to row

Remove row

Liberator: feature parity between lists and containers
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

Transformer Refiner: feature parity between lists and containers
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: