Skip to content

Commit

Permalink
json-rpc: Rename getroutestats and move stats to getinfo
Browse files Browse the repository at this point in the history
Signed-off-by: Christian Decker <@cdecker>
  • Loading branch information
cdecker authored and rustyrussell committed Oct 19, 2018
1 parent 6d333f1 commit 6b7546b
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 51 deletions.
10 changes: 3 additions & 7 deletions contrib/pylightning/lightning/lightning.py
Original file line number Diff line number Diff line change
Expand Up @@ -428,14 +428,10 @@ def listfunds(self):
"""
return self.call("listfunds")

def getroutestats(self, details=True):
"""Get statistics about routed payments.
If @details is True, this'll include the individual forwarded
payments.
def listforwards(self):
"""List all forwarded payments and their information
"""
return self.call("getroutestats", payload={'details': details})
return self.call("listforwards")

def dev_rescan_outputs(self):
"""
Expand Down
30 changes: 30 additions & 0 deletions lightningd/jsonrpc.c
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,35 @@ static const struct json_command dev_crash_command = {
AUTODATA(json_command, &dev_crash_command);
#endif /* DEVELOPER */

static void getinfo_add_routestats(struct json_result *response,
struct wallet *wallet)
{
const struct forwarding_stats *stats;
stats = wallet_forwarded_payments_stats(wallet, tmpctx);

json_object_start(response, "routestats");
json_object_start(response, "settled");
json_add_num(response, "fee_msatoshis", stats->fee[FORWARD_SETTLED]);
json_add_num(response, "count", stats->count[FORWARD_SETTLED]);
json_add_num(response, "msatoshi", stats->msatoshi[FORWARD_SETTLED]);
json_object_end(response);

json_object_start(response, "failed");
json_add_num(response, "fee_msatoshis", stats->fee[FORWARD_FAILED]);
json_add_num(response, "count", stats->count[FORWARD_FAILED]);
json_add_num(response, "msatoshi", stats->msatoshi[FORWARD_FAILED]);
json_object_end(response);

json_object_start(response, "pending");
json_add_num(response, "fee_msatoshis", stats->fee[FORWARD_OFFERED]);
json_add_num(response, "count", stats->count[FORWARD_FAILED]);
json_add_num(response, "msatoshi", stats->msatoshi[FORWARD_FAILED]);
json_object_end(response);
json_object_end(response);

tal_free(stats);
}

static void json_getinfo(struct command *cmd,
const char *buffer UNUSED, const jsmntok_t *params UNUSED)
{
Expand Down Expand Up @@ -167,6 +196,7 @@ static void json_getinfo(struct command *cmd,
json_add_string(response, "version", version());
json_add_num(response, "blockheight", get_block_height(cmd->ld->topology));
json_add_string(response, "network", get_chainparams(cmd->ld)->network_name);
getinfo_add_routestats(response, cmd->ld->wallet);
json_object_end(response);
command_success(cmd, response);
}
Expand Down
51 changes: 8 additions & 43 deletions lightningd/peer_htlcs.c
Original file line number Diff line number Diff line change
Expand Up @@ -1843,34 +1843,6 @@ static const struct json_command dev_ignore_htlcs = {
AUTODATA(json_command, &dev_ignore_htlcs);
#endif /* DEVELOPER */

static void listforwardings_add_stats(struct json_result *response, struct wallet *wallet)
{
const struct forwarding_stats *stats;
stats = wallet_forwarded_payments_stats(wallet, tmpctx);

json_object_start(response, "stats");
json_object_start(response, "settled");
json_add_num(response, "fee_msatoshis", stats->fee[FORWARD_SETTLED]);
json_add_num(response, "count", stats->count[FORWARD_SETTLED]);
json_add_num(response, "msatoshi", stats->msatoshi[FORWARD_SETTLED]);
json_object_end(response);

json_object_start(response, "failed");
json_add_num(response, "fee_msatoshis", stats->fee[FORWARD_FAILED]);
json_add_num(response, "count", stats->count[FORWARD_FAILED]);
json_add_num(response, "msatoshi", stats->msatoshi[FORWARD_FAILED]);
json_object_end(response);

json_object_start(response, "pending");
json_add_num(response, "fee_msatoshis", stats->fee[FORWARD_OFFERED]);
json_add_num(response, "count", stats->count[FORWARD_FAILED]);
json_add_num(response, "msatoshi", stats->msatoshi[FORWARD_FAILED]);
json_object_end(response);
json_object_end(response);

tal_free(stats);
}

static void listforwardings_add_forwardings(struct json_result *response, struct wallet *wallet)
{
const struct forwarding *forwardings;
Expand All @@ -1894,31 +1866,24 @@ static void listforwardings_add_forwardings(struct json_result *response, struct
tal_free(forwardings);
}

static void json_getroutestats(struct command *cmd, const char *buffer,
static void json_listforwards(struct command *cmd, const char *buffer,
const jsmntok_t *params)
{
struct json_result *response = new_json_result(cmd);
bool *details;

if (!param(cmd, buffer, params,
p_opt_def("details", json_tok_bool, &details, true),
NULL))
if (!param(cmd, buffer, params, NULL))
return;

json_object_start(response, NULL);
listforwardings_add_stats(response, cmd->ld->wallet);

if (*details)
listforwardings_add_forwardings(response, cmd->ld->wallet);

listforwardings_add_forwardings(response, cmd->ld->wallet);
json_object_end(response);

command_success(cmd, response);
}

static const struct json_command getroutestats_command = {
"getroutestats", json_getroutestats,
"Get statistics about routed / forwarded payments", false,
"Get statistics about routed payments, i.e., the ones we aren't the initiator or recipient, including a detailed list if {details} is true."
static const struct json_command listforwards_command = {
"listforwards", json_listforwards,
"List all forwarded payments and their information", false,
"List all forwarded payments and their information"
};
AUTODATA(json_command, &getroutestats_command);
AUTODATA(json_command, &listforwards_command);
2 changes: 1 addition & 1 deletion tests/test_pay.py
Original file line number Diff line number Diff line change
Expand Up @@ -1047,6 +1047,6 @@ def test_forward_stats(node_factory, bitcoind):

assert outchan['out_msatoshi_fulfilled'] < inchan['in_msatoshi_fulfilled']

stats = l2.rpc.getroutestats()
stats = l2.rpc.listforwards()

assert [f['status'] for f in stats['forwards']] == ['settled', 'failed', 'offered']

0 comments on commit 6b7546b

Please sign in to comment.