76 return 0 != value_.bits_.eventsDispatched_;
82 value_.bits_.eventsDispatched_ = state ? 1 : 0;
88 return 0 != value_.bits_.ioWaited_;
94 value_.bits_.ioWaited_ = state ? 1 : 0;
100 return value_.bits_.reserved_;
106 value_.bits_.reserved_ = flags;
112 Flags eventsDispatched_ : 1;
114 Flags reserved_ : 30;
189 UInt32 socketBufferSize = 8 * 1024 * 1024);
201 return processImpl();
222 UInt32 socketBufferSize = 8 * 1024 * 1024);
234 return processImpl();
312 return processImpl();
325 template <
typename EngineT>
326 typename std::enable_if<std::is_base_of<FeedEngine, EngineT>::value,
bool>::type
329 return engine.process().eventsDispatched();
332 template <
typename EngineT,
typename... T>
359 , spinBeforeIdleTime_(1)
373 return threadAffinity_;
385 return threadAffinity_;
399 threadCount_ = value;
412 return spinBeforeIdleTime_;
418 spinBeforeIdleTime_ = value;
423 UInt32 spinBeforeIdleTime_;
479 class FeedEngineThreadPoolImpl;
480 FeedEngineThreadPoolImpl*
const impl_;
EfViFeedEngine(const LoggerSettings &loggerSettings, UInt32 receiveRingSize=4095, WatchService &watch=NicWatch::service())
Constructor.
~EfViFeedEngine() override
NetFeedEngineProcessResult process()
Carries out pending actions like data retrieval and event dispatching.
EfViFeedEngine(UInt32 receiveRingSize=4095, WatchService &watch=NicWatch::service())
A pool of threads executing feed engine tasks.
FeedEngineThreadPool(const FeedEngineThreadPoolSettings &, const std::vector< FeedEngine * > &, FeedEngineThreadPoolListener *=nullptr)
const FeedEngineThreadPoolSettings & settings() const
FeedEngineThreadPool(const FeedEngineThreadPoolSettings &, FeedEngine *, FeedEngineThreadPoolListener *=nullptr)
The Feed Engine machinery.
FeedEngine & operator=(const FeedEngine &)=delete
std::string info()
Provides information about the actual implementation of the feed engine.
FeedEngine(const FeedEngine &)=delete
Designed to reflect various aspects of feed engine processing flow.
void reserved(Flags flags) noexcept
Reserved (unused) flags.
NetFeedEngineProcessResult(UInt32 flags) noexcept
void ioWaited(bool state) noexcept
Indicates whether processing had to sleep in kernel while checking data availability.
Flags reserved() const noexcept
Reserved (unused) flags.
bool ioWaited() const noexcept
Indicates whether processing had to sleep in kernel while checking data availability.
bool eventsDispatched() const noexcept
Indicates whether feed-related events like data reception or absence have been dispatched.
void eventsDispatched(bool state) noexcept
Indicates whether feed-related events like data reception or absence have been dispatched.
UInt32 Flags
Aliases integral type whose bits are used to indicate flag presence.
static NicWatch & service()
Returns watch service.
SingleThreadedEfViFeedEngine(const LoggerSettings &loggerSettings, const std::string &ifName, UInt16 memregSize=512, UInt32 receiveRingSize=1024)
Constructor.
SingleThreadedEfViFeedEngine(const std::string &ifName, UInt16 memregSize=512, UInt32 receiveRingSize=1024)
Constructor.
~SingleThreadedEfViFeedEngine() override
NetFeedEngineProcessResult process()
Carries out pending actions like data retrieval and event dispatching.
~SingleThreadedHardwareTimestampSocketFeedEngine() override
SingleThreadedHardwareTimestampSocketFeedEngine(const LoggerSettings &loggerSettings, UInt32 socketBufferSize=8 *1024 *1024)
Constructor.
SingleThreadedHardwareTimestampSocketFeedEngine(UInt32 socketBufferSize=8 *1024 *1024)
NetFeedEngineProcessResult process()
Carries out pending actions like data retrieval and event dispatching.
SingleThreadedSocketFeedEngine(UInt32 socketBufferSize=8 *1024 *1024)
NetFeedEngineProcessResult process()
Carries out pending actions like data retrieval and event dispatching.
~SingleThreadedSocketFeedEngine() override
SingleThreadedSocketFeedEngine(const LoggerSettings &loggerSettings, UInt32 socketBufferSize=8 *1024 *1024)
Constructor.
~SocketFeedEngine() override
SocketFeedEngine(const LoggerSettings &loggerSettings, UInt32 dataWaitTime=10, UInt32 socketBufferSize=8 *1024 *1024, WatchService &watch=UtcWatch::service())
Constructor.
NetFeedEngineProcessResult process()
Carries out pending actions like data retrieval and event dispatching.
SocketFeedEngine(UInt32 dataWaitTime=10, UInt32 socketBufferSize=8 *1024 *1024, WatchService &watch=UtcWatch::service())
Current thread related tasks.
static ThreadId threadId()
static void affinity(const System::ThreadAffinity &)
Sets the processor affinity mask for the current thread.
static void affinity(System::CpuIndex)
Represents set of CPU indices.
static UtcWatch & service()
Returns watch service.
size_t CpuIndex
Zero-based index of CPU.
std::enable_if< std::is_base_of< FeedEngine, EngineT >::value, bool >::type process(EngineT &engine)
Carries out pending actions like data retrieval and event dispatching.
Identifies reasons feed engine threads becomes idle.
@ DataWaitTimeout
Thread waited for incoming data using corresponding I/O operations (like 'select') and exited waiting...
@ Redundant
Thread entered idle state due to absence of any data and while other threads are waiting for new inco...
Listener for thread-related events.
virtual void onFeedEngineThreadBegin(const FeedEngineThreadPool &)
Member invoked by feed engine when a new processing thread is spawned.
virtual void onFeedEngineThreadIdle(const FeedEngineThreadPool &, FeedEngineThreadIdle::Reason, UInt32 &)
Is called when feed engine's thread is idle.
virtual void onFeedEngineThreadEnd(const FeedEngineThreadPool &)
Member is invoked by feed engine when processing thread is about to end.
virtual ~FeedEngineThreadPoolListener()=0
Settings for a thread pool executing feed engine tasks.
FeedEngineThreadPoolSettings()
void threadCount(UInt32 value)
Sets threadsCount.
UInt32 spinBeforeIdleTime() const
Defines amount of time Feed Engine keeps cycling before going to sleep when no useful activity can be...
System::ThreadAffinity & threadAffinity()
Defines set of CPUs allowed for each working thread to be executed on while processing market data by...
void spinBeforeIdleTime(UInt32 value)
Sets redundancySpinTime.
const System::ThreadAffinity & threadAffinity() const
Defines set of CPUs allowed for each working thread to be executed on while processing market data by...
UInt32 threadCount() const
Number of working threads to be used by feed engine.