Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
9c510f33
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
9c510f33
编写于
4月 27, 2022
作者:
dengyihao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feature(rpc): add connect timeout
上级
15a0befa
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
143 addition
and
100 deletion
+143
-100
include/os/osSocket.h
include/os/osSocket.h
+87
-84
source/libs/transport/inc/transComm.h
source/libs/transport/inc/transComm.h
+2
-0
source/libs/transport/src/transCli.c
source/libs/transport/src/transCli.c
+11
-1
source/os/src/osSocket.c
source/os/src/osSocket.c
+43
-15
未找到文件。
include/os/osSocket.h
浏览文件 @
9c510f33
...
@@ -19,53 +19,53 @@
...
@@ -19,53 +19,53 @@
// If the error is in a third-party library, place this header file under the third-party library header file.
// If the error is in a third-party library, place this header file under the third-party library header file.
// When you want to use this feature, you should find or add the same function in the following section.
// When you want to use this feature, you should find or add the same function in the following section.
#ifndef ALLOW_FORBID_FUNC
#ifndef ALLOW_FORBID_FUNC
#define socket
SOCKET_FUNC_TAOS_FORBID
#define socket
SOCKET_FUNC_TAOS_FORBID
#define bind
BIND_FUNC_TAOS_FORBID
#define bind
BIND_FUNC_TAOS_FORBID
#define listen
LISTEN_FUNC_TAOS_FORBID
#define listen
LISTEN_FUNC_TAOS_FORBID
#define accept
ACCEPT_FUNC_TAOS_FORBID
#define accept
ACCEPT_FUNC_TAOS_FORBID
#define epoll_create EPOLL_CREATE_FUNC_TAOS_FORBID
#define epoll_create EPOLL_CREATE_FUNC_TAOS_FORBID
#define epoll_ctl
EPOLL_CTL_FUNC_TAOS_FORBID
#define epoll_ctl
EPOLL_CTL_FUNC_TAOS_FORBID
#define epoll_wait
EPOLL_WAIT_FUNC_TAOS_FORBID
#define epoll_wait
EPOLL_WAIT_FUNC_TAOS_FORBID
#define inet_addr
INET_ADDR_FUNC_TAOS_FORBID
#define inet_addr
INET_ADDR_FUNC_TAOS_FORBID
#define inet_ntoa
INET_NTOA_FUNC_TAOS_FORBID
#define inet_ntoa
INET_NTOA_FUNC_TAOS_FORBID
#endif
#endif
#if defined(WINDOWS)
#if defined(WINDOWS)
#if BYTE_ORDER == LITTLE_ENDIAN
#if BYTE_ORDER == LITTLE_ENDIAN
#include <stdlib.h>
#include <stdlib.h>
#define htobe16(x) _byteswap_ushort(x)
#define htobe16(x) _byteswap_ushort(x)
#define htole16(x) (x)
#define htole16(x) (x)
#define be16toh(x) _byteswap_ushort(x)
#define be16toh(x) _byteswap_ushort(x)
#define le16toh(x) (x)
#define le16toh(x) (x)
#define htobe32(x) _byteswap_ulong(x)
#define htobe32(x) _byteswap_ulong(x)
#define htole32(x) (x)
#define htole32(x) (x)
#define be32toh(x) _byteswap_ulong(x)
#define be32toh(x) _byteswap_ulong(x)
#define le32toh(x) (x)
#define le32toh(x) (x)
#define htobe64(x) _byteswap_uint64(x)
#define htobe64(x) _byteswap_uint64(x)
#define htole64(x) (x)
#define htole64(x) (x)
#define be64toh(x) _byteswap_uint64(x)
#define be64toh(x) _byteswap_uint64(x)
#define le64toh(x) (x)
#define le64toh(x) (x)
#else
#else
#error byte order not supported
#error byte order not supported
#endif
#endif
#define __BYTE_ORDER BYTE_ORDER
#define __BYTE_ORDER BYTE_ORDER
#define __BIG_ENDIAN BIG_ENDIAN
#define __BIG_ENDIAN BIG_ENDIAN
#define __LITTLE_ENDIAN LITTLE_ENDIAN
#define __LITTLE_ENDIAN LITTLE_ENDIAN
#define __PDP_ENDIAN PDP_ENDIAN
#define __PDP_ENDIAN PDP_ENDIAN
#else
#else
#include <netinet/in.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/socket.h>
#if defined(_TD_DARWIN_64)
#if defined(_TD_DARWIN_64)
#include <osEok.h>
#include <osEok.h>
#else
#else
#include <netinet/in.h>
#include <netinet/in.h>
#include <sys/epoll.h>
#include <sys/epoll.h>
#endif
#endif
#endif
#endif
#ifdef __cplusplus
#ifdef __cplusplus
...
@@ -73,24 +73,24 @@ extern "C" {
...
@@ -73,24 +73,24 @@ extern "C" {
#endif
#endif
#if defined(WINDOWS)
#if defined(WINDOWS)
typedef
int
socklen_t
;
typedef
int
socklen_t
;
#define TAOS_EPOLL_WAIT_TIME 100
#define TAOS_EPOLL_WAIT_TIME 100
typedef
SOCKET
eventfd_t
;
typedef
SOCKET
eventfd_t
;
#define eventfd(a, b)
-1
#define eventfd(a, b)
-1
#define EpollClose(pollFd) epoll_close(pollFd)
#define EpollClose(pollFd) epoll_close(pollFd)
#ifndef EPOLLWAKEUP
#ifndef EPOLLWAKEUP
#define EPOLLWAKEUP (1u << 29)
#define EPOLLWAKEUP (1u << 29)
#endif
#endif
#elif defined(_TD_DARWIN_64)
#elif defined(_TD_DARWIN_64)
#define TAOS_EPOLL_WAIT_TIME 500
#define TAOS_EPOLL_WAIT_TIME 500
typedef
int32_t
SOCKET
;
typedef
int32_t
SOCKET
;
typedef
SOCKET
EpollFd
;
typedef
SOCKET
EpollFd
;
#define EpollClose(pollFd)
epoll_close(pollFd)
#define EpollClose(pollFd)
epoll_close(pollFd)
#else
#else
#define TAOS_EPOLL_WAIT_TIME 500
#define TAOS_EPOLL_WAIT_TIME 500
typedef
int32_t
SOCKET
;
typedef
int32_t
SOCKET
;
typedef
SOCKET
EpollFd
;
typedef
SOCKET
EpollFd
;
#define EpollClose(pollFd)
taosCloseSocket(pollFd)
#define EpollClose(pollFd)
taosCloseSocket(pollFd)
#endif
#endif
#if defined(_TD_DARWIN_64)
#if defined(_TD_DARWIN_64)
...
@@ -119,8 +119,8 @@ extern "C" {
...
@@ -119,8 +119,8 @@ extern "C" {
#define __PDP_ENDIAN PDP_ENDIAN
#define __PDP_ENDIAN PDP_ENDIAN
#endif
#endif
typedef
int32_t
SocketFd
;
typedef
int32_t
SocketFd
;
typedef
SocketFd
EpollFd
;
typedef
SocketFd
EpollFd
;
typedef
struct
TdSocket
{
typedef
struct
TdSocket
{
#if SOCKET_WITH_LOCK
#if SOCKET_WITH_LOCK
...
@@ -128,16 +128,17 @@ typedef struct TdSocket {
...
@@ -128,16 +128,17 @@ typedef struct TdSocket {
#endif
#endif
int
refId
;
int
refId
;
SocketFd
fd
;
SocketFd
fd
;
}
*
TdSocketPtr
,
TdSocket
;
}
*
TdSocketPtr
,
TdSocket
;
typedef
struct
TdSocketServer
*
TdSocketServerPtr
;
typedef
struct
TdSocketServer
*
TdSocketServerPtr
;
typedef
struct
TdSocket
*
TdSocketPtr
;
typedef
struct
TdSocket
*
TdSocketPtr
;
typedef
struct
TdEpoll
*
TdEpollPtr
;
typedef
struct
TdEpoll
*
TdEpollPtr
;
int32_t
taosSendto
(
TdSocketPtr
pSocket
,
void
*
msg
,
int
len
,
unsigned
int
flags
,
const
struct
sockaddr
*
to
,
int
tolen
);
int32_t
taosSendto
(
TdSocketPtr
pSocket
,
void
*
msg
,
int
len
,
unsigned
int
flags
,
const
struct
sockaddr
*
to
,
int
tolen
);
int32_t
taosWriteSocket
(
TdSocketPtr
pSocket
,
void
*
msg
,
int
len
);
int32_t
taosWriteSocket
(
TdSocketPtr
pSocket
,
void
*
msg
,
int
len
);
int32_t
taosReadSocket
(
TdSocketPtr
pSocket
,
void
*
msg
,
int
len
);
int32_t
taosReadSocket
(
TdSocketPtr
pSocket
,
void
*
msg
,
int
len
);
int32_t
taosReadFromSocket
(
TdSocketPtr
pSocket
,
void
*
buf
,
int32_t
len
,
int32_t
flags
,
struct
sockaddr
*
destAddr
,
int
*
addrLen
);
int32_t
taosReadFromSocket
(
TdSocketPtr
pSocket
,
void
*
buf
,
int32_t
len
,
int32_t
flags
,
struct
sockaddr
*
destAddr
,
int
*
addrLen
);
int32_t
taosCloseSocketNoCheck1
(
SocketFd
fd
);
int32_t
taosCloseSocketNoCheck1
(
SocketFd
fd
);
int32_t
taosCloseSocket
(
TdSocketPtr
*
ppSocket
);
int32_t
taosCloseSocket
(
TdSocketPtr
*
ppSocket
);
int32_t
taosCloseSocketServer
(
TdSocketServerPtr
*
ppSocketServer
);
int32_t
taosCloseSocketServer
(
TdSocketServerPtr
*
ppSocketServer
);
...
@@ -154,30 +155,32 @@ int32_t taosWriteMsg(TdSocketPtr pSocket, void *ptr, int32_t nbytes);
...
@@ -154,30 +155,32 @@ int32_t taosWriteMsg(TdSocketPtr pSocket, void *ptr, int32_t nbytes);
int32_t
taosReadMsg
(
TdSocketPtr
pSocket
,
void
*
ptr
,
int32_t
nbytes
);
int32_t
taosReadMsg
(
TdSocketPtr
pSocket
,
void
*
ptr
,
int32_t
nbytes
);
int32_t
taosNonblockwrite
(
TdSocketPtr
pSocket
,
char
*
ptr
,
int32_t
nbytes
);
int32_t
taosNonblockwrite
(
TdSocketPtr
pSocket
,
char
*
ptr
,
int32_t
nbytes
);
int64_t
taosCopyFds
(
TdSocketPtr
pSrcSocket
,
TdSocketPtr
pDestSocket
,
int64_t
len
);
int64_t
taosCopyFds
(
TdSocketPtr
pSrcSocket
,
TdSocketPtr
pDestSocket
,
int64_t
len
);
void
taosWinSocketInit
();
void
taosWinSocketInit
();
int
taosCreateSocketWithTimeOutOpt
(
uint32_t
conn_timeout_sec
);
TdSocketPtr
taosOpenUdpSocket
(
uint32_t
localIp
,
uint16_t
localPort
);
TdSocketPtr
taosOpenUdpSocket
(
uint32_t
localIp
,
uint16_t
localPort
);
TdSocketPtr
taosOpenTcpClientSocket
(
uint32_t
ip
,
uint16_t
port
,
uint32_t
localIp
);
TdSocketPtr
taosOpenTcpClientSocket
(
uint32_t
ip
,
uint16_t
port
,
uint32_t
localIp
);
TdSocketServerPtr
taosOpenTcpServerSocket
(
uint32_t
ip
,
uint16_t
port
);
TdSocketServerPtr
taosOpenTcpServerSocket
(
uint32_t
ip
,
uint16_t
port
);
int32_t
taosKeepTcpAlive
(
TdSocketPtr
pSocket
);
int32_t
taosKeepTcpAlive
(
TdSocketPtr
pSocket
);
TdSocketPtr
taosAcceptTcpConnectSocket
(
TdSocketServerPtr
pServerSocket
,
struct
sockaddr
*
destAddr
,
int
*
addrLen
);
TdSocketPtr
taosAcceptTcpConnectSocket
(
TdSocketServerPtr
pServerSocket
,
struct
sockaddr
*
destAddr
,
int
*
addrLen
);
int32_t
taosGetSocketName
(
TdSocketPtr
pSocket
,
struct
sockaddr
*
destAddr
,
int
*
addrLen
);
int32_t
taosGetSocketName
(
TdSocketPtr
pSocket
,
struct
sockaddr
*
destAddr
,
int
*
addrLen
);
void
taosBlockSIGPIPE
();
void
taosBlockSIGPIPE
();
uint32_t
taosGetIpv4FromFqdn
(
const
char
*
);
uint32_t
taosGetIpv4FromFqdn
(
const
char
*
);
int32_t
taosGetFqdn
(
char
*
);
int32_t
taosGetFqdn
(
char
*
);
void
tinet_ntoa
(
char
*
ipstr
,
uint32_t
ip
);
void
tinet_ntoa
(
char
*
ipstr
,
uint32_t
ip
);
uint32_t
ip2uint
(
const
char
*
const
ip_addr
);
uint32_t
ip2uint
(
const
char
*
const
ip_addr
);
void
taosIgnSIGPIPE
();
void
taosIgnSIGPIPE
();
void
taosSetMaskSIGPIPE
();
void
taosSetMaskSIGPIPE
();
uint32_t
taosInetAddr
(
const
char
*
ipAddr
);
uint32_t
taosInetAddr
(
const
char
*
ipAddr
);
const
char
*
taosInetNtoa
(
struct
in_addr
ipInt
);
const
char
*
taosInetNtoa
(
struct
in_addr
ipInt
);
TdEpollPtr
taosCreateEpoll
(
int32_t
size
);
TdEpollPtr
taosCreateEpoll
(
int32_t
size
);
int32_t
taosCtlEpoll
(
TdEpollPtr
pEpoll
,
int32_t
epollOperate
,
TdSocketPtr
pSocket
,
struct
epoll_event
*
event
);
int32_t
taosCtlEpoll
(
TdEpollPtr
pEpoll
,
int32_t
epollOperate
,
TdSocketPtr
pSocket
,
struct
epoll_event
*
event
);
int32_t
taosWaitEpoll
(
TdEpollPtr
pEpoll
,
struct
epoll_event
*
event
,
int32_t
maxEvents
,
int32_t
timeout
);
int32_t
taosWaitEpoll
(
TdEpollPtr
pEpoll
,
struct
epoll_event
*
event
,
int32_t
maxEvents
,
int32_t
timeout
);
int32_t
taosCloseEpoll
(
TdEpollPtr
*
ppEpoll
);
int32_t
taosCloseEpoll
(
TdEpollPtr
*
ppEpoll
);
#ifdef __cplusplus
#ifdef __cplusplus
}
}
...
...
source/libs/transport/inc/transComm.h
浏览文件 @
9c510f33
...
@@ -21,6 +21,7 @@ extern "C" {
...
@@ -21,6 +21,7 @@ extern "C" {
#include <uv.h>
#include <uv.h>
#include "lz4.h"
#include "lz4.h"
#include "os.h"
#include "os.h"
#include "osSocket.h"
#include "rpcCache.h"
#include "rpcCache.h"
#include "rpcHead.h"
#include "rpcHead.h"
#include "rpcLog.h"
#include "rpcLog.h"
...
@@ -105,6 +106,7 @@ typedef void* queue[2];
...
@@ -105,6 +106,7 @@ typedef void* queue[2];
#define TRANS_RETRY_COUNT_LIMIT 10 // retry count limit
#define TRANS_RETRY_COUNT_LIMIT 10 // retry count limit
#define TRANS_RETRY_INTERVAL 5 // ms retry interval
#define TRANS_RETRY_INTERVAL 5 // ms retry interval
#define TRANS_CONN_TIMEOUT 3 // connect timeout
typedef
struct
{
typedef
struct
{
SRpcInfo
*
pRpc
;
// associated SRpcInfo
SRpcInfo
*
pRpc
;
// associated SRpcInfo
...
...
source/libs/transport/src/transCli.c
浏览文件 @
9c510f33
...
@@ -103,6 +103,10 @@ static void cliDestroyConn(SCliConn* pConn, bool clear /*clear tcp handle o
...
@@ -103,6 +103,10 @@ static void cliDestroyConn(SCliConn* pConn, bool clear /*clear tcp handle o
static
void
cliDestroy
(
uv_handle_t
*
handle
);
static
void
cliDestroy
(
uv_handle_t
*
handle
);
static
void
cliSend
(
SCliConn
*
pConn
);
static
void
cliSend
(
SCliConn
*
pConn
);
/*
* set TCP connection timeout per-socket level
*/
static
int
cliCreateSocket
();
// process data read from server, add decompress etc later
// process data read from server, add decompress etc later
static
void
cliHandleResp
(
SCliConn
*
conn
);
static
void
cliHandleResp
(
SCliConn
*
conn
);
// handle except about conn
// handle except about conn
...
@@ -729,9 +733,15 @@ void cliHandleReq(SCliMsg* pMsg, SCliThrdObj* pThrd) {
...
@@ -729,9 +733,15 @@ void cliHandleReq(SCliMsg* pMsg, SCliThrdObj* pThrd) {
if
(
ret
)
{
if
(
ret
)
{
tError
(
"%s cli conn %p failed to set conn option, errmsg %s"
,
pTransInst
->
label
,
conn
,
uv_err_name
(
ret
));
tError
(
"%s cli conn %p failed to set conn option, errmsg %s"
,
pTransInst
->
label
,
conn
,
uv_err_name
(
ret
));
}
}
int
fd
=
taosCreateSocketWithTimeOutOpt
(
TRANS_CONN_TIMEOUT
);
if
(
fd
==
-
1
)
{
tTrace
(
"%s cli conn %p failed to create socket"
,
pTransInst
->
label
,
conn
);
cliHandleExcept
(
conn
);
return
;
}
uv_tcp_open
((
uv_tcp_t
*
)
conn
->
stream
,
fd
);
struct
sockaddr_in
addr
;
struct
sockaddr_in
addr
;
addr
.
sin_family
=
AF_INET
;
addr
.
sin_family
=
AF_INET
;
addr
.
sin_addr
.
s_addr
=
taosGetIpv4FromFqdn
(
conn
->
ip
);
addr
.
sin_addr
.
s_addr
=
taosGetIpv4FromFqdn
(
conn
->
ip
);
addr
.
sin_port
=
(
uint16_t
)
htons
((
uint16_t
)
conn
->
port
);
addr
.
sin_port
=
(
uint16_t
)
htons
((
uint16_t
)
conn
->
port
);
...
...
source/os/src/osSocket.c
浏览文件 @
9c510f33
...
@@ -37,31 +37,35 @@
...
@@ -37,31 +37,35 @@
#include <unistd.h>
#include <unistd.h>
#if defined(DARWIN)
#if defined(DARWIN)
#include <dispatch/dispatch.h>
#include <dispatch/dispatch.h>
#include "osEok.h"
#include "osEok.h"
#else
#else
#include <sys/epoll.h>
#include <sys/epoll.h>
#endif
#endif
#endif
#endif
#ifndef INVALID_SOCKET
#define INVALID_SOCKET -1
#endif
typedef
struct
TdSocketServer
{
typedef
struct
TdSocketServer
{
#if SOCKET_WITH_LOCK
#if SOCKET_WITH_LOCK
TdThreadRwlock
rwlock
;
TdThreadRwlock
rwlock
;
#endif
#endif
int
refId
;
int
refId
;
SocketFd
fd
;
SocketFd
fd
;
}
*
TdSocketServerPtr
,
TdSocketServer
;
}
*
TdSocketServerPtr
,
TdSocketServer
;
typedef
struct
TdEpoll
{
typedef
struct
TdEpoll
{
#if SOCKET_WITH_LOCK
#if SOCKET_WITH_LOCK
TdThreadRwlock
rwlock
;
TdThreadRwlock
rwlock
;
#endif
#endif
int
refId
;
int
refId
;
EpollFd
fd
;
EpollFd
fd
;
}
*
TdEpollPtr
,
TdEpoll
;
}
*
TdEpollPtr
,
TdEpoll
;
int32_t
taosSendto
(
TdSocketPtr
pSocket
,
void
*
buf
,
int
len
,
unsigned
int
flags
,
const
struct
sockaddr
*
dest_addr
,
int32_t
taosSendto
(
TdSocketPtr
pSocket
,
void
*
buf
,
int
len
,
unsigned
int
flags
,
const
struct
sockaddr
*
dest_addr
,
int
addrlen
)
{
int
addrlen
)
{
if
(
pSocket
==
NULL
||
pSocket
->
fd
<
0
)
{
if
(
pSocket
==
NULL
||
pSocket
->
fd
<
0
)
{
return
-
1
;
return
-
1
;
}
}
...
@@ -94,7 +98,8 @@ int32_t taosReadSocket(TdSocketPtr pSocket, void *buf, int len) {
...
@@ -94,7 +98,8 @@ int32_t taosReadSocket(TdSocketPtr pSocket, void *buf, int len) {
#endif
#endif
}
}
int32_t
taosReadFromSocket
(
TdSocketPtr
pSocket
,
void
*
buf
,
int32_t
len
,
int32_t
flags
,
struct
sockaddr
*
destAddr
,
int
*
addrLen
)
{
int32_t
taosReadFromSocket
(
TdSocketPtr
pSocket
,
void
*
buf
,
int32_t
len
,
int32_t
flags
,
struct
sockaddr
*
destAddr
,
int
*
addrLen
)
{
if
(
pSocket
==
NULL
||
pSocket
->
fd
<
0
)
{
if
(
pSocket
==
NULL
||
pSocket
->
fd
<
0
)
{
return
-
1
;
return
-
1
;
}
}
...
@@ -318,7 +323,7 @@ int32_t taosWriteMsg(TdSocketPtr pSocket, void *buf, int32_t nbytes) {
...
@@ -318,7 +323,7 @@ int32_t taosWriteMsg(TdSocketPtr pSocket, void *buf, int32_t nbytes) {
return
-
1
;
return
-
1
;
}
}
int32_t
nleft
,
nwritten
;
int32_t
nleft
,
nwritten
;
char
*
ptr
=
(
char
*
)
buf
;
char
*
ptr
=
(
char
*
)
buf
;
nleft
=
nbytes
;
nleft
=
nbytes
;
...
@@ -347,7 +352,7 @@ int32_t taosReadMsg(TdSocketPtr pSocket, void *buf, int32_t nbytes) {
...
@@ -347,7 +352,7 @@ int32_t taosReadMsg(TdSocketPtr pSocket, void *buf, int32_t nbytes) {
return
-
1
;
return
-
1
;
}
}
int32_t
nleft
,
nread
;
int32_t
nleft
,
nread
;
char
*
ptr
=
(
char
*
)
buf
;
char
*
ptr
=
(
char
*
)
buf
;
nleft
=
nbytes
;
nleft
=
nbytes
;
...
@@ -689,8 +694,7 @@ TdSocketServerPtr taosOpenTcpServerSocket(uint32_t ip, uint16_t port) {
...
@@ -689,8 +694,7 @@ TdSocketServerPtr taosOpenTcpServerSocket(uint32_t ip, uint16_t port) {
return
(
TdSocketServerPtr
)
pSocket
;
return
(
TdSocketServerPtr
)
pSocket
;
}
}
TdSocketPtr
taosAcceptTcpConnectSocket
(
TdSocketServerPtr
pServerSocket
,
struct
sockaddr
*
destAddr
,
TdSocketPtr
taosAcceptTcpConnectSocket
(
TdSocketServerPtr
pServerSocket
,
struct
sockaddr
*
destAddr
,
int
*
addrLen
)
{
int
*
addrLen
)
{
if
(
pServerSocket
==
NULL
||
pServerSocket
->
fd
<
0
)
{
if
(
pServerSocket
==
NULL
||
pServerSocket
->
fd
<
0
)
{
return
NULL
;
return
NULL
;
}
}
...
@@ -771,7 +775,7 @@ uint32_t taosGetIpv4FromFqdn(const char *fqdn) {
...
@@ -771,7 +775,7 @@ uint32_t taosGetIpv4FromFqdn(const char *fqdn) {
int32_t
ret
=
getaddrinfo
(
fqdn
,
NULL
,
&
hints
,
&
result
);
int32_t
ret
=
getaddrinfo
(
fqdn
,
NULL
,
&
hints
,
&
result
);
if
(
result
)
{
if
(
result
)
{
struct
sockaddr
*
sa
=
result
->
ai_addr
;
struct
sockaddr
*
sa
=
result
->
ai_addr
;
struct
sockaddr_in
*
si
=
(
struct
sockaddr_in
*
)
sa
;
struct
sockaddr_in
*
si
=
(
struct
sockaddr_in
*
)
sa
;
struct
in_addr
ia
=
si
->
sin_addr
;
struct
in_addr
ia
=
si
->
sin_addr
;
uint32_t
ip
=
ia
.
s_addr
;
uint32_t
ip
=
ia
.
s_addr
;
...
@@ -887,7 +891,6 @@ int32_t taosGetSocketName(TdSocketPtr pSocket, struct sockaddr *destAddr, int *a
...
@@ -887,7 +891,6 @@ int32_t taosGetSocketName(TdSocketPtr pSocket, struct sockaddr *destAddr, int *a
return
getsockname
(
pSocket
->
fd
,
destAddr
,
addrLen
);
return
getsockname
(
pSocket
->
fd
,
destAddr
,
addrLen
);
}
}
TdEpollPtr
taosCreateEpoll
(
int32_t
size
)
{
TdEpollPtr
taosCreateEpoll
(
int32_t
size
)
{
EpollFd
fd
=
-
1
;
EpollFd
fd
=
-
1
;
#ifdef WINDOWS
#ifdef WINDOWS
...
@@ -939,3 +942,28 @@ int32_t taosCloseEpoll(TdEpollPtr *ppEpoll) {
...
@@ -939,3 +942,28 @@ int32_t taosCloseEpoll(TdEpollPtr *ppEpoll) {
taosMemoryFree
(
*
ppEpoll
);
taosMemoryFree
(
*
ppEpoll
);
return
code
;
return
code
;
}
}
/*
* Set TCP connection timeout per-socket level.
* ref [https://github.com/libuv/help/issues/54]
*/
int
taosCreateSocketWithTimeOutOpt
(
uint32_t
conn_timeout_sec
)
{
#if defined(WINDOWS)
SOCKET
fd
;
#else
int
fd
;
#endif
if
((
fd
=
socket
(
PF_INET
,
SOCK_STREAM
,
IPPROTO_TCP
))
==
INVALID_SOCKET
)
{
return
-
1
;
}
#if defined(WINDOWS)
if
(
0
!=
setsockopt
(
fd
,
IPPROTO_TCP
,
TCP_MAXRT
,
(
char
*
)
&
conn_timeout_sec
,
sizeof
(
conn_timeout_sec
)))
{
return
-
1
;
}
#else // Linux like systems
uint32_t
conn_timeout_ms
=
conn_timeout_sec
*
1000
;
if
(
0
!=
setsockopt
(
fd
,
IPPROTO_TCP
,
TCP_USER_TIMEOUT
,
(
char
*
)
&
conn_timeout_ms
,
sizeof
(
conn_timeout_ms
)))
{
return
-
1
;
}
#endif
return
(
int
)
fd
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录