mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-19 15:14:23 +01:00
plugin: Add the plugin we're serializing for in the serializer
We will start annotating some of the in-memory objects with a message indicating which plugin currently is processing the hook.
This commit is contained in:
committed by
Rusty Russell
parent
eeba75ca7c
commit
6062b40a5d
@@ -188,9 +188,9 @@ struct rbf_channel_payload {
|
|||||||
char *err_msg;
|
char *err_msg;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void rbf_channel_hook_serialize(struct rbf_channel_payload *payload,
|
||||||
rbf_channel_hook_serialize(struct rbf_channel_payload *payload,
|
struct json_stream *stream,
|
||||||
struct json_stream *stream)
|
struct plugin *plugin)
|
||||||
{
|
{
|
||||||
json_object_start(stream, "rbf_channel");
|
json_object_start(stream, "rbf_channel");
|
||||||
json_add_node_id(stream, "id", &payload->peer_id);
|
json_add_node_id(stream, "id", &payload->peer_id);
|
||||||
@@ -251,9 +251,9 @@ struct openchannel2_payload {
|
|||||||
char *err_msg;
|
char *err_msg;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void openchannel2_hook_serialize(struct openchannel2_payload *payload,
|
||||||
openchannel2_hook_serialize(struct openchannel2_payload *payload,
|
struct json_stream *stream,
|
||||||
struct json_stream *stream)
|
struct plugin *plugin)
|
||||||
{
|
{
|
||||||
json_object_start(stream, "openchannel2");
|
json_object_start(stream, "openchannel2");
|
||||||
json_add_node_id(stream, "id", &payload->peer_id);
|
json_add_node_id(stream, "id", &payload->peer_id);
|
||||||
@@ -295,7 +295,8 @@ struct openchannel2_psbt_payload {
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
openchannel2_changed_hook_serialize(struct openchannel2_psbt_payload *payload,
|
openchannel2_changed_hook_serialize(struct openchannel2_psbt_payload *payload,
|
||||||
struct json_stream *stream)
|
struct json_stream *stream,
|
||||||
|
struct plugin *plugin)
|
||||||
{
|
{
|
||||||
json_object_start(stream, "openchannel2_changed");
|
json_object_start(stream, "openchannel2_changed");
|
||||||
json_add_psbt(stream, "psbt", payload->psbt);
|
json_add_psbt(stream, "psbt", payload->psbt);
|
||||||
@@ -307,7 +308,8 @@ openchannel2_changed_hook_serialize(struct openchannel2_psbt_payload *payload,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
openchannel2_sign_hook_serialize(struct openchannel2_psbt_payload *payload,
|
openchannel2_sign_hook_serialize(struct openchannel2_psbt_payload *payload,
|
||||||
struct json_stream *stream)
|
struct json_stream *stream,
|
||||||
|
struct plugin *plugin)
|
||||||
{
|
{
|
||||||
json_object_start(stream, "openchannel2_sign");
|
json_object_start(stream, "openchannel2_sign");
|
||||||
json_add_psbt(stream, "psbt", payload->psbt);
|
json_add_psbt(stream, "psbt", payload->psbt);
|
||||||
|
|||||||
@@ -169,7 +169,8 @@ struct invoice_payment_hook_payload {
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
invoice_payment_serialize(struct invoice_payment_hook_payload *payload,
|
invoice_payment_serialize(struct invoice_payment_hook_payload *payload,
|
||||||
struct json_stream *stream)
|
struct json_stream *stream,
|
||||||
|
struct plugin *plugin)
|
||||||
{
|
{
|
||||||
json_object_start(stream, "payment");
|
json_object_start(stream, "payment");
|
||||||
json_add_escaped_string(stream, "label", payload->label);
|
json_add_escaped_string(stream, "label", payload->label);
|
||||||
|
|||||||
@@ -674,7 +674,8 @@ struct rpc_command_hook_payload {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static void rpc_command_hook_serialize(struct rpc_command_hook_payload *p,
|
static void rpc_command_hook_serialize(struct rpc_command_hook_payload *p,
|
||||||
struct json_stream *s)
|
struct json_stream *s,
|
||||||
|
struct plugin *plugin)
|
||||||
{
|
{
|
||||||
const jsmntok_t *tok;
|
const jsmntok_t *tok;
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ struct onion_message_hook_payload {
|
|||||||
struct tlv_onionmsg_payload *om;
|
struct tlv_onionmsg_payload *om;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void onion_message_serialize(struct onion_message_hook_payload *payload,
|
||||||
onion_message_serialize(struct onion_message_hook_payload *payload,
|
struct json_stream *stream,
|
||||||
struct json_stream *stream)
|
struct plugin *plugin)
|
||||||
{
|
{
|
||||||
json_object_start(stream, "onion_message");
|
json_object_start(stream, "onion_message");
|
||||||
if (payload->blinding_in)
|
if (payload->blinding_in)
|
||||||
|
|||||||
@@ -615,9 +615,9 @@ struct openchannel_hook_payload {
|
|||||||
char *errmsg;
|
char *errmsg;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void openchannel_hook_serialize(struct openchannel_hook_payload *payload,
|
||||||
openchannel_hook_serialize(struct openchannel_hook_payload *payload,
|
struct json_stream *stream,
|
||||||
struct json_stream *stream)
|
struct plugin *plugin)
|
||||||
{
|
{
|
||||||
struct uncommitted_channel *uc = payload->openingd->channel;
|
struct uncommitted_channel *uc = payload->openingd->channel;
|
||||||
json_object_start(stream, "openchannel");
|
json_object_start(stream, "openchannel");
|
||||||
|
|||||||
@@ -1039,7 +1039,7 @@ struct peer_connected_hook_payload {
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
peer_connected_serialize(struct peer_connected_hook_payload *payload,
|
peer_connected_serialize(struct peer_connected_hook_payload *payload,
|
||||||
struct json_stream *stream)
|
struct json_stream *stream, struct plugin *plugin)
|
||||||
{
|
{
|
||||||
const struct peer *p = payload->peer;
|
const struct peer *p = payload->peer;
|
||||||
json_object_start(stream, "peer");
|
json_object_start(stream, "peer");
|
||||||
@@ -2782,7 +2782,8 @@ static void custommsg_final(struct custommsg_payload *payload STEALS)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void custommsg_payload_serialize(struct custommsg_payload *payload,
|
static void custommsg_payload_serialize(struct custommsg_payload *payload,
|
||||||
struct json_stream *stream)
|
struct json_stream *stream,
|
||||||
|
struct plugin *plugin)
|
||||||
{
|
{
|
||||||
/* Backward compat for broken custommsg: if we get a custommsg
|
/* Backward compat for broken custommsg: if we get a custommsg
|
||||||
* from an old c-lightning node, then we must identify and
|
* from an old c-lightning node, then we must identify and
|
||||||
|
|||||||
@@ -1011,7 +1011,8 @@ static bool htlc_accepted_hook_deserialize(struct htlc_accepted_hook_payload *re
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void htlc_accepted_hook_serialize(struct htlc_accepted_hook_payload *p,
|
static void htlc_accepted_hook_serialize(struct htlc_accepted_hook_payload *p,
|
||||||
struct json_stream *s)
|
struct json_stream *s,
|
||||||
|
struct plugin *plugin)
|
||||||
{
|
{
|
||||||
const struct route_step *rs = p->route_step;
|
const struct route_step *rs = p->route_step;
|
||||||
const struct htlc_in *hin = p->hin;
|
const struct htlc_in *hin = p->hin;
|
||||||
@@ -2034,7 +2035,8 @@ struct commitment_revocation_payload {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static void commitment_revocation_hook_serialize(
|
static void commitment_revocation_hook_serialize(
|
||||||
struct commitment_revocation_payload *payload, struct json_stream *stream)
|
struct commitment_revocation_payload *payload, struct json_stream *stream,
|
||||||
|
struct plugin *plugin)
|
||||||
{
|
{
|
||||||
json_add_txid(stream, "commitment_txid", &payload->commitment_txid);
|
json_add_txid(stream, "commitment_txid", &payload->commitment_txid);
|
||||||
json_add_tx(stream, "penalty_tx", payload->penalty_tx);
|
json_add_tx(stream, "penalty_tx", payload->penalty_tx);
|
||||||
|
|||||||
@@ -232,7 +232,7 @@ static void plugin_hook_call_next(struct plugin_hook_request *ph_req)
|
|||||||
NULL,
|
NULL,
|
||||||
plugin_hook_callback, ph_req);
|
plugin_hook_callback, ph_req);
|
||||||
|
|
||||||
hook->serialize_payload(ph_req->cb_arg, req->stream);
|
hook->serialize_payload(ph_req->cb_arg, req->stream, ph_req->plugin);
|
||||||
jsonrpc_request_end(req);
|
jsonrpc_request_end(req);
|
||||||
plugin_request_send(ph_req->plugin, req);
|
plugin_request_send(ph_req->plugin, req);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,7 +49,8 @@ struct plugin_hook {
|
|||||||
void (*final_cb)(void *arg);
|
void (*final_cb)(void *arg);
|
||||||
|
|
||||||
/* To send the payload to the plugin */
|
/* To send the payload to the plugin */
|
||||||
void (*serialize_payload)(void *src, struct json_stream *dest);
|
void (*serialize_payload)(void *src, struct json_stream *dest,
|
||||||
|
struct plugin *plugin);
|
||||||
|
|
||||||
/* Which plugins have registered this hook? This is a `tal_arr`
|
/* Which plugins have registered this hook? This is a `tal_arr`
|
||||||
* initialized at creation. */
|
* initialized at creation. */
|
||||||
@@ -91,20 +92,19 @@ bool plugin_hook_continue(void *arg, const char *buffer, const jsmntok_t *toks);
|
|||||||
* an arbitrary extra argument used to maintain context.
|
* an arbitrary extra argument used to maintain context.
|
||||||
*/
|
*/
|
||||||
#define REGISTER_PLUGIN_HOOK(name, deserialize_cb, final_cb, \
|
#define REGISTER_PLUGIN_HOOK(name, deserialize_cb, final_cb, \
|
||||||
serialize_payload, cb_arg_type) \
|
serialize_payload, cb_arg_type) \
|
||||||
struct plugin_hook name##_hook_gen = { \
|
struct plugin_hook name##_hook_gen = { \
|
||||||
stringify(name), \
|
stringify(name), \
|
||||||
typesafe_cb_cast( \
|
typesafe_cb_cast( \
|
||||||
bool (*)(void *, const char *, const jsmntok_t *), \
|
bool (*)(void *, const char *, const jsmntok_t *), \
|
||||||
bool (*)(cb_arg_type, const char *, const jsmntok_t *), \
|
bool (*)(cb_arg_type, const char *, const jsmntok_t *), \
|
||||||
deserialize_cb), \
|
deserialize_cb), \
|
||||||
|
typesafe_cb_cast(void (*)(void *STEALS), \
|
||||||
|
void (*)(cb_arg_type STEALS), final_cb), \
|
||||||
typesafe_cb_cast( \
|
typesafe_cb_cast( \
|
||||||
void (*)(void *STEALS), \
|
void (*)(void *, struct json_stream *, struct plugin *), \
|
||||||
void (*)(cb_arg_type STEALS), \
|
void (*)(cb_arg_type, struct json_stream *, struct plugin *), \
|
||||||
final_cb), \
|
serialize_payload), \
|
||||||
typesafe_cb_cast(void (*)(void *, struct json_stream *), \
|
|
||||||
void (*)(cb_arg_type, struct json_stream *), \
|
|
||||||
serialize_payload), \
|
|
||||||
NULL, /* .plugins */ \
|
NULL, /* .plugins */ \
|
||||||
}; \
|
}; \
|
||||||
AUTODATA(hooks, &name##_hook_gen); \
|
AUTODATA(hooks, &name##_hook_gen); \
|
||||||
|
|||||||
Reference in New Issue
Block a user