MCPcopy Create free account
hub / github.com/ElementsProject/lightning / reckless_result

Function reckless_result

plugins/recklessrpc.c:61–120  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

59}
60
61static struct command_result *reckless_result(struct io_conn *conn,
62 struct reckless *reckless)
63{
64 struct json_stream *response;
65 if (reckless->process_failed) {
66 response = jsonrpc_stream_fail(reckless->cmd,
67 PLUGIN_ERROR,
68 reckless->process_failed);
69 return command_finished(reckless->cmd, response);
70 }
71 const jsmntok_t *results, *result, *logs, *log;
72 size_t i;
73 jsmn_parser parser;
74 jsmntok_t *toks;
75 toks = tal_arr(reckless, jsmntok_t, 5000);
76 jsmn_init(&parser);
77 int res;
78 res = jsmn_parse(&parser, reckless->stdoutbuf,
79 strlen(reckless->stdoutbuf), toks, tal_count(toks));
80 const char *err;
81 if (res == JSMN_ERROR_INVAL)
82 err = tal_fmt(tmpctx, "reckless returned invalid character in json "
83 "output");
84 else if (res == JSMN_ERROR_PART)
85 err = tal_fmt(tmpctx, "reckless returned partial output");
86 else if (res == JSMN_ERROR_NOMEM )
87 err = tal_fmt(tmpctx, "insufficient tokens to parse "
88 "reckless output.");
89 else
90 err = NULL;
91
92 if (err) {
93 plugin_log(plugin, LOG_UNUSUAL, "failed to parse json: %s", err);
94 response = jsonrpc_stream_fail(reckless->cmd, PLUGIN_ERROR,
95 err);
96 return command_finished(reckless->cmd, response);
97 }
98
99 response = jsonrpc_stream_success(reckless->cmd);
100 json_array_start(response, "result");
101 results = json_get_member(reckless->stdoutbuf, toks, "result");
102 json_for_each_arr(i, result, results) {
103 json_add_string(response,
104 NULL,
105 json_strdup(reckless, reckless->stdoutbuf,
106 result));
107 }
108 json_array_end(response);
109 json_array_start(response, "log");
110 logs = json_get_member(reckless->stdoutbuf, toks, "log");
111 json_for_each_arr(i, log, logs) {
112 json_add_string(response,
113 NULL,
114 json_strdup(reckless, reckless->stdoutbuf,
115 log));
116 }
117 json_array_end(response);
118

Callers 1

reckless_conn_finishFunction · 0.85

Calls 9

json_array_startFunction · 0.85
json_get_memberFunction · 0.85
json_array_endFunction · 0.85
jsonrpc_stream_failFunction · 0.70
command_finishedFunction · 0.70
plugin_logFunction · 0.70
jsonrpc_stream_successFunction · 0.70
json_add_stringFunction · 0.50
json_strdupFunction · 0.50

Tested by

no test coverage detected