OnixS C++ Eurex T7 Market and Reference Data Interface (EMDI, RDI, EOBI) Handlers  7.4.2
API documentation
EmdiPacketProcessor.h
Go to the documentation of this file.
1 /*
2 * Copyright Onix Solutions Limited [OnixS]. All rights reserved.
3 *
4 * This software owned by Onix Solutions Limited [OnixS] and is protected by copyright law
5 * and international copyright treaties.
6 *
7 * Access to and use of the software is governed by the terms of the applicable ONIXS Software
8 * Services Agreement (the Agreement) and Customer end user license agreements granting
9 * a non-assignable, non-transferable and non-exclusive license to use the software
10 * for it's own data processing purposes under the terms defined in the Agreement.
11 *
12 * Except as otherwise granted within the terms of the Agreement, copying or reproduction of any part
13 * of this source code or associated reference material to any other location for further reproduction
14 * or redistribution, and any amendments to this copyright notice, are expressly prohibited.
15 *
16 * Any reproduction or redistribution for sale or hiring of the Software not in accordance with
17 * the terms of the Agreement is a violation of copyright law.
18 */
19 
20 #pragma once
21 
22 #include "PacketProcessor.h"
23 
24 #include <algorithm>
25 
26 namespace OnixS {
27 namespace Eurex {
28 namespace MarketData {
29 namespace Implementation {
30 
31 struct EmdiPacketProcessor : public PacketProcessor<PacketHeaderForEMDI>
32 {
34 
35 public:
37  unsigned int maxPacketWaitingTime,
38  unsigned int inactivityWaitingTime,
39  unsigned int outOfOrderMaxInterval,
40  Concurrency::RecursiveMutex* lock,
41  const boost::function<bool(PartitionId partitionId)> filterPacket
42  )
43  : base(maxPacketWaitingTime, inactivityWaitingTime, outOfOrderMaxInterval, lock)
44  , filterPacket_(filterPacket)
45  {
46  }
47 
48 protected:
49  virtual bool filterPacket(const PacketHeaderForEMDI* header)
50  {
51  return filterPacket_(PacketHeaderHelper::getPartitionId(header));
52  }
53 
54  virtual void fillDataSource(FE::PacketContainer& packetContainer, DataSource& dataSource)
55  {
56  base::fillDataSource(packetContainer, dataSource);
57 
58  const PacketHeaderForEMDI* const packetHeader = reinterpret_cast<const PacketHeaderForEMDI*>(packetContainer.data());
60  dataSource.partitionId = PacketHeaderHelper::getPartitionId(packetHeader);
61  };
62 
63 private:
64  boost::function<bool(PartitionId partitionId)> filterPacket_;
65 };
66 
67 }}}}
68 
virtual bool filterPacket(const PacketHeaderForEMDI *header)
UInt32 PartitionId
Alias for Partition ID type.
Definition: Defines.h:48
EmdiPacketProcessor(unsigned int maxPacketWaitingTime, unsigned int inactivityWaitingTime, unsigned int outOfOrderMaxInterval, Concurrency::RecursiveMutex *lock, const boost::function< bool(PartitionId partitionId)> filterPacket)
Definition: Defines.h:30
virtual void fillDataSource(FE::PacketContainer &packetContainer, DataSource &dataSource)
static PartitionId getPartitionId(const PacketHeaderForEMDI *packetHeader)
Definition: PacketHeader.h:174
static SequenceNumber getPerformanceIndicator(const PacketHeaderForEMDI *packetHeader)
Definition: PacketHeader.h:186
virtual void fillDataSource(FE::PacketContainer &packetContainer, DataSource &dataSource)