- jsontxt = NSA_CMD
pjs->jsoninput = jsontxt;
pjs->pjson = json_token_parse(pjs->jsoninput);
ns_json_in_cmd(pjs, pjs->pjson, &pjcmdroot);
- ns_jsonstate_t
- ns_jsoncmd_t
- pjsreq = new (ns_jsonrequest_t);
pjsreq->pjroot_cmd = pjroot_cmd;
ns_json_out_cmd(pjs, pjsreq);
- ns_generateresponse(pjsreq, pjsreq->pjerr);
- ns_jsonrequest_t
- ns_json_out_response(pjreq, pjerr, pjson_resp);
- foreach ($pjname,$pjvalue) (pjson) {
pjsoncmd = ns_jsonobj2jsoncmd($pjvalue, NULL);
Append to (pjroot_cmd);
}
*ppjcmd = pjroot_cmd;
-
1. foreach pjsoncmd (pjroot_cmd) {
pjreq->pjcur_cmd = pjsoncmd;
2. dispatch(pjsoncmd->pcmd);
a) if (pjreq->pjerr) {
pjreq->cmdstate = CMDSTATE_ERROR;
NSTHROW(e, rc, msg, backtrace, object, objtype);
}
3. pjsoncmd->revert_cmd = revertcmd(pjsoncmd->pcmd);
4. foreach pjchild (pjsoncmd) {
e = ns_json_out_cmd(pjs, pjreq->pjchild, pjreq);
if (pjreq->cmdstate == CMDSTATE_ERROR)
break;
}
if (pjreq->cmdstate == CMDSTATE_ERROR)
break;
}
return (e);
- ns_jsonobj2jsoncmd
pjsoncmd = [];
pjarray = json_oject_array($pjvalue);
foreach pjobj (pjarray) {
1. parguids = Parse arguids;
2. pgetcmd = ($name, parguids);
3. Execute pgetcmd and check if exists.
4. pcmd = (exists)?psetcmd:paddcmd;
5. Parse rest arguments and fill into pcmd;
6. pjcurr_cmd->pcmd = pcmd; pjcurr_cmd->parent_cmd = parent_cmd;
7. Append(pjsoncmd, pjcurr_cmd);
8. foreach (pjobj has "obj" as $pjname) {
a) Append(pjcurr_cmd->pjchild, ns_jsonobj2jsoncmd($pjvalue(pjobj), pjcurr_cmd);
}
9. If (parent_pcmd) {
1. Generate pbindcmd using (pjcurr_pcmd, parent_pcmd, bind_properties);
2. Append(pjsoncmd, pbindcmd);
}
}
return (pjsoncmd);
- ns_json_out_cmd(ns_jsonstate_t pjs, ns_jsonrequest_t *pjreq, ns_jsoncmd_t *pjroot_cmd);
- ns_json_in_cmd(ns_jsonstate_t *pjs, ns_json_t *pjson, ns_jsoncmd_t **ppjcmd)
- Outpupt
- Error codes
-
global context
- error message
- jsontxt
- json_object
- json_mode
- root_pcmds
- cur_ctx
-
local context
- pcmd
- pcmdresp_list
- revert_cmd
- error message
- list_pcmds