Branch data Line data Source code
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>
9 : : #include <zmq/zmqabstractnotifier.h>
10 : : #include <zmq/zmqnotificationinterface.h>
11 : :
12 : : #include <univalue.h>
13 : :
14 : : #include <list>
15 : : #include <string>
16 : :
17 : : class JSONRPCRequest;
18 : :
19 : : namespace {
20 : :
21 : 2358 : static RPCHelpMan getzmqnotifications()
22 : : {
23 : 2358 : return RPCHelpMan{"getzmqnotifications",
24 : : "\nReturns information about the active ZeroMQ notifications.\n",
25 : : {},
26 : 0 : RPCResult{
27 : : RPCResult::Type::ARR, "", "",
28 : : {
29 : : {RPCResult::Type::OBJ, "", "",
30 : : {
31 : : {RPCResult::Type::STR, "type", "Type of notification"},
32 : : {RPCResult::Type::STR, "address", "Address of the publisher"},
33 : : {RPCResult::Type::NUM, "hwm", "Outbound message high water mark"},
34 : : }},
35 : : }
36 [ + - + - : 16506 : },
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - + - +
- + - + +
+ + - - -
- ]
37 : 2358 : RPCExamples{
38 [ + - + - : 4716 : HelpExampleCli("getzmqnotifications", "")
+ - ]
39 [ + - + - : 9432 : + HelpExampleRpc("getzmqnotifications", "")
+ - + - ]
40 [ + - ]: 2358 : },
41 : 4 : [&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
42 : : {
43 : 4 : UniValue result(UniValue::VARR);
44 [ + + ]: 4 : if (g_zmq_notification_interface != nullptr) {
45 [ + - + + ]: 10 : for (const auto* n : g_zmq_notification_interface->GetActiveNotifiers()) {
46 : 8 : UniValue obj(UniValue::VOBJ);
47 [ + - + - : 16 : obj.pushKV("type", n->GetType());
+ - + - ]
48 [ + - + - : 16 : obj.pushKV("address", n->GetAddress());
+ - + - ]
49 [ + - + - : 16 : obj.pushKV("hwm", n->GetOutboundMessageHighWaterMark());
+ - ]
50 [ + - ]: 8 : result.push_back(std::move(obj));
51 : 10 : }
52 : : }
53 : :
54 : 4 : return result;
55 : 0 : },
56 [ + - + - : 14148 : };
+ - + - ]
57 [ + - + - : 11790 : }
+ - + - +
- - - ]
58 : :
59 : : const CRPCCommand commands[]{
60 : : {"zmq", &getzmqnotifications},
61 : : };
62 : :
63 : : } // anonymous namespace
64 : :
65 : 986 : void RegisterZMQRPCCommands(CRPCTable& t)
66 : : {
67 [ + + ]: 1972 : for (const auto& c : commands) {
68 : 986 : t.appendCommand(c.name, &c);
69 : : }
70 : 986 : }
|