aws-crt-cpp
C++ wrapper around the aws-c-* libraries. Provides Cross-Platform Transport Protocols and SSL/TLS implementations for C++.
SocketOptions.h
Go to the documentation of this file.
1 #pragma once
2 
7 #include <aws/crt/Exports.h>
8 
9 #include <aws/io/socket.h>
10 
11 namespace Aws
12 {
13  namespace Crt
14  {
15  namespace Io
16  {
17  enum class SocketType
18  {
24  Stream = AWS_SOCKET_STREAM,
25 
31  Dgram = AWS_SOCKET_DGRAM,
32  };
33 
34  enum class SocketDomain
35  {
36  IPv4 = AWS_SOCKET_IPV4,
37  IPv6 = AWS_SOCKET_IPV6,
41  Local = AWS_SOCKET_LOCAL,
42  };
43 
48  enum class SocketTcpNodelay
49  {
53  Default = AWS_SOCKET_TCP_NODELAY_DEFAULT,
54 
58  On = AWS_SOCKET_TCP_NODELAY_ON,
59 
63  Off = AWS_SOCKET_TCP_NODELAY_OFF,
64  };
65 
70  {
71  public:
72  SocketOptions();
73  SocketOptions(const SocketOptions &rhs) = default;
74  SocketOptions(SocketOptions &&rhs) = default;
75 
76  SocketOptions &operator=(const SocketOptions &rhs) = default;
77  SocketOptions &operator=(SocketOptions &&rhs) = default;
78 
83  void SetSocketType(SocketType type) { options.type = (enum aws_socket_type)type; }
84 
88  SocketType GetSocketType() const { return (SocketType)options.type; }
89 
94  void SetSocketDomain(SocketDomain domain) { options.domain = (enum aws_socket_domain)domain; }
95 
99  SocketDomain GetSocketDomain() const { return (SocketDomain)options.domain; }
100 
105  void SetConnectTimeoutMs(uint32_t timeout) { options.connect_timeout_ms = timeout; }
106 
110  uint32_t GetConnectTimeoutMs() const { return options.connect_timeout_ms; }
111 
117  void SetKeepAliveIntervalSec(uint16_t keepAliveInterval)
118  {
119  options.keep_alive_interval_sec = keepAliveInterval;
120  }
121 
125  uint16_t GetKeepAliveIntervalSec() const { return options.keep_alive_interval_sec; }
126 
132  void SetKeepAliveTimeoutSec(uint16_t keepAliveTimeout)
133  {
134  options.keep_alive_timeout_sec = keepAliveTimeout;
135  }
136 
141  uint16_t GetKeepAliveTimeoutSec() const { return options.keep_alive_timeout_sec; }
142 
148  void SetKeepAliveMaxFailedProbes(uint16_t maxProbes)
149  {
150  options.keep_alive_max_failed_probes = maxProbes;
151  }
152 
156  uint16_t GetKeepAliveMaxFailedProbes() const { return options.keep_alive_max_failed_probes; }
157 
162  void SetKeepAlive(bool keepAlive) { options.keepalive = keepAlive; }
163 
167  bool GetKeepAlive() const { return options.keepalive; }
168 
176  {
177  options.tcp_nodelay = (enum aws_socket_tcp_nodelay)tcpNodelay;
178  }
179 
183  SocketTcpNodelay GetTcpNodelay() const { return (SocketTcpNodelay)options.tcp_nodelay; }
184 
186  aws_socket_options &GetImpl() { return options; }
188  const aws_socket_options &GetImpl() const { return options; }
189 
190  private:
191  aws_socket_options options;
192  };
193  } // namespace Io
194  } // namespace Crt
195 } // namespace Aws
uint16_t GetKeepAliveTimeoutSec() const
Definition: SocketOptions.h:141
uint32_t GetConnectTimeoutMs() const
Definition: SocketOptions.h:110
void SetKeepAliveMaxFailedProbes(uint16_t maxProbes)
Definition: SocketOptions.h:148
void SetTcpNodelay(SocketTcpNodelay tcpNodelay)
Definition: SocketOptions.h:175
void SetKeepAlive(bool keepAlive)
Definition: SocketOptions.h:162
#define AWS_CRT_CPP_API
Definition: Exports.h:36
SocketTcpNodelay GetTcpNodelay() const
Definition: SocketOptions.h:183
SocketDomain GetSocketDomain() const
Definition: SocketOptions.h:99
void SetSocketType(SocketType type)
Definition: SocketOptions.h:83
uint16_t GetKeepAliveIntervalSec() const
Definition: SocketOptions.h:125
void SetSocketDomain(SocketDomain domain)
Definition: SocketOptions.h:94
uint16_t GetKeepAliveMaxFailedProbes() const
Definition: SocketOptions.h:156
void SetConnectTimeoutMs(uint32_t timeout)
Definition: SocketOptions.h:105
void SetKeepAliveTimeoutSec(uint16_t keepAliveTimeout)
Definition: SocketOptions.h:132
SocketDomain
Definition: SocketOptions.h:34
SocketType GetSocketType() const
Definition: SocketOptions.h:88
void SetKeepAliveIntervalSec(uint16_t keepAliveInterval)
Definition: SocketOptions.h:117
Definition: SocketOptions.h:69
bool GetKeepAlive() const
Definition: SocketOptions.h:167
Definition: Allocator.h:10
SocketTcpNodelay
Definition: SocketOptions.h:48
SocketType
Definition: SocketOptions.h:17