OnixS C++ CBOE CFE Binary Order Entry (BOE) Handler  1.12.0
API documentation
NewComplexInstrumentAccepted.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 <vector>
23 
28 
29 
30 namespace OnixS {
31 namespace CboeCFE {
32 namespace Trading {
33 namespace BOE {
34 
35  /// Indicates acceptance of a complex strategy.
36  struct ONIXS_CBOE_CFE_BOE_API NewComplexInstrumentAccepted : public BinaryMessage
37  {
38  /// Transaction Time
40  {
41  return ordinary<DateTime>(0);
42  }
43 
44  /// Echoed back from the TPH message
45  StrRef clOrdId() const
46  {
47  return fixedStr<20>(8);
48  }
49 
50  /// The complex instrument id
51  StrRef symbol() const
52  {
53  return fixedStr<8>(28);
54  }
55 
56  /// The number of complex instruments
58  {
59  return ordinary<Binary4>(36);
60  }
61 
62  /// Legs
63  Binary1 legCnt() const
64  {
65  return ordinary<Binary1>(40);
66  }
67 
68  struct Leg : public BinaryMessage
69  {
70  /// The symbol id
71  StrRef legSymbol() const
72  {
73  return fixedStr<8>(0);
74  }
75 
76  /// Ratio of number of contracts
78  {
79  return ordinary<Binary4>(24);
80  }
81 
82  /// Leg Side
83  StrRef legSide() const
84  {
85  return fixedStr<1>(28);
86  }
87 
88  /// Initializes instance over given memory block.
89  Leg(const void* data, MessageSize size)
90  : BinaryMessage(data, size)
91  {
92  }
93  };
94 
95  ///
96  Leg legs(MessageSize index) const
97  {
98  if (index >= legCnt())
99  throw std::out_of_range("index");
100  return submessage<Leg>(40 + 1 + 13 * index, 13);
101  }
102 
103  /// Initializes instance over given memory block.
105  : BinaryMessage(data, size)
106  {
107  }
108  };
109 
110  /// Serializes object into string.
111  ONIXS_CBOE_CFE_BOE_API void toStr(std::string&, const NewComplexInstrumentAccepted&);
112 
113  /// Serializes object into string.
114  inline std::string toStr(const NewComplexInstrumentAccepted& msg)
115  {
116  std::string str;
117  toStr(str, msg);
118  return str;
119  }
120 
121 }
122 }
123 }
124 }
Provides efficient way of accessing text-based field values.
Definition: String.h:45
Leg(const void *data, MessageSize size)
Initializes instance over given memory block.
Encapsulates services for manipulating little endian encoded messages.
StrRef clOrdId() const
Echoed back from the TPH message.
void toStr(std::string &str, const FixedPointDecimal< Mantissa, Exponent > &number)
Serializes fixed-point decimal into a string.
Definition: Decimal.h:156
Binary2 MessageSize
Aliases message length type.
Binary4 noOfComplexInstruments() const
The number of complex instruments.
NewComplexInstrumentAccepted(const void *data, MessageSize size)
Initializes instance over given memory block.