OnixS C++ FIX Engine  4.7.0
API Documentation
TcpDirectAttr.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 #pragma once
20 
21 #include <OnixS/FIXEngine/ABI.h>
22 
23 #include <string>
24 #include <stdint.h>
25 
26 namespace OnixS {
27 namespace FIX {
28 namespace TCPDirect {
29 
30 /**
31 * TCPDirect attributes to pass configuration details (a wrapper around the zf_Attributes struct).
32 *
33 * The default values for attributes may be overridden by setting the
34 * environment variable ZF_Attributes. For example:
35 *
36 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sh}
37 * ZF_Attributes="interface=enp4s0f0;log_level=3;reactor_spin_count=1"
38 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
39 */
41 {
42 public:
43  /** Allocate an attribute object.
44  *
45  * \throws std::bad_alloc if memory could not be allocated.
46  * \throws std::runtime_error if the ZF_Attributes environment variable is malformed.
47  */
48  Attributes();
49 
50  ~Attributes();
51 
52  Attributes(const Attributes& other);
53 
54  Attributes& operator=(const Attributes& other);
55 
56  /// Sets the network interface name.
57  void networkInterface(const std::string& ifName)
58  {
59  set("interface", ifName);
60  }
61 
62  /**
63  * Gets the attribute value.
64  *
65  * \param name Name of the attribute.
66  *
67  * \throws std::logic_error Thrown if @p name is not a valid attribute name
68  * or if @p name does not have a string type.
69  */
70  std::string getString(const std::string& name);
71 
72  /**
73  * Sets an attribute to a string value.
74  *
75  * \param name Name of the attribute.
76  * \param value New value for the attribute.
77  *
78  * \throws std::logic_error Thrown if @p name is not a valid attribute name
79  * or if the attribute is not a string attribute.
80  */
81  void set(const std::string& name, const std::string& value);
82 
83  /**
84  * Gets the attribute value.
85  *
86  * \param name Name of the attribute.
87  *
88  * \throws std::logic_error Thrown if @p name is not a valid attribute name
89  * or if @p name does not have an integer type.
90  */
91  int64_t getInt(const std::string& name);
92 
93  /**
94  * Sets an attribute to an integer value.
95  *
96  * \param name Name of the attribute.
97  * \param value New value for the attribute.
98  *
99  * \throws std::logic_error Thrown if @p name is not a valid attribute name.
100  * \throws std::domain_error Thrown if @p value is not within the range of values this
101  * attribute can take.
102  */
103  void set(const std::string& name, uint64_t value);
104 
105 private:
106  class Impl;
107  Impl* const impl_;
108 
109  friend class Stack;
110 };
111 
112 }
113 }
114 }
void networkInterface(const std::string &ifName)
Sets the network interface name.
Definition: TcpDirectAttr.h:57
#define ONIXS_FIXENGINE_API
Definition: ABI.h:45
TCPDirect attributes to pass configuration details (a wrapper around the zf_Attributes struct)...
Definition: TcpDirectAttr.h:40
A high-level wrapper over the TCPDirect stack.