refactor: node mgmt

This commit is contained in:
Shengliang Guan 2022-05-13 10:30:36 +08:00
parent 65da2ea014
commit 095f6938b7
1 changed files with 21 additions and 18 deletions

View File

@ -119,7 +119,7 @@ int32_t dmOpenNode(SMgmtWrapper *pWrapper) {
pInput->name = pWrapper->name; pInput->name = pWrapper->name;
pInput->path = pWrapper->path; pInput->path = pWrapper->path;
pInput->msgCb = dmGetMsgcb(pWrapper); pInput->msgCb = dmGetMsgcb(pWrapper);
if (pWrapper->nodeType == DNODE) { if (pWrapper->nodeType == DNODE || pWrapper->procType == DND_PROC_CHILD) {
tmsgSetDefaultMsgCb(&pInput->msgCb); tmsgSetDefaultMsgCb(&pInput->msgCb);
} }
@ -222,7 +222,12 @@ static int32_t dmOpenNodes(SDnode *pDnode) {
for (EDndNodeType ntype = DNODE; ntype < NODE_END; ++ntype) { for (EDndNodeType ntype = DNODE; ntype < NODE_END; ++ntype) {
SMgmtWrapper *pWrapper = &pDnode->wrappers[ntype]; SMgmtWrapper *pWrapper = &pDnode->wrappers[ntype];
if (!pWrapper->required) continue; if (!pWrapper->required) continue;
if (ntype == DNODE) {
pWrapper->procType = DND_PROC_SINGLE;
if (dmOpenNode(pWrapper) != 0) {
return -1;
}
} else {
if (pDnode->ptype == DND_PROC_CHILD) { if (pDnode->ptype == DND_PROC_CHILD) {
if (pDnode->ntype == ntype) { if (pDnode->ntype == ntype) {
pWrapper->procType = DND_PROC_CHILD; pWrapper->procType = DND_PROC_CHILD;
@ -232,25 +237,23 @@ static int32_t dmOpenNodes(SDnode *pDnode) {
} else { } else {
pWrapper->required = false; pWrapper->required = false;
} }
} else {
if (ntype == DNODE) {
pWrapper->procType = DND_PROC_SINGLE;
} else { } else {
pWrapper->procType = pDnode->ptype; pWrapper->procType = pDnode->ptype;
}
if (dmOpenNode(pWrapper) != 0) { if (dmOpenNode(pWrapper) != 0) {
return -1; return -1;
} }
} }
} }
}
dmSetStatus(pDnode, DND_STAT_RUNNING); dmSetStatus(pDnode, DND_STAT_RUNNING);
return 0; return 0;
} }
static int32_t dmStartNodes(SDnode *pDnode) { static int32_t dmStartNodes(SDnode *pDnode) {
for (EDndNodeType n = DNODE; n < NODE_END; ++n) { for (EDndNodeType ntype = DNODE; ntype < NODE_END; ++ntype) {
SMgmtWrapper *pWrapper = &pDnode->wrappers[n]; SMgmtWrapper *pWrapper = &pDnode->wrappers[ntype];
if (ntype == DNODE && (pDnode->ptype == DND_PROC_CHILD || pDnode->ptype == DND_PROC_TEST)) continue;
if (dmStartNode(pWrapper) != 0) { if (dmStartNode(pWrapper) != 0) {
dError("node:%s, failed to start since %s", pWrapper->name, terrstr()); dError("node:%s, failed to start since %s", pWrapper->name, terrstr());
return -1; return -1;