mirror of
https://github.com/XRPLF/clio.git
synced 2026-04-29 15:37:53 +00:00
merged a bunch of stuff
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
#include<reporting/server/SubscriptionManager.h>
|
||||
#include<handlers/RPCHelpers.h>
|
||||
|
||||
#include <handlers/RPCHelpers.h>
|
||||
#include <reporting/server/SubscriptionManager.h>
|
||||
|
||||
void
|
||||
SubscriptionManager::subLedger(std::shared_ptr<session>& session)
|
||||
{
|
||||
@@ -27,15 +27,15 @@ SubscriptionManager::pubLedger(
|
||||
pubMsg["ledger_hash"] = to_string(lgrInfo.hash);
|
||||
pubMsg["ledger_time"] = lgrInfo.closeTime.time_since_epoch().count();
|
||||
|
||||
pubMsg["fee_ref"] = getJson(fees.units.jsonClipped());
|
||||
pubMsg["fee_base"] = getJson(fees.base.jsonClipped());
|
||||
pubMsg["reserve_base"] = getJson(fees.accountReserve(0).jsonClipped());
|
||||
pubMsg["reserve_inc"] = getJson(fees.increment.jsonClipped());
|
||||
pubMsg["fee_ref"] = toBoostJson(fees.units.jsonClipped());
|
||||
pubMsg["fee_base"] = toBoostJson(fees.base.jsonClipped());
|
||||
pubMsg["reserve_base"] = toBoostJson(fees.accountReserve(0).jsonClipped());
|
||||
pubMsg["reserve_inc"] = toBoostJson(fees.increment.jsonClipped());
|
||||
|
||||
pubMsg["validated_ledgers"] = ledgerRange;
|
||||
pubMsg["txn_count"] = txnCount;
|
||||
|
||||
for (auto const& session: streamSubscribers_[Ledgers])
|
||||
for (auto const& session : streamSubscribers_[Ledgers])
|
||||
session->send(boost::json::serialize(pubMsg));
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ SubscriptionManager::unsubTransactions(std::shared_ptr<session>& session)
|
||||
|
||||
void
|
||||
SubscriptionManager::subAccount(
|
||||
ripple::AccountID const& account,
|
||||
ripple::AccountID const& account,
|
||||
std::shared_ptr<session>& session)
|
||||
{
|
||||
accountSubscribers_[account].emplace(std::move(session));
|
||||
@@ -61,7 +61,7 @@ SubscriptionManager::subAccount(
|
||||
|
||||
void
|
||||
SubscriptionManager::unsubAccount(
|
||||
ripple::AccountID const& account,
|
||||
ripple::AccountID const& account,
|
||||
std::shared_ptr<session>& session)
|
||||
{
|
||||
accountSubscribers_[account].erase(session);
|
||||
@@ -75,23 +75,23 @@ SubscriptionManager::pubTransaction(
|
||||
auto [tx, meta] = deserializeTxPlusMeta(blob, seq);
|
||||
|
||||
boost::json::object pubMsg;
|
||||
pubMsg["transaction"] = getJson(*tx);
|
||||
pubMsg["meta"] = getJson(*meta);
|
||||
pubMsg["transaction"] = toJson(*tx);
|
||||
pubMsg["meta"] = toJson(*meta);
|
||||
|
||||
for (auto const& session: streamSubscribers_[Transactions])
|
||||
for (auto const& session : streamSubscribers_[Transactions])
|
||||
session->send(boost::json::serialize(pubMsg));
|
||||
|
||||
auto journal = ripple::debugLog();
|
||||
auto accounts = meta->getAffectedAccounts(journal);
|
||||
|
||||
for (ripple::AccountID const& account : accounts)
|
||||
for (auto const& session: accountSubscribers_[account])
|
||||
for (auto const& session : accountSubscribers_[account])
|
||||
session->send(boost::json::serialize(pubMsg));
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
SubscriptionManager::forwardProposedTransaction(boost::json::object const& response)
|
||||
SubscriptionManager::forwardProposedTransaction(
|
||||
boost::json::object const& response)
|
||||
{
|
||||
for (auto const& session : streamSubscribers_[TransactionsProposed])
|
||||
session->send(boost::json::serialize(response));
|
||||
@@ -100,13 +100,13 @@ SubscriptionManager::forwardProposedTransaction(boost::json::object const& respo
|
||||
auto accounts = getAccountsFromTransaction(transaction);
|
||||
|
||||
for (ripple::AccountID const& account : accounts)
|
||||
for (auto const& session: accountProposedSubscribers_[account])
|
||||
for (auto const& session : accountProposedSubscribers_[account])
|
||||
session->send(boost::json::serialize(response));
|
||||
}
|
||||
|
||||
void
|
||||
SubscriptionManager::subProposedAccount(
|
||||
ripple::AccountID const& account,
|
||||
ripple::AccountID const& account,
|
||||
std::shared_ptr<session>& session)
|
||||
{
|
||||
accountProposedSubscribers_[account].emplace(std::move(session));
|
||||
@@ -127,7 +127,8 @@ SubscriptionManager::subProposedTransactions(std::shared_ptr<session>& session)
|
||||
}
|
||||
|
||||
void
|
||||
SubscriptionManager::unsubProposedTransactions(std::shared_ptr<session>& session)
|
||||
SubscriptionManager::unsubProposedTransactions(
|
||||
std::shared_ptr<session>& session)
|
||||
{
|
||||
streamSubscribers_[TransactionsProposed].erase(session);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,10 +48,11 @@ public:
|
||||
boost::asio::ip::tcp::endpoint endpoint,
|
||||
std::shared_ptr<BackendInterface> backend,
|
||||
std::shared_ptr<SubscriptionManager> subscriptions,
|
||||
std::shared_ptr<ETLLoadBalancer> balancer)
|
||||
std::shared_ptr<ETLLoadBalancer> balancer,
|
||||
DOSGuard& dosGuard)
|
||||
{
|
||||
std::make_shared<listener>(
|
||||
ioc, endpoint, backend, subscriptions, balancer)
|
||||
ioc, endpoint, backend, subscriptions, balancer, dosGuard)
|
||||
->run();
|
||||
}
|
||||
|
||||
@@ -67,6 +68,7 @@ public:
|
||||
, backend_(backend)
|
||||
, subscriptions_(subscriptions)
|
||||
, balancer_(balancer)
|
||||
, dosGuard_(dosGuard)
|
||||
{
|
||||
boost::beast::error_code ec;
|
||||
|
||||
|
||||
@@ -20,20 +20,20 @@ buildResponse(
|
||||
boost::json::object response;
|
||||
|
||||
if (shouldForwardToP2p(request))
|
||||
return balancer->forwardToP2p(request);
|
||||
return {balancer->forwardToP2p(request), 10};
|
||||
|
||||
switch (commandMap[command])
|
||||
{
|
||||
case tx:
|
||||
return {doTx(request, *backend), 1};
|
||||
case account_tx: {
|
||||
auto res = doAccountTx(request, backend);
|
||||
auto res = doAccountTx(request, *backend);
|
||||
if (res.contains("transactions"))
|
||||
return {res, res["transactions"].as_array().size()};
|
||||
return {res, 1};
|
||||
}
|
||||
case ledger: {
|
||||
auto res = doLedger(request, backend);
|
||||
auto res = doLedger(request, *backend);
|
||||
if (res.contains("transactions"))
|
||||
return {res, res["transactions"].as_array().size()};
|
||||
return {res, 1};
|
||||
@@ -43,7 +43,7 @@ buildResponse(
|
||||
case ledger_range:
|
||||
return {doLedgerRange(request, *backend), 1};
|
||||
case ledger_data: {
|
||||
auto res = doLedgerData(request, backend);
|
||||
auto res = doLedgerData(request, *backend);
|
||||
if (res.contains("objects"))
|
||||
return {res, res["objects"].as_array().size() * 4};
|
||||
return {res, 1};
|
||||
@@ -51,7 +51,7 @@ buildResponse(
|
||||
case account_info:
|
||||
return {doAccountInfo(request, *backend), 1};
|
||||
case book_offers: {
|
||||
auto res = doBookOffers(request, backend);
|
||||
auto res = doBookOffers(request, *backend);
|
||||
if (res.contains("offers"))
|
||||
return {res, res["offers"].as_array().size() * 4};
|
||||
return {res, 1};
|
||||
@@ -73,7 +73,7 @@ buildResponse(
|
||||
size_t count = 1;
|
||||
if (res.contains("send_currencies"))
|
||||
count = res["send_currencies"].as_array().size();
|
||||
if(res.contains("receive_currencies"]))
|
||||
if (res.contains("receive_currencies"))
|
||||
count += res["receive_currencies"].as_array().size();
|
||||
return {res, count};
|
||||
}
|
||||
@@ -100,7 +100,7 @@ buildResponse(
|
||||
case unsubscribe:
|
||||
return {doUnsubscribe(request, session, *manager), 1};
|
||||
case server_info: {
|
||||
return {doServerInfo(request, backend), 1};
|
||||
return {doServerInfo(request, *backend), 1};
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#include <reporting/BackendInterface.h>
|
||||
#include <reporting/ETLSource.h>
|
||||
#include <reporting/server/SubscriptionManager.h>
|
||||
#include <server/DOSGuard.h>
|
||||
|
||||
class session;
|
||||
class SubscriptionManager;
|
||||
@@ -134,6 +135,10 @@ boost::json::object
|
||||
doAccountObjects(
|
||||
boost::json::object const& request,
|
||||
BackendInterface const& backend);
|
||||
boost::json::object
|
||||
doServerInfo(
|
||||
boost::json::object const& request,
|
||||
BackendInterface const& backend);
|
||||
|
||||
boost::json::object
|
||||
doChannelAuthorize(boost::json::object const& request);
|
||||
@@ -151,7 +156,7 @@ doUnsubscribe(
|
||||
std::shared_ptr<session>& session,
|
||||
SubscriptionManager& manager);
|
||||
|
||||
boost::json::object
|
||||
std::pair<boost::json::object, uint32_t>
|
||||
buildResponse(
|
||||
boost::json::object const& request,
|
||||
std::shared_ptr<BackendInterface> backend,
|
||||
|
||||
Reference in New Issue
Block a user