aws-crt-cpp
C++ wrapper around the aws-c-* libraries. Provides Cross-Platform Transport Protocols and SSL/TLS implementations for C++.
Loading...
Searching...
No Matches
SocketOptions.h
Go to the documentation of this file.
1#pragma once
7#include <aws/crt/Exports.h>
8
9#include <aws/io/socket.h>
10
11namespace 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
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:
73 SocketOptions(const SocketOptions &rhs) = default;
74 SocketOptions(SocketOptions &&rhs) = default;
75
76 SocketOptions &operator=(const 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
#define AWS_CRT_CPP_API
Definition Exports.h:36
Definition SocketOptions.h:70
void SetKeepAliveMaxFailedProbes(uint16_t maxProbes)
Definition SocketOptions.h:148
SocketOptions(const SocketOptions &rhs)=default
SocketOptions & operator=(const SocketOptions &rhs)=default
void SetTcpNodelay(SocketTcpNodelay tcpNodelay)
Definition SocketOptions.h:175
uint32_t GetConnectTimeoutMs() const
Definition SocketOptions.h:110
void SetSocketDomain(SocketDomain domain)
Definition SocketOptions.h:94
void SetSocketType(SocketType type)
Definition SocketOptions.h:83
void SetKeepAliveTimeoutSec(uint16_t keepAliveTimeout)
Definition SocketOptions.h:132
void SetKeepAliveIntervalSec(uint16_t keepAliveInterval)
Definition SocketOptions.h:117
SocketType GetSocketType() const
Definition SocketOptions.h:88
void SetConnectTimeoutMs(uint32_t timeout)
Definition SocketOptions.h:105
SocketDomain GetSocketDomain() const
Definition SocketOptions.h:99
void SetKeepAlive(bool keepAlive)
Definition SocketOptions.h:162
SocketOptions & operator=(SocketOptions &&rhs)=default
SocketTcpNodelay GetTcpNodelay() const
Definition SocketOptions.h:183
uint16_t GetKeepAliveMaxFailedProbes() const
Definition SocketOptions.h:156
uint16_t GetKeepAliveTimeoutSec() const
Definition SocketOptions.h:141
SocketOptions(SocketOptions &&rhs)=default
uint16_t GetKeepAliveIntervalSec() const
Definition SocketOptions.h:125
bool GetKeepAlive() const
Definition SocketOptions.h:167
SocketDomain
Definition SocketOptions.h:35
SocketTcpNodelay
Definition SocketOptions.h:49
SocketType
Definition SocketOptions.h:18
Definition Allocator.h:11