ACTIV Topic types. The topic type identifies the semantics of how messages should be processed for the topic.
unknown
Unknown
flat
A flat topic.
Flat topics are simply presented as a list of field types. A single refresh message will contain a complete set of fields for a topic. An update message will contain a set of fields that update the values seen in previous update or refresh messages.
map
A map topic.
Map topics represent a single topic that contains multiple objects identified by the map key within a topic refresh or update. The map key is defined with the mapKey and mapKeyLength fields of the SubscriptionMessage.
An example of this usage is a market data order book. The topic encompasses the whole order book such as MSFT.Q-MBO (Microsoft, Nasdaq, Market By Order). The map key is then used to uniquely identify each order with the book. For some feeds the map key may be a simple integer value, for others a binary blob. In either case it is a unique identifier, within the realm of the topic, suitable for use when storing orders.
When subscribing to a map topic, the refresh or initial image occurs over multiple messages (order books may contain 10's of thousands of orders). During this extended refresh the subscription will enter the TopicSubscriptionState.synchronizing state. Once the subscription state enters TopicSubscriptionState.ok, the client will have a consistent and coherent view of the topic.
Every SubscriptionMessage with isRefresh = false contains a map key, an update type and a field list. The updateType field defines the action that should be taken for the update.
It is imperative that updates are processed whilst in TopicSubscriptionState.synchronizing and TopicSubscriptionState.ok states to ensure a valid and coherent view of the map topic is maintained. Whilst synchronizing, update and remove directives may be received for unknown map entries. These should be ignored.