Document build prerequisites on Fedora

Signed-off-by: Pekka Enberg <penberg@kernel.org>
FAST: Limit order book data structures modification

There are two general ways the limit order book can
be distributed:
 * Price levels distribution. In this case order book
is distributed explicitly. That is order book's dynamics
represents the successive changes applied to a particular
price level i.e. price level modification, price level
removal, price level creation.
 * Orders' flow distribution. In this case order book
is distributed implicitly. That is one receives the
orders' flow and creates a limit order book by processing
orders received.

Libtrading is to support both ways. However, linear arrays
of bids and asks can create some difficulties in the future.
Hence, the current patch presents a few amendments which are
to be applied: instead of using linear arrays hash tables,
binary trees and lists are used.

Whenever a particular level is sought - hash tables are to
be examined. In order to traverse an order book binary trees
or lists are good candidates.

At the moment glib implementation is used but this option
is adjustable.

Signed-off-by: Marat Stanichenko <mstanichenko@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
FAST: Identify order book by symbol

It's possible to identify order book both with number and
with symbol. We should support both variants.

Signed-off-by: Marat Stanichenko <mstanichenko@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
FAST: TradingSessionID support introduced

Security can be traded in different modes (trading sessions).
Hence, we should distinguish between trading sessions when
order book is constructed.

Signed-off-by: Marat Stanichenko <mstanichenko@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
FAST: Decimal volume support introduced

Signed-off-by: Marat Stanichenko <mstanichenko@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
FAST: Market data entries may have different names

Market data entries may have different names under the
snapshot/increment messages which depend on the template.

Signed-off-by: Marat Stanichenko <mstanichenko@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
FAST: New options in order books' configuration files

The following options are included:
* Source specific multicast option
* Preamble option
* Implicit reset option

Signed-off-by: Marat Stanichenko <mstanichenko@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
FAST: Reset a session if implicit reset option is set

Signed-off-by: Marat Stanichenko <mstanichenko@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
FAST parser: Keep reading raw data until signal is sent

Signed-off-by: Marat Stanichenko <mstanichenko@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
FAST: Apply incremental messages on the fly

We had the following logic implemented whenever
an orderbook is being subscribed (aka late join):
collect incremental messages and wait until snapshot
is arrived. Apply the snapshot and then incremental
messages stored in memory.

Such an implementation has an evident flaw i.e. we
cannot guarantee the number of incremental messages
being stored in memory. It leads to a lot of memory
allocated/reallocated which influence on the library
performance.

This patch allow incremental messages to be applied
without snapshot received. In other words we do not
have to store incremental messages in memory but
rather apply them on the fly.

All we have to know is incremental messages's sequence
number for a particular instrument. Once it is known,
it becomes easy to apply a snapshot message: we should
accept newer changes and discard older ones.

Signed-off-by: Marat Stanichenko <mstanichenko@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
FAST: Small fix in order book lookup function

Signed-off-by: Marat Stanichenko <mstanichenko@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
FAST: Allow data feeds to get data from files

Signed-off-by: Marat Stanichenko <mstanichenko@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
FIX: Security status message introduced

Signed-off-by: Marat Stanichenko <mstanichenko@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
FAST: Do not apply snapshot until every incremental message is received

Consider an example: we receive a snapshot message with
LastMsgSeqNumProcessed equal to 100 but so far we apply
incremental messages in a range 90-95 i.e. we have not
received incremental messages 96-100. In such a case
we should wait until 96-100 are applied.

Signed-off-by: Marat Stanichenko <mstanichenko@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
Add 'vim-common' to build prerequisites on Fedora

The 'xxd' command is provided by the 'vim-common' package.

Signed-off-by: Pekka Enberg <penberg@kernel.org>