An important issue that the users of OnixS C++ ICE iMpact Multicast Price Feed Handler library need to consider is the threading model that is used by the components of the application. The threading model of a library determines how the methods of the listeners are assigned to threads in order to be executed and synchronized.
The Handler processes market data coming from multicast feeds asynchronously. The Handler uses the internal pool of threads whose size depends on multiple factors. All threads are spawned as soon as market data processing is started and are being executed until market data processing is accomplished. The Handler spawns no additional threads while it's running.
The Handler may call OnixS::ICE::iMpact::MarketData::ErrorListener members simultaneously from different threads. Invocation of any member of OnixS::ICE::iMpact::MarketData::ErrorListener class is not synchronized by the Handler.
The Handler may call OnixS::ICE::iMpact::MarketData::FeedListener members simultaneously from different threads. Invocation of any member of OnixS::ICE::iMpact::MarketData::FeedListener class is not synchronized by the Handler.
The Handler can call OnixS::ICE::iMpact::MarketData::HandlerStateChangeListener members only from a single thread.
The Handler can call OnixS::ICE::iMpact::MarketData::OrderBookChangeListener members only from a single thread.
The Handler can call OnixS::ICE::iMpact::MarketData::OrderBookUpdateListener members only from a single thread.
The Handler can call OnixS::ICE::iMpact::MarketData::OrderBookBundleUpdateListener members only from a single thread.
The Handler can call OnixS::ICE::iMpact::MarketData::ExchangeListener members only from a single thread.