MCPcopy Create free account
hub / github.com/antmachineintelligence/mtgbmcode / TcpSocket

Class TcpSocket

src/network/socket_wrapper.hpp:93–301  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

91}
92
93class TcpSocket {
94 public:
95 TcpSocket() {
96 sockfd_ = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
97 if (sockfd_ == INVALID_SOCKET) {
98 Log::Fatal("Socket construction error");
99 return;
100 }
101 ConfigSocket();
102 }
103
104 explicit TcpSocket(SOCKET socket) {
105 sockfd_ = socket;
106 if (sockfd_ == INVALID_SOCKET) {
107 Log::Fatal("Passed socket error");
108 return;
109 }
110 ConfigSocket();
111 }
112
113 TcpSocket(const TcpSocket &object) {
114 sockfd_ = object.sockfd_;
115 ConfigSocket();
116 }
117 ~TcpSocket() {
118 }
119 inline void SetTimeout(int timeout) {
120 setsockopt(sockfd_, SOL_SOCKET, SO_RCVTIMEO, reinterpret_cast<char*>(&timeout), sizeof(timeout));
121 }
122 inline void ConfigSocket() {
123 if (sockfd_ == INVALID_SOCKET) {
124 return;
125 }
126
127 if (setsockopt(sockfd_, SOL_SOCKET, SO_RCVBUF, reinterpret_cast<const char*>(&SocketConfig::kSocketBufferSize), sizeof(SocketConfig::kSocketBufferSize)) != 0) {
128 Log::Warning("Set SO_RCVBUF failed, please increase your net.core.rmem_max to 100k at least");
129 }
130
131 if (setsockopt(sockfd_, SOL_SOCKET, SO_SNDBUF, reinterpret_cast<const char*>(&SocketConfig::kSocketBufferSize), sizeof(SocketConfig::kSocketBufferSize)) != 0) {
132 Log::Warning("Set SO_SNDBUF failed, please increase your net.core.wmem_max to 100k at least");
133 }
134 if (setsockopt(sockfd_, IPPROTO_TCP, TCP_NODELAY, reinterpret_cast<const char*>(&SocketConfig::kNoDelay), sizeof(SocketConfig::kNoDelay)) != 0) {
135 Log::Warning("Set TCP_NODELAY failed");
136 }
137 }
138
139 inline static void Startup() {
140#if defined(_WIN32)
141 WSADATA wsa_data;
142 if (WSAStartup(MAKEWORD(2, 2), &wsa_data) == -1) {
143 Log::Fatal("Socket error: WSAStartup error");
144 }
145 if (LOBYTE(wsa_data.wVersion) != 2 || HIBYTE(wsa_data.wVersion) != 2) {
146 WSACleanup();
147 Log::Fatal("Socket error: Winsock.dll version error");
148 }
149#else
150#endif

Callers 1

AcceptMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected