merged a bunch of stuff

This commit is contained in:
CJ Cobb
2021-06-07 21:54:47 -04:00
parent 5f265c5850
commit a2dddbcb8a
11 changed files with 70 additions and 450 deletions

View File

@@ -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);
}
}

View File

@@ -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;

View File

@@ -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:

View File

@@ -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,