Bitcoin Core 29.99.0
P2P Digital Currency
zmqrpc.cpp
Go to the documentation of this file.
1// Copyright (c) 2018-2022 The Bitcoin Core developers
2// Distributed under the MIT software license, see the accompanying
3// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5#include <zmq/zmqrpc.h>
6
7#include <rpc/server.h>
8#include <rpc/util.h>
11
12#include <univalue.h>
13
14#include <list>
15#include <string>
16
17class JSONRPCRequest;
18
19namespace {
20
21static RPCHelpMan getzmqnotifications()
22{
23 return RPCHelpMan{
24 "getzmqnotifications",
25 "Returns information about the active ZeroMQ notifications.\n",
26 {},
29 {
30 {RPCResult::Type::OBJ, "", "",
31 {
32 {RPCResult::Type::STR, "type", "Type of notification"},
33 {RPCResult::Type::STR, "address", "Address of the publisher"},
34 {RPCResult::Type::NUM, "hwm", "Outbound message high water mark"},
35 }},
36 }
37 },
39 HelpExampleCli("getzmqnotifications", "")
40 + HelpExampleRpc("getzmqnotifications", "")
41 },
42 [&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
43{
45 if (g_zmq_notification_interface != nullptr) {
46 for (const auto* n : g_zmq_notification_interface->GetActiveNotifiers()) {
48 obj.pushKV("type", n->GetType());
49 obj.pushKV("address", n->GetAddress());
50 obj.pushKV("hwm", n->GetOutboundMessageHighWaterMark());
51 result.push_back(std::move(obj));
52 }
53 }
54
55 return result;
56},
57 };
58}
59
60const CRPCCommand commands[]{
61 {"zmq", &getzmqnotifications},
62};
63
64} // anonymous namespace
65
67{
68 for (const auto& c : commands) {
69 t.appendCommand(c.name, &c);
70 }
71}
RPC command dispatcher.
Definition: server.h:127
@ VOBJ
Definition: univalue.h:24
@ VARR
Definition: univalue.h:24
std::string HelpExampleCli(const std::string &methodname, const std::string &args)
Definition: util.cpp:186
std::string HelpExampleRpc(const std::string &methodname, const std::string &args)
Definition: util.cpp:204
std::unique_ptr< CZMQNotificationInterface > g_zmq_notification_interface
void RegisterZMQRPCCommands(CRPCTable &t)
Definition: zmqrpc.cpp:66