Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
cca2bcdb
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
cca2bcdb
编写于
5月 25, 2022
作者:
dengyihao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
enh: rpc set default epset
上级
e2d7df7a
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
54 addition
and
5 deletion
+54
-5
include/libs/transport/trpc.h
include/libs/transport/trpc.h
+1
-0
source/libs/transport/inc/transComm.h
source/libs/transport/inc/transComm.h
+4
-3
source/libs/transport/src/trans.c
source/libs/transport/src/trans.c
+4
-0
source/libs/transport/src/transCli.c
source/libs/transport/src/transCli.c
+45
-2
未找到文件。
include/libs/transport/trpc.h
浏览文件 @
cca2bcdb
...
...
@@ -125,6 +125,7 @@ void rpcSendRedirectRsp(void *pConn, const SEpSet *pEpSet);
void
rpcSendRequestWithCtx
(
void
*
thandle
,
const
SEpSet
*
pEpSet
,
SRpcMsg
*
pMsg
,
int64_t
*
rid
,
SRpcCtx
*
ctx
);
int32_t
rpcGetConnInfo
(
void
*
thandle
,
SRpcConnInfo
*
pInfo
);
void
rpcSendRecv
(
void
*
shandle
,
SEpSet
*
pEpSet
,
SRpcMsg
*
pReq
,
SRpcMsg
*
pRsp
);
void
rpcSetDefaultEpSet
(
void
*
thandle
,
const
SEpSet
*
dst
);
#ifdef __cplusplus
}
...
...
source/libs/transport/inc/transComm.h
浏览文件 @
cca2bcdb
...
...
@@ -95,8 +95,8 @@ typedef void* queue[2];
#define QUEUE_DATA(e, type, field) ((type*)((void*)((char*)(e)-offsetof(type, field))))
#define TRANS_RETRY_COUNT_LIMIT 100 // retry count limit
#define TRANS_RETRY_INTERVAL 15 // ms retry interval
#define TRANS_CONN_TIMEOUT 3 // connect timeout
#define TRANS_RETRY_INTERVAL 15
// ms retry interval
#define TRANS_CONN_TIMEOUT 3
// connect timeout
typedef
SRpcMsg
STransMsg
;
typedef
SRpcCtx
STransCtx
;
...
...
@@ -155,7 +155,7 @@ typedef struct {
#pragma pack(pop)
typedef
enum
{
Normal
,
Quit
,
Release
,
Register
}
STransMsgType
;
typedef
enum
{
Normal
,
Quit
,
Release
,
Register
,
Update
}
STransMsgType
;
typedef
enum
{
ConnNormal
,
ConnAcquire
,
ConnRelease
,
ConnBroken
,
ConnInPool
}
ConnStatus
;
#define container_of(ptr, type, member) ((type*)((char*)(ptr)-offsetof(type, member)))
...
...
@@ -231,6 +231,7 @@ void transSendRecv(void* shandle, const SEpSet* pEpSet, STransMsg* pMsg, STransM
void
transSendResponse
(
const
STransMsg
*
msg
);
void
transRegisterMsg
(
const
STransMsg
*
msg
);
int
transGetConnInfo
(
void
*
thandle
,
STransHandleInfo
*
pInfo
);
void
transSetDefaultEpSet
(
void
*
shandle
,
const
SEpSet
*
dst
);
void
*
transInitServer
(
uint32_t
ip
,
uint32_t
port
,
char
*
label
,
int
numOfThreads
,
void
*
fp
,
void
*
shandle
);
void
*
transInitClient
(
uint32_t
ip
,
uint32_t
port
,
char
*
label
,
int
numOfThreads
,
void
*
fp
,
void
*
shandle
);
...
...
source/libs/transport/src/trans.c
浏览文件 @
cca2bcdb
...
...
@@ -148,6 +148,10 @@ void rpcReleaseHandle(void* handle, int8_t type) {
assert
(
type
==
TAOS_CONN_SERVER
||
type
==
TAOS_CONN_CLIENT
);
(
*
transReleaseHandle
[
type
])(
handle
);
}
void
rpcSetDefaultEpSet
(
void
*
thandle
,
const
SEpSet
*
dst
)
{
// later
transSetDefaultEpSet
(
thandle
,
dst
);
}
int32_t
rpcInit
()
{
// impl later
...
...
source/libs/transport/src/transCli.c
浏览文件 @
cca2bcdb
...
...
@@ -63,7 +63,11 @@ typedef struct SCliThrdObj {
SDelayQueue
*
delayQueue
;
uint64_t
nextTimeout
;
// next timeout
void
*
pTransInst
;
//
bool
quit
;
bool
useDefaultEpSet
;
SEpSet
defaultEpSet
;
bool
quit
;
}
SCliThrdObj
;
typedef
struct
SCliObj
{
...
...
@@ -116,7 +120,9 @@ static void cliHandleExcept(SCliConn* conn);
static
void
cliHandleReq
(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
);
static
void
cliHandleQuit
(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
);
static
void
cliHandleRelease
(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
);
static
void
(
*
cliAsyncHandle
[])(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
)
=
{
cliHandleReq
,
cliHandleQuit
,
cliHandleRelease
};
static
void
cliHandleUpdate
(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
);
static
void
(
*
cliAsyncHandle
[])(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
)
=
{
cliHandleReq
,
cliHandleQuit
,
cliHandleRelease
,
cliHandleUpdate
};
static
void
cliSendQuit
(
SCliThrdObj
*
thrd
);
static
void
destroyUserdata
(
STransMsg
*
userdata
);
...
...
@@ -683,6 +689,15 @@ static void cliHandleRelease(SCliMsg* pMsg, SCliThrdObj* pThrd) {
transUnrefCliHandle
(
conn
);
}
}
static
void
cliHandleUpdate
(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
)
{
STransConnCtx
*
pCtx
=
pMsg
->
ctx
;
pThrd
->
useDefaultEpSet
=
true
;
pThrd
->
defaultEpSet
=
pCtx
->
epSet
;
tsem_post
(
pCtx
->
pSem
);
destroyCmsg
(
pMsg
);
}
SCliConn
*
cliGetConn
(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
)
{
SCliConn
*
conn
=
NULL
;
...
...
@@ -712,6 +727,10 @@ void cliHandleReq(SCliMsg* pMsg, SCliThrdObj* pThrd) {
STransConnCtx
*
pCtx
=
pMsg
->
ctx
;
STrans
*
pTransInst
=
pThrd
->
pTransInst
;
if
(
pThrd
->
useDefaultEpSet
)
{
pCtx
->
epSet
=
pThrd
->
defaultEpSet
;
}
SCliConn
*
conn
=
cliGetConn
(
pMsg
,
pThrd
);
if
(
conn
!=
NULL
)
{
conn
->
hThrdIdx
=
pCtx
->
hThrdIdx
;
...
...
@@ -1067,4 +1086,28 @@ void transSendRecv(void* shandle, const SEpSet* pEpSet, STransMsg* pReq, STransM
taosMemoryFree
(
pSem
);
}
void
transSetDefaultEpSet
(
void
*
ahandle
,
const
SEpSet
*
dst
)
{
STrans
*
pTransInst
=
ahandle
;
for
(
int
i
=
0
;
i
<
pTransInst
->
numOfThreads
;
i
++
)
{
STransConnCtx
*
pCtx
=
taosMemoryCalloc
(
1
,
sizeof
(
STransConnCtx
));
pCtx
->
hThrdIdx
=
i
;
pCtx
->
epSet
=
*
dst
;
pCtx
->
pSem
=
taosMemoryCalloc
(
1
,
sizeof
(
tsem_t
));
tsem_init
(
pCtx
->
pSem
,
0
,
0
);
SCliMsg
*
cliMsg
=
taosMemoryCalloc
(
1
,
sizeof
(
SCliMsg
));
cliMsg
->
ctx
=
pCtx
;
cliMsg
->
type
=
Update
;
SCliThrdObj
*
thrd
=
((
SCliObj
*
)
pTransInst
->
tcphandle
)
->
pThreadObj
[
i
];
tDebug
(
"send update epset at thread:%d, threadID:%"
PRId64
""
,
i
,
thrd
->
thread
);
tsem_t
*
pSem
=
pCtx
->
pSem
;
transSendAsync
(
thrd
->
asyncPool
,
&
(
cliMsg
->
q
));
tsem_wait
(
pSem
);
tsem_destroy
(
pSem
);
taosMemoryFree
(
pSem
);
}
}
#endif
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录