1 | /* |
2 | * Licensed to the Apache Software Foundation (ASF) under one |
3 | * or more contributor license agreements. See the NOTICE file |
4 | * distributed with this work for additional information |
5 | * regarding copyright ownership. The ASF licenses this file |
6 | * to you under the Apache License, Version 2.0 (the |
7 | * "License"); you may not use this file except in compliance |
8 | * with the License. You may obtain a copy of the License at |
9 | * |
10 | * http://www.apache.org/licenses/LICENSE-2.0 |
11 | * |
12 | * Unless required by applicable law or agreed to in writing, |
13 | * software distributed under the License is distributed on an |
14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
15 | * KIND, either express or implied. See the License for the |
16 | * specific language governing permissions and limitations |
17 | * under the License. |
18 | */ |
19 | |
20 | // clang-format off |
21 | |
22 | #ifndef _THRIFT_TRANSPORT_PLATFORM_SOCKET_H_ |
23 | # define _THRIFT_TRANSPORT_PLATFORM_SOCKET_H_ |
24 | |
25 | #ifdef _WIN32 |
26 | # include <winsock2.h> |
27 | # define THRIFT_GET_SOCKET_ERROR ::WSAGetLastError() |
28 | # define THRIFT_ERRNO (*_errno()) |
29 | # define THRIFT_EINPROGRESS WSAEINPROGRESS |
30 | # define THRIFT_EAGAIN WSAEWOULDBLOCK |
31 | # define THRIFT_EINTR WSAEINTR |
32 | # define THRIFT_ECONNRESET WSAECONNRESET |
33 | # define THRIFT_ENOTCONN WSAENOTCONN |
34 | # define THRIFT_ETIMEDOUT WSAETIMEDOUT |
35 | # define THRIFT_EWOULDBLOCK WSAEWOULDBLOCK |
36 | # define THRIFT_EPIPE WSAECONNRESET |
37 | # define THRIFT_NO_SOCKET_CACHING SO_EXCLUSIVEADDRUSE |
38 | # define THRIFT_SOCKET SOCKET |
39 | # define THRIFT_INVALID_SOCKET INVALID_SOCKET |
40 | # define THRIFT_SOCKETPAIR thrift_socketpair |
41 | # define THRIFT_FCNTL thrift_fcntl |
42 | # define THRIFT_O_NONBLOCK 1 |
43 | # define THRIFT_F_GETFL 0 |
44 | # define THRIFT_F_SETFL 1 |
45 | # define THRIFT_GETTIMEOFDAY thrift_gettimeofday |
46 | # define THRIFT_CLOSESOCKET closesocket |
47 | # define THRIFT_CLOSE _close |
48 | # define THRIFT_OPEN _open |
49 | # define THRIFT_FTRUNCATE _chsize_s |
50 | # define THRIFT_FSYNC _commit |
51 | # define THRIFT_LSEEK _lseek |
52 | # define THRIFT_WRITE _write |
53 | # define THRIFT_READ _read |
54 | # define THRIFT_FSTAT _fstat |
55 | # define THRIFT_STAT _stat |
56 | # ifdef _WIN32_WCE |
57 | # define THRIFT_GAI_STRERROR(...) thrift_wstr2str(gai_strerrorW(__VA_ARGS__)) |
58 | # else |
59 | # define THRIFT_GAI_STRERROR gai_strerrorA |
60 | # endif |
61 | # define THRIFT_SSIZET ptrdiff_t |
62 | # if (_MSC_VER < 1900) |
63 | # define THRIFT_SNPRINTF _snprintf |
64 | # else |
65 | # define THRIFT_SNPRINTF snprintf |
66 | # endif |
67 | # define THRIFT_SLEEP_SEC thrift_sleep |
68 | # define THRIFT_SLEEP_USEC thrift_usleep |
69 | # define THRIFT_TIMESPEC thrift_timespec |
70 | # define THRIFT_CTIME_R thrift_ctime_r |
71 | # define THRIFT_POLL thrift_poll |
72 | # if WINVER <= 0x0502 //XP, Server2003 |
73 | # define THRIFT_POLLFD thrift_pollfd |
74 | # define THRIFT_POLLIN 0x0300 |
75 | # define THRIFT_POLLOUT 0x0010 |
76 | # else //Vista, Win7... |
77 | # define THRIFT_POLLFD pollfd |
78 | # define THRIFT_POLLIN POLLIN |
79 | # define THRIFT_POLLOUT POLLOUT |
80 | # endif //WINVER |
81 | # define THRIFT_SHUT_RDWR SD_BOTH |
82 | # if !defined(AI_ADDRCONFIG) |
83 | # define AI_ADDRCONFIG 0x00000400 |
84 | # endif |
85 | #else //not _WIN32 |
86 | # include <errno.h> |
87 | # define THRIFT_GET_SOCKET_ERROR errno |
88 | # define THRIFT_ERRNO errno |
89 | # define THRIFT_EINTR EINTR |
90 | # define THRIFT_EINPROGRESS EINPROGRESS |
91 | # define THRIFT_ECONNRESET ECONNRESET |
92 | # define THRIFT_ENOTCONN ENOTCONN |
93 | # define THRIFT_ETIMEDOUT ETIMEDOUT |
94 | # define THRIFT_EWOULDBLOCK EWOULDBLOCK |
95 | # define THRIFT_EAGAIN EAGAIN |
96 | # define THRIFT_EPIPE EPIPE |
97 | # define THRIFT_NO_SOCKET_CACHING SO_REUSEADDR |
98 | # define THRIFT_SOCKET int |
99 | # define THRIFT_INVALID_SOCKET (-1) |
100 | # define THRIFT_SOCKETPAIR socketpair |
101 | # define THRIFT_FCNTL fcntl |
102 | # define THRIFT_O_NONBLOCK O_NONBLOCK |
103 | # define THRIFT_F_GETFL F_GETFL |
104 | # define THRIFT_F_SETFL F_SETFL |
105 | # define THRIFT_GETTIMEOFDAY gettimeofday |
106 | # define THRIFT_CLOSESOCKET close |
107 | # define THRIFT_CLOSE close |
108 | # define THRIFT_OPEN open |
109 | # define THRIFT_FTRUNCATE ftruncate |
110 | # define THRIFT_FSYNC fsync |
111 | # define THRIFT_LSEEK lseek |
112 | # define THRIFT_WRITE write |
113 | # define THRIFT_READ read |
114 | # define THRIFT_STAT stat |
115 | # define THRIFT_FSTAT fstat |
116 | # define THRIFT_GAI_STRERROR gai_strerror |
117 | # define THRIFT_SSIZET ssize_t |
118 | # define THRIFT_SNPRINTF snprintf |
119 | # define THRIFT_SLEEP_SEC sleep |
120 | # define THRIFT_SLEEP_USEC usleep |
121 | # define THRIFT_TIMESPEC timespec |
122 | # define THRIFT_CTIME_R ctime_r |
123 | # define THRIFT_POLL poll |
124 | # define THRIFT_POLLFD pollfd |
125 | # define THRIFT_POLLIN POLLIN |
126 | # define THRIFT_POLLOUT POLLOUT |
127 | # define THRIFT_SHUT_RDWR SHUT_RDWR |
128 | #endif |
129 | |
130 | #endif // _THRIFT_TRANSPORT_PLATFORM_SOCKET_H_ |
131 | |