From 097bf96f493465635cd9d5461331baf6848257b6 Mon Sep 17 00:00:00 2001 From: intelliot Date: Fri, 24 Feb 2023 16:45:14 +0000 Subject: [PATCH] deploy: caf4827c0b47fa04b3c25c5ab0de42e1c3db7715 --- Application_8cpp_source.html | 2 +- NetworkOPs_8cpp_source.html | 4953 ++++++++--------- NetworkOPs_8h_source.html | 2 +- Subscribe__test_8cpp_source.html | 1433 +++-- classripple_1_1NetworkOPsImp.html | 112 +- ...e_1_1NetworkOPsImp_1_1StateAccounting.html | 4 +- classripple_1_1test_1_1Subscribe__test.html | 8 +- jss_8h_source.html | 1017 ++-- namespaceripple.html | 4 +- namespaceripple_1_1jss.html | 1184 ++-- search/all_a.js | 2 +- search/functions_a.js | 2 +- 12 files changed, 4322 insertions(+), 4401 deletions(-) diff --git a/Application_8cpp_source.html b/Application_8cpp_source.html index b08e995227..bdb71729bb 100644 --- a/Application_8cpp_source.html +++ b/Application_8cpp_source.html @@ -2371,7 +2371,7 @@ $(function() {
ApplicationImp(std::unique_ptr< Config > config, std::unique_ptr< Logs > logs, std::unique_ptr< TimeKeeper > timeKeeper)
Cluster & cluster() override
Stopwatch & stopwatch()
Returns an instance of a wall clock.
Definition: chrono.h:88
-
std::unique_ptr< NetworkOPs > make_NetworkOPs(Application &app, NetworkOPs::clock_type &clock, bool standalone, std::size_t minPeerCount, bool startvalid, JobQueue &job_queue, LedgerMaster &ledgerMaster, ValidatorKeys const &validatorKeys, boost::asio::io_service &io_svc, beast::Journal journal, beast::insight::Collector::ptr const &collector)
+
std::unique_ptr< NetworkOPs > make_NetworkOPs(Application &app, NetworkOPs::clock_type &clock, bool standalone, std::size_t minPeerCount, bool startvalid, JobQueue &job_queue, LedgerMaster &ledgerMaster, ValidatorKeys const &validatorKeys, boost::asio::io_service &io_svc, beast::Journal journal, beast::insight::Collector::ptr const &collector)
std::unique_ptr< InboundTransactions > make_InboundTransactions(Application &app, beast::insight::Collector::ptr const &collector, std::function< void(std::shared_ptr< SHAMap > const &, bool)> gotSet)
LedgerMaster & getLedgerMaster() override
Unserialize a JSON document into a Value.
Definition: json_reader.h:36
diff --git a/NetworkOPs_8cpp_source.html b/NetworkOPs_8cpp_source.html index d9fe2ff776..25e6e1a453 100644 --- a/NetworkOPs_8cpp_source.html +++ b/NetworkOPs_8cpp_source.html @@ -2191,2434 +2191,2433 @@ $(function() {
2184  // simplifies later operations)
2185  if (auto const baseFeeXRP = ~val->at(~sfBaseFeeDrops);
2186  baseFeeXRP && baseFeeXRP->native())
-
2187  jvObj[jss::base_fee_drops] = baseFeeXRP->xrp().jsonClipped();
+
2187  jvObj[jss::base_fee] = baseFeeXRP->xrp().jsonClipped();
2188 
2189  if (auto const reserveBaseXRP = ~val->at(~sfReserveBaseDrops);
2190  reserveBaseXRP && reserveBaseXRP->native())
-
2191  jvObj[jss::reserve_base_drops] =
-
2192  reserveBaseXRP->xrp().jsonClipped();
-
2193 
-
2194  if (auto const reserveIncXRP = ~val->at(~sfReserveIncrementDrops);
-
2195  reserveIncXRP && reserveIncXRP->native())
-
2196  jvObj[jss::reserve_inc_drops] = reserveIncXRP->xrp().jsonClipped();
-
2197 
-
2198  for (auto i = mStreamMaps[sValidations].begin();
-
2199  i != mStreamMaps[sValidations].end();)
-
2200  {
-
2201  if (auto p = i->second.lock())
-
2202  {
-
2203  p->send(jvObj, true);
-
2204  ++i;
-
2205  }
-
2206  else
-
2207  {
-
2208  i = mStreamMaps[sValidations].erase(i);
-
2209  }
-
2210  }
-
2211  }
-
2212 }
-
2213 
-
2214 void
-
2215 NetworkOPsImp::pubPeerStatus(std::function<Json::Value(void)> const& func)
-
2216 {
-
2217  std::lock_guard sl(mSubLock);
-
2218 
-
2219  if (!mStreamMaps[sPeerStatus].empty())
-
2220  {
-
2221  Json::Value jvObj(func());
-
2222 
-
2223  jvObj[jss::type] = "peerStatusChange";
-
2224 
-
2225  for (auto i = mStreamMaps[sPeerStatus].begin();
-
2226  i != mStreamMaps[sPeerStatus].end();)
-
2227  {
-
2228  InfoSub::pointer p = i->second.lock();
-
2229 
-
2230  if (p)
-
2231  {
-
2232  p->send(jvObj, true);
-
2233  ++i;
-
2234  }
-
2235  else
-
2236  {
-
2237  i = mStreamMaps[sPeerStatus].erase(i);
-
2238  }
-
2239  }
-
2240  }
-
2241 }
-
2242 
-
2243 void
-
2244 NetworkOPsImp::setMode(OperatingMode om)
-
2245 {
-
2246  using namespace std::chrono_literals;
-
2247  if (om == OperatingMode::CONNECTED)
-
2248  {
-
2249  if (app_.getLedgerMaster().getValidatedLedgerAge() < 1min)
-
2250  om = OperatingMode::SYNCING;
-
2251  }
-
2252  else if (om == OperatingMode::SYNCING)
-
2253  {
-
2254  if (app_.getLedgerMaster().getValidatedLedgerAge() >= 1min)
-
2255  om = OperatingMode::CONNECTED;
-
2256  }
-
2257 
-
2258  if ((om > OperatingMode::CONNECTED) && isBlocked())
-
2259  om = OperatingMode::CONNECTED;
-
2260 
-
2261  if (mMode == om)
-
2262  return;
-
2263 
-
2264  mMode = om;
-
2265 
-
2266  accounting_.mode(om);
-
2267 
-
2268  JLOG(m_journal.info()) << "STATE->" << strOperatingMode();
-
2269  pubServer();
-
2270 }
-
2271 
-
2272 bool
-
2273 NetworkOPsImp::recvValidation(
-
2274  std::shared_ptr<STValidation> const& val,
-
2275  std::string const& source)
-
2276 {
-
2277  JLOG(m_journal.trace())
-
2278  << "recvValidation " << val->getLedgerHash() << " from " << source;
-
2279 
-
2280  handleNewValidation(app_, val, source);
-
2281 
-
2282  pubValidation(val);
-
2283 
-
2284  // We will always relay trusted validations; if configured, we will
-
2285  // also relay all untrusted validations.
-
2286  return app_.config().RELAY_UNTRUSTED_VALIDATIONS == 1 || val->isTrusted();
-
2287 }
-
2288 
-
2289 Json::Value
-
2290 NetworkOPsImp::getConsensusInfo()
-
2291 {
-
2292  return mConsensus.getJson(true);
-
2293 }
-
2294 
-
2295 Json::Value
-
2296 NetworkOPsImp::getServerInfo(bool human, bool admin, bool counters)
-
2297 {
-
2298  Json::Value info = Json::objectValue;
-
2299 
-
2300  // System-level warnings
-
2301  {
-
2302  Json::Value warnings{Json::arrayValue};
-
2303  if (isAmendmentBlocked())
-
2304  {
-
2305  Json::Value& w = warnings.append(Json::objectValue);
-
2306  w[jss::id] = warnRPC_AMENDMENT_BLOCKED;
-
2307  w[jss::message] =
-
2308  "This server is amendment blocked, and must be updated to be "
-
2309  "able to stay in sync with the network.";
-
2310  }
-
2311  if (isUNLBlocked())
-
2312  {
-
2313  Json::Value& w = warnings.append(Json::objectValue);
-
2314  w[jss::id] = warnRPC_EXPIRED_VALIDATOR_LIST;
-
2315  w[jss::message] =
-
2316  "This server has an expired validator list. validators.txt "
-
2317  "may be incorrectly configured or some [validator_list_sites] "
-
2318  "may be unreachable.";
-
2319  }
-
2320  if (admin && isAmendmentWarned())
-
2321  {
-
2322  Json::Value& w = warnings.append(Json::objectValue);
-
2323  w[jss::id] = warnRPC_UNSUPPORTED_MAJORITY;
-
2324  w[jss::message] =
-
2325  "One or more unsupported amendments have reached majority. "
-
2326  "Upgrade to the latest version before they are activated "
-
2327  "to avoid being amendment blocked.";
-
2328  if (auto const expected =
-
2329  app_.getAmendmentTable().firstUnsupportedExpected())
-
2330  {
-
2331  auto& d = w[jss::details] = Json::objectValue;
-
2332  d[jss::expected_date] = expected->time_since_epoch().count();
-
2333  d[jss::expected_date_UTC] = to_string(*expected);
-
2334  }
-
2335  }
-
2336 
-
2337  if (warnings.size())
-
2338  info[jss::warnings] = std::move(warnings);
-
2339  }
-
2340 
-
2341  // hostid: unique string describing the machine
-
2342  if (human)
-
2343  info[jss::hostid] = getHostId(admin);
-
2344 
-
2345  // domain: if configured with a domain, report it:
-
2346  if (!app_.config().SERVER_DOMAIN.empty())
-
2347  info[jss::server_domain] = app_.config().SERVER_DOMAIN;
-
2348 
-
2349  info[jss::build_version] = BuildInfo::getVersionString();
-
2350 
-
2351  info[jss::server_state] = strOperatingMode(admin);
-
2352 
-
2353  info[jss::time] = to_string(std::chrono::floor<std::chrono::microseconds>(
-
2354  std::chrono::system_clock::now()));
-
2355 
-
2356  if (needNetworkLedger_)
-
2357  info[jss::network_ledger] = "waiting";
-
2358 
-
2359  info[jss::validation_quorum] =
-
2360  static_cast<Json::UInt>(app_.validators().quorum());
-
2361 
-
2362  if (admin)
-
2363  {
-
2364  switch (app_.config().NODE_SIZE)
-
2365  {
-
2366  case 0:
-
2367  info[jss::node_size] = "tiny";
-
2368  break;
-
2369  case 1:
-
2370  info[jss::node_size] = "small";
-
2371  break;
-
2372  case 2:
-
2373  info[jss::node_size] = "medium";
-
2374  break;
-
2375  case 3:
-
2376  info[jss::node_size] = "large";
-
2377  break;
-
2378  case 4:
-
2379  info[jss::node_size] = "huge";
-
2380  break;
-
2381  }
-
2382 
-
2383  auto when = app_.validators().expires();
-
2384 
-
2385  if (!human)
-
2386  {
-
2387  if (when)
-
2388  info[jss::validator_list_expires] =
-
2389  safe_cast<Json::UInt>(when->time_since_epoch().count());
-
2390  else
-
2391  info[jss::validator_list_expires] = 0;
-
2392  }
-
2393  else
-
2394  {
-
2395  auto& x = (info[jss::validator_list] = Json::objectValue);
-
2396 
-
2397  x[jss::count] = static_cast<Json::UInt>(app_.validators().count());
-
2398 
-
2399  if (when)
-
2400  {
-
2401  if (*when == TimeKeeper::time_point::max())
-
2402  {
-
2403  x[jss::expiration] = "never";
-
2404  x[jss::status] = "active";
-
2405  }
-
2406  else
-
2407  {
-
2408  x[jss::expiration] = to_string(*when);
-
2409 
-
2410  if (*when > app_.timeKeeper().now())
-
2411  x[jss::status] = "active";
-
2412  else
-
2413  x[jss::status] = "expired";
-
2414  }
-
2415  }
-
2416  else
-
2417  {
-
2418  x[jss::status] = "unknown";
-
2419  x[jss::expiration] = "unknown";
-
2420  }
-
2421  }
-
2422  }
-
2423  info[jss::io_latency_ms] =
-
2424  static_cast<Json::UInt>(app_.getIOLatency().count());
-
2425 
-
2426  if (admin)
-
2427  {
-
2428  if (!app_.getValidationPublicKey().empty())
-
2429  {
-
2430  info[jss::pubkey_validator] = toBase58(
-
2431  TokenType::NodePublic, app_.validators().localPublicKey());
-
2432  }
-
2433  else
-
2434  {
-
2435  info[jss::pubkey_validator] = "none";
-
2436  }
-
2437  }
-
2438 
-
2439  if (counters)
-
2440  {
-
2441  info[jss::counters] = app_.getPerfLog().countersJson();
-
2442 
-
2443  Json::Value nodestore(Json::objectValue);
-
2444  if (app_.getShardStore())
-
2445  app_.getShardStore()->getCountsJson(nodestore);
-
2446  else
-
2447  app_.getNodeStore().getCountsJson(nodestore);
-
2448  info[jss::counters][jss::nodestore] = nodestore;
-
2449  info[jss::current_activities] = app_.getPerfLog().currentJson();
-
2450  }
-
2451 
-
2452  info[jss::pubkey_node] =
-
2453  toBase58(TokenType::NodePublic, app_.nodeIdentity().first);
-
2454 
-
2455  info[jss::complete_ledgers] = app_.getLedgerMaster().getCompleteLedgers();
-
2456 
-
2457  if (amendmentBlocked_)
-
2458  info[jss::amendment_blocked] = true;
-
2459 
-
2460  auto const fp = m_ledgerMaster.getFetchPackCacheSize();
-
2461 
-
2462  if (fp != 0)
-
2463  info[jss::fetch_pack] = Json::UInt(fp);
-
2464 
-
2465  if (!app_.config().reporting())
-
2466  info[jss::peers] = Json::UInt(app_.overlay().size());
-
2467 
-
2468  Json::Value lastClose = Json::objectValue;
-
2469  lastClose[jss::proposers] = Json::UInt(mConsensus.prevProposers());
-
2470 
-
2471  if (human)
-
2472  {
-
2473  lastClose[jss::converge_time_s] =
-
2474  std::chrono::duration<double>{mConsensus.prevRoundTime()}.count();
-
2475  }
-
2476  else
-
2477  {
-
2478  lastClose[jss::converge_time] =
-
2479  Json::Int(mConsensus.prevRoundTime().count());
-
2480  }
-
2481 
-
2482  info[jss::last_close] = lastClose;
-
2483 
-
2484  // info[jss::consensus] = mConsensus.getJson();
-
2485 
-
2486  if (admin)
-
2487  info[jss::load] = m_job_queue.getJson();
-
2488 
-
2489  if (!app_.config().reporting())
-
2490  {
-
2491  if (auto const netid = app_.overlay().networkID())
-
2492  info[jss::network_id] = static_cast<Json::UInt>(*netid);
-
2493 
-
2494  auto const escalationMetrics =
-
2495  app_.getTxQ().getMetrics(*app_.openLedger().current());
-
2496 
-
2497  auto const loadFactorServer = app_.getFeeTrack().getLoadFactor();
-
2498  auto const loadBaseServer = app_.getFeeTrack().getLoadBase();
-
2499  /* Scale the escalated fee level to unitless "load factor".
-
2500  In practice, this just strips the units, but it will continue
-
2501  to work correctly if either base value ever changes. */
-
2502  auto const loadFactorFeeEscalation =
-
2503  mulDiv(
-
2504  escalationMetrics.openLedgerFeeLevel,
-
2505  loadBaseServer,
-
2506  escalationMetrics.referenceFeeLevel)
-
2507  .second;
-
2508 
-
2509  auto const loadFactor = std::max(
-
2510  safe_cast<std::uint64_t>(loadFactorServer),
-
2511  loadFactorFeeEscalation);
-
2512 
-
2513  if (!human)
-
2514  {
-
2515  info[jss::load_base] = loadBaseServer;
-
2516  info[jss::load_factor] = trunc32(loadFactor);
-
2517  info[jss::load_factor_server] = loadFactorServer;
-
2518 
-
2519  /* Json::Value doesn't support uint64, so clamp to max
-
2520  uint32 value. This is mostly theoretical, since there
-
2521  probably isn't enough extant XRP to drive the factor
-
2522  that high.
-
2523  */
-
2524  info[jss::load_factor_fee_escalation] =
-
2525  escalationMetrics.openLedgerFeeLevel.jsonClipped();
-
2526  info[jss::load_factor_fee_queue] =
-
2527  escalationMetrics.minProcessingFeeLevel.jsonClipped();
-
2528  info[jss::load_factor_fee_reference] =
-
2529  escalationMetrics.referenceFeeLevel.jsonClipped();
-
2530  }
-
2531  else
-
2532  {
-
2533  info[jss::load_factor] =
-
2534  static_cast<double>(loadFactor) / loadBaseServer;
-
2535 
-
2536  if (loadFactorServer != loadFactor)
-
2537  info[jss::load_factor_server] =
-
2538  static_cast<double>(loadFactorServer) / loadBaseServer;
-
2539 
-
2540  if (admin)
-
2541  {
-
2542  std::uint32_t fee = app_.getFeeTrack().getLocalFee();
-
2543  if (fee != loadBaseServer)
-
2544  info[jss::load_factor_local] =
-
2545  static_cast<double>(fee) / loadBaseServer;
-
2546  fee = app_.getFeeTrack().getRemoteFee();
-
2547  if (fee != loadBaseServer)
-
2548  info[jss::load_factor_net] =
-
2549  static_cast<double>(fee) / loadBaseServer;
-
2550  fee = app_.getFeeTrack().getClusterFee();
-
2551  if (fee != loadBaseServer)
-
2552  info[jss::load_factor_cluster] =
-
2553  static_cast<double>(fee) / loadBaseServer;
-
2554  }
-
2555  if (escalationMetrics.openLedgerFeeLevel !=
-
2556  escalationMetrics.referenceFeeLevel &&
-
2557  (admin || loadFactorFeeEscalation != loadFactor))
-
2558  info[jss::load_factor_fee_escalation] =
-
2559  escalationMetrics.openLedgerFeeLevel.decimalFromReference(
-
2560  escalationMetrics.referenceFeeLevel);
-
2561  if (escalationMetrics.minProcessingFeeLevel !=
-
2562  escalationMetrics.referenceFeeLevel)
-
2563  info[jss::load_factor_fee_queue] =
-
2564  escalationMetrics.minProcessingFeeLevel
-
2565  .decimalFromReference(
-
2566  escalationMetrics.referenceFeeLevel);
-
2567  }
-
2568  }
-
2569 
-
2570  bool valid = false;
-
2571  auto lpClosed = m_ledgerMaster.getValidatedLedger();
-
2572 
-
2573  if (lpClosed)
-
2574  valid = true;
-
2575  else if (!app_.config().reporting())
-
2576  lpClosed = m_ledgerMaster.getClosedLedger();
-
2577 
-
2578  if (lpClosed)
-
2579  {
-
2580  XRPAmount const baseFee = lpClosed->fees().base;
-
2581  Json::Value l(Json::objectValue);
-
2582  l[jss::seq] = Json::UInt(lpClosed->info().seq);
-
2583  l[jss::hash] = to_string(lpClosed->info().hash);
-
2584 
-
2585  if (!human)
-
2586  {
-
2587  l[jss::base_fee] = baseFee.jsonClipped();
-
2588  l[jss::reserve_base] =
-
2589  lpClosed->fees().accountReserve(0).jsonClipped();
-
2590  l[jss::reserve_inc] = lpClosed->fees().increment.jsonClipped();
-
2591  l[jss::close_time] = Json::Value::UInt(
-
2592  lpClosed->info().closeTime.time_since_epoch().count());
-
2593  }
-
2594  else
-
2595  {
-
2596  l[jss::base_fee_xrp] = baseFee.decimalXRP();
-
2597  l[jss::reserve_base_xrp] =
-
2598  lpClosed->fees().accountReserve(0).decimalXRP();
-
2599  l[jss::reserve_inc_xrp] = lpClosed->fees().increment.decimalXRP();
-
2600 
-
2601  auto const nowOffset = app_.timeKeeper().nowOffset();
-
2602  if (std::abs(nowOffset.count()) >= 60)
-
2603  l[jss::system_time_offset] = nowOffset.count();
-
2604 
-
2605  auto const closeOffset = app_.timeKeeper().closeOffset();
-
2606  if (std::abs(closeOffset.count()) >= 60)
-
2607  l[jss::close_time_offset] = closeOffset.count();
-
2608 
-
2609 #if RIPPLED_REPORTING
-
2610  std::int64_t const dbAge =
-
2611  std::max(m_ledgerMaster.getValidatedLedgerAge().count(), 0L);
-
2612  l[jss::age] = Json::UInt(dbAge);
-
2613 #else
-
2614  constexpr std::chrono::seconds highAgeThreshold{1000000};
-
2615  if (m_ledgerMaster.haveValidated())
-
2616  {
-
2617  auto const age = m_ledgerMaster.getValidatedLedgerAge();
-
2618  l[jss::age] =
-
2619  Json::UInt(age < highAgeThreshold ? age.count() : 0);
-
2620  }
-
2621  else
-
2622  {
-
2623  auto lCloseTime = lpClosed->info().closeTime;
-
2624  auto closeTime = app_.timeKeeper().closeTime();
-
2625  if (lCloseTime <= closeTime)
-
2626  {
-
2627  using namespace std::chrono_literals;
-
2628  auto age = closeTime - lCloseTime;
-
2629  l[jss::age] =
-
2630  Json::UInt(age < highAgeThreshold ? age.count() : 0);
-
2631  }
-
2632  }
-
2633 #endif
-
2634  }
-
2635 
-
2636  if (valid)
-
2637  info[jss::validated_ledger] = l;
-
2638  else
-
2639  info[jss::closed_ledger] = l;
-
2640 
-
2641  auto lpPublished = m_ledgerMaster.getPublishedLedger();
-
2642  if (!lpPublished)
-
2643  info[jss::published_ledger] = "none";
-
2644  else if (lpPublished->info().seq != lpClosed->info().seq)
-
2645  info[jss::published_ledger] = lpPublished->info().seq;
-
2646  }
-
2647 
-
2648  accounting_.json(info);
-
2649  info[jss::uptime] = UptimeClock::now().time_since_epoch().count();
-
2650  if (!app_.config().reporting())
-
2651  {
-
2652  info[jss::jq_trans_overflow] =
-
2653  std::to_string(app_.overlay().getJqTransOverflow());
-
2654  info[jss::peer_disconnects] =
-
2655  std::to_string(app_.overlay().getPeerDisconnect());
-
2656  info[jss::peer_disconnects_resources] =
-
2657  std::to_string(app_.overlay().getPeerDisconnectCharges());
-
2658  }
-
2659  else
-
2660  {
-
2661  info["reporting"] = app_.getReportingETL().getInfo();
-
2662  }
-
2663 
-
2664  return info;
-
2665 }
-
2666 
-
2667 void
-
2668 NetworkOPsImp::clearLedgerFetch()
-
2669 {
-
2670  app_.getInboundLedgers().clearFailures();
-
2671 }
-
2672 
-
2673 Json::Value
-
2674 NetworkOPsImp::getLedgerFetchInfo()
-
2675 {
-
2676  return app_.getInboundLedgers().getInfo();
-
2677 }
-
2678 
-
2679 void
-
2680 NetworkOPsImp::pubProposedTransaction(
-
2681  std::shared_ptr<ReadView const> const& ledger,
-
2682  std::shared_ptr<STTx const> const& transaction,
-
2683  TER result)
-
2684 {
-
2685  Json::Value jvObj = transJson(*transaction, result, false, ledger);
-
2686 
-
2687  {
-
2688  std::lock_guard sl(mSubLock);
-
2689 
-
2690  auto it = mStreamMaps[sRTTransactions].begin();
-
2691  while (it != mStreamMaps[sRTTransactions].end())
-
2692  {
-
2693  InfoSub::pointer p = it->second.lock();
-
2694 
-
2695  if (p)
-
2696  {
-
2697  p->send(jvObj, true);
-
2698  ++it;
-
2699  }
-
2700  else
-
2701  {
-
2702  it = mStreamMaps[sRTTransactions].erase(it);
-
2703  }
-
2704  }
-
2705  }
-
2706 
-
2707  pubProposedAccountTransaction(ledger, transaction, result);
-
2708 }
-
2709 
-
2710 void
-
2711 NetworkOPsImp::forwardProposedTransaction(Json::Value const& jvObj)
-
2712 {
-
2713  // reporting does not forward validated transactions
-
2714  // validated transactions will be published to the proper streams when the
-
2715  // etl process writes a validated ledger
-
2716  if (jvObj[jss::validated].asBool())
-
2717  return;
-
2718  {
-
2719  std::lock_guard sl(mSubLock);
-
2720 
-
2721  auto it = mStreamMaps[sRTTransactions].begin();
-
2722  while (it != mStreamMaps[sRTTransactions].end())
-
2723  {
-
2724  InfoSub::pointer p = it->second.lock();
-
2725 
-
2726  if (p)
-
2727  {
-
2728  p->send(jvObj, true);
-
2729  ++it;
-
2730  }
-
2731  else
-
2732  {
-
2733  it = mStreamMaps[sRTTransactions].erase(it);
-
2734  }
-
2735  }
-
2736  }
-
2737 
-
2738  forwardProposedAccountTransaction(jvObj);
-
2739 }
-
2740 
-
2741 void
-
2742 NetworkOPsImp::forwardValidation(Json::Value const& jvObj)
-
2743 {
-
2744  std::lock_guard sl(mSubLock);
-
2745 
-
2746  for (auto i = mStreamMaps[sValidations].begin();
-
2747  i != mStreamMaps[sValidations].end();)
-
2748  {
-
2749  if (auto p = i->second.lock())
-
2750  {
-
2751  p->send(jvObj, true);
-
2752  ++i;
-
2753  }
-
2754  else
-
2755  {
-
2756  i = mStreamMaps[sValidations].erase(i);
-
2757  }
-
2758  }
-
2759 }
-
2760 
-
2761 void
-
2762 NetworkOPsImp::forwardManifest(Json::Value const& jvObj)
-
2763 {
-
2764  std::lock_guard sl(mSubLock);
-
2765 
-
2766  for (auto i = mStreamMaps[sManifests].begin();
-
2767  i != mStreamMaps[sManifests].end();)
-
2768  {
-
2769  if (auto p = i->second.lock())
-
2770  {
-
2771  p->send(jvObj, true);
-
2772  ++i;
-
2773  }
-
2774  else
-
2775  {
-
2776  i = mStreamMaps[sManifests].erase(i);
-
2777  }
-
2778  }
-
2779 }
-
2780 
-
2781 static void
-
2782 getAccounts(Json::Value const& jvObj, std::vector<AccountID>& accounts)
-
2783 {
-
2784  for (auto& jv : jvObj)
-
2785  {
-
2786  if (jv.isObject())
-
2787  {
-
2788  getAccounts(jv, accounts);
-
2789  }
-
2790  else if (jv.isString())
-
2791  {
-
2792  auto account = RPC::accountFromStringStrict(jv.asString());
-
2793  if (account)
-
2794  accounts.push_back(*account);
-
2795  }
-
2796  }
-
2797 }
-
2798 
-
2799 void
-
2800 NetworkOPsImp::forwardProposedAccountTransaction(Json::Value const& jvObj)
-
2801 {
-
2802  hash_set<InfoSub::pointer> notify;
-
2803  int iProposed = 0;
-
2804  // check if there are any subscribers before attempting to parse the JSON
-
2805  {
-
2806  std::lock_guard sl(mSubLock);
-
2807 
-
2808  if (mSubRTAccount.empty())
-
2809  return;
-
2810  }
-
2811 
-
2812  // parse the JSON outside of the lock
-
2813  std::vector<AccountID> accounts;
-
2814  if (jvObj.isMember(jss::transaction))
-
2815  {
-
2816  try
-
2817  {
-
2818  getAccounts(jvObj[jss::transaction], accounts);
-
2819  }
-
2820  catch (...)
-
2821  {
-
2822  JLOG(m_journal.debug())
-
2823  << __func__ << " : "
-
2824  << "error parsing json for accounts affected";
-
2825  return;
-
2826  }
-
2827  }
-
2828  {
-
2829  std::lock_guard sl(mSubLock);
-
2830 
-
2831  if (!mSubRTAccount.empty())
-
2832  {
-
2833  for (auto const& affectedAccount : accounts)
-
2834  {
-
2835  auto simiIt = mSubRTAccount.find(affectedAccount);
-
2836  if (simiIt != mSubRTAccount.end())
-
2837  {
-
2838  auto it = simiIt->second.begin();
-
2839 
-
2840  while (it != simiIt->second.end())
-
2841  {
-
2842  InfoSub::pointer p = it->second.lock();
-
2843 
-
2844  if (p)
-
2845  {
-
2846  notify.insert(p);
-
2847  ++it;
-
2848  ++iProposed;
-
2849  }
-
2850  else
-
2851  it = simiIt->second.erase(it);
-
2852  }
-
2853  }
-
2854  }
-
2855  }
-
2856  }
-
2857  JLOG(m_journal.trace()) << "forwardProposedAccountTransaction:"
-
2858  << " iProposed=" << iProposed;
-
2859 
-
2860  if (!notify.empty())
-
2861  {
-
2862  for (InfoSub::ref isrListener : notify)
-
2863  isrListener->send(jvObj, true);
-
2864  }
-
2865 }
-
2866 
-
2867 void
-
2868 NetworkOPsImp::pubLedger(std::shared_ptr<ReadView const> const& lpAccepted)
-
2869 {
-
2870  // Ledgers are published only when they acquire sufficient validations
-
2871  // Holes are filled across connection loss or other catastrophe
-
2872 
-
2873  std::shared_ptr<AcceptedLedger> alpAccepted =
-
2874  app_.getAcceptedLedgerCache().fetch(lpAccepted->info().hash);
-
2875  if (!alpAccepted)
-
2876  {
-
2877  alpAccepted = std::make_shared<AcceptedLedger>(lpAccepted, app_);
-
2878  app_.getAcceptedLedgerCache().canonicalize_replace_client(
-
2879  lpAccepted->info().hash, alpAccepted);
-
2880  }
-
2881 
-
2882  assert(alpAccepted->getLedger().get() == lpAccepted.get());
-
2883 
-
2884  {
-
2885  JLOG(m_journal.debug())
-
2886  << "Publishing ledger " << lpAccepted->info().seq << " "
-
2887  << lpAccepted->info().hash;
-
2888 
-
2889  std::lock_guard sl(mSubLock);
-
2890 
-
2891  if (!mStreamMaps[sLedger].empty())
-
2892  {
-
2893  Json::Value jvObj(Json::objectValue);
-
2894 
-
2895  jvObj[jss::type] = "ledgerClosed";
-
2896  jvObj[jss::ledger_index] = lpAccepted->info().seq;
-
2897  jvObj[jss::ledger_hash] = to_string(lpAccepted->info().hash);
-
2898  jvObj[jss::ledger_time] = Json::Value::UInt(
-
2899  lpAccepted->info().closeTime.time_since_epoch().count());
-
2900 
-
2901  if (!lpAccepted->rules().enabled(featureXRPFees))
-
2902  jvObj[jss::fee_ref] = Config::FEE_UNITS_DEPRECATED;
-
2903  jvObj[jss::fee_base] = lpAccepted->fees().base.jsonClipped();
-
2904  jvObj[jss::reserve_base] =
-
2905  lpAccepted->fees().accountReserve(0).jsonClipped();
-
2906  jvObj[jss::reserve_inc] =
-
2907  lpAccepted->fees().increment.jsonClipped();
-
2908 
-
2909  jvObj[jss::txn_count] = Json::UInt(alpAccepted->size());
-
2910 
-
2911  if (mMode >= OperatingMode::SYNCING)
-
2912  {
-
2913  jvObj[jss::validated_ledgers] =
-
2914  app_.getLedgerMaster().getCompleteLedgers();
-
2915  }
-
2916 
-
2917  auto it = mStreamMaps[sLedger].begin();
-
2918  while (it != mStreamMaps[sLedger].end())
-
2919  {
-
2920  InfoSub::pointer p = it->second.lock();
-
2921  if (p)
-
2922  {
-
2923  p->send(jvObj, true);
-
2924  ++it;
-
2925  }
-
2926  else
-
2927  it = mStreamMaps[sLedger].erase(it);
-
2928  }
-
2929  }
-
2930 
-
2931  if (!mStreamMaps[sBookChanges].empty())
-
2932  {
-
2933  Json::Value jvObj = ripple::RPC::computeBookChanges(lpAccepted);
-
2934 
-
2935  auto it = mStreamMaps[sBookChanges].begin();
-
2936  while (it != mStreamMaps[sBookChanges].end())
-
2937  {
-
2938  InfoSub::pointer p = it->second.lock();
-
2939  if (p)
-
2940  {
-
2941  p->send(jvObj, true);
-
2942  ++it;
-
2943  }
-
2944  else
-
2945  it = mStreamMaps[sBookChanges].erase(it);
-
2946  }
-
2947  }
-
2948 
-
2949  {
-
2950  static bool firstTime = true;
-
2951  if (firstTime)
-
2952  {
-
2953  // First validated ledger, start delayed SubAccountHistory
-
2954  firstTime = false;
-
2955  for (auto& outer : mSubAccountHistory)
-
2956  {
-
2957  for (auto& inner : outer.second)
-
2958  {
-
2959  auto& subInfo = inner.second;
-
2960  if (subInfo.index_->separationLedgerSeq_ == 0)
-
2961  {
-
2962  subAccountHistoryStart(
-
2963  alpAccepted->getLedger(), subInfo);
-
2964  }
-
2965  }
-
2966  }
-
2967  }
-
2968  }
-
2969  }
-
2970 
-
2971  // Don't lock since pubAcceptedTransaction is locking.
-
2972  for (auto const& accTx : *alpAccepted)
-
2973  {
-
2974  JLOG(m_journal.trace()) << "pubAccepted: " << accTx->getJson();
-
2975  pubValidatedTransaction(lpAccepted, *accTx);
-
2976  }
-
2977 }
-
2978 
-
2979 void
-
2980 NetworkOPsImp::reportFeeChange()
-
2981 {
-
2982  if (app_.config().reporting())
-
2983  return;
-
2984  ServerFeeSummary f{
-
2985  app_.openLedger().current()->fees().base,
-
2986  app_.getTxQ().getMetrics(*app_.openLedger().current()),
-
2987  app_.getFeeTrack()};
-
2988 
-
2989  // only schedule the job if something has changed
-
2990  if (f != mLastFeeSummary)
-
2991  {
-
2992  m_job_queue.addJob(
-
2993  jtCLIENT_FEE_CHANGE, "reportFeeChange->pubServer", [this]() {
-
2994  pubServer();
-
2995  });
-
2996  }
-
2997 }
-
2998 
-
2999 void
-
3000 NetworkOPsImp::reportConsensusStateChange(ConsensusPhase phase)
-
3001 {
-
3002  m_job_queue.addJob(
-
3003  jtCLIENT_CONSENSUS,
-
3004  "reportConsensusStateChange->pubConsensus",
-
3005  [this, phase]() { pubConsensus(phase); });
-
3006 }
-
3007 
-
3008 inline void
-
3009 NetworkOPsImp::updateLocalTx(ReadView const& view)
-
3010 {
-
3011  m_localTX->sweep(view);
-
3012 }
-
3013 inline std::size_t
-
3014 NetworkOPsImp::getLocalTxCount()
-
3015 {
-
3016  return m_localTX->size();
-
3017 }
-
3018 
-
3019 // This routine should only be used to publish accepted or validated
-
3020 // transactions.
-
3021 Json::Value
-
3022 NetworkOPsImp::transJson(
-
3023  const STTx& transaction,
-
3024  TER result,
-
3025  bool validated,
-
3026  std::shared_ptr<ReadView const> const& ledger)
-
3027 {
-
3028  Json::Value jvObj(Json::objectValue);
-
3029  std::string sToken;
-
3030  std::string sHuman;
-
3031 
-
3032  transResultInfo(result, sToken, sHuman);
-
3033 
-
3034  jvObj[jss::type] = "transaction";
-
3035  jvObj[jss::transaction] = transaction.getJson(JsonOptions::none);
-
3036 
-
3037  if (validated)
-
3038  {
-
3039  jvObj[jss::ledger_index] = ledger->info().seq;
-
3040  jvObj[jss::ledger_hash] = to_string(ledger->info().hash);
-
3041  jvObj[jss::transaction][jss::date] =
-
3042  ledger->info().closeTime.time_since_epoch().count();
-
3043  jvObj[jss::validated] = true;
-
3044 
-
3045  // WRITEME: Put the account next seq here
-
3046  }
-
3047  else
-
3048  {
-
3049  jvObj[jss::validated] = false;
-
3050  jvObj[jss::ledger_current_index] = ledger->info().seq;
-
3051  }
-
3052 
-
3053  jvObj[jss::status] = validated ? "closed" : "proposed";
-
3054  jvObj[jss::engine_result] = sToken;
-
3055  jvObj[jss::engine_result_code] = result;
-
3056  jvObj[jss::engine_result_message] = sHuman;
-
3057 
-
3058  if (transaction.getTxnType() == ttOFFER_CREATE)
-
3059  {
-
3060  auto const account = transaction.getAccountID(sfAccount);
-
3061  auto const amount = transaction.getFieldAmount(sfTakerGets);
-
3062 
-
3063  // If the offer create is not self funded then add the owner balance
-
3064  if (account != amount.issue().account)
-
3065  {
-
3066  auto const ownerFunds = accountFunds(
-
3067  *ledger,
-
3068  account,
-
3069  amount,
-
3070  fhIGNORE_FREEZE,
-
3071  app_.journal("View"));
-
3072  jvObj[jss::transaction][jss::owner_funds] = ownerFunds.getText();
-
3073  }
-
3074  }
-
3075 
-
3076  return jvObj;
-
3077 }
-
3078 
-
3079 void
-
3080 NetworkOPsImp::pubValidatedTransaction(
-
3081  std::shared_ptr<ReadView const> const& ledger,
-
3082  const AcceptedLedgerTx& transaction)
-
3083 {
-
3084  auto const& stTxn = transaction.getTxn();
-
3085 
-
3086  Json::Value jvObj =
-
3087  transJson(*stTxn, transaction.getResult(), true, ledger);
-
3088 
-
3089  {
-
3090  auto const& meta = transaction.getMeta();
-
3091  jvObj[jss::meta] = meta.getJson(JsonOptions::none);
-
3092  RPC::insertDeliveredAmount(jvObj[jss::meta], *ledger, stTxn, meta);
-
3093  }
-
3094 
-
3095  {
-
3096  std::lock_guard sl(mSubLock);
-
3097 
-
3098  auto it = mStreamMaps[sTransactions].begin();
-
3099  while (it != mStreamMaps[sTransactions].end())
-
3100  {
-
3101  InfoSub::pointer p = it->second.lock();
-
3102 
-
3103  if (p)
-
3104  {
-
3105  p->send(jvObj, true);
-
3106  ++it;
-
3107  }
-
3108  else
-
3109  it = mStreamMaps[sTransactions].erase(it);
-
3110  }
-
3111 
-
3112  it = mStreamMaps[sRTTransactions].begin();
-
3113 
-
3114  while (it != mStreamMaps[sRTTransactions].end())
-
3115  {
-
3116  InfoSub::pointer p = it->second.lock();
-
3117 
-
3118  if (p)
-
3119  {
-
3120  p->send(jvObj, true);
-
3121  ++it;
-
3122  }
-
3123  else
-
3124  it = mStreamMaps[sRTTransactions].erase(it);
-
3125  }
-
3126  }
-
3127 
-
3128  if (transaction.getResult() == tesSUCCESS)
-
3129  app_.getOrderBookDB().processTxn(ledger, transaction, jvObj);
-
3130 
-
3131  pubAccountTransaction(ledger, transaction);
-
3132 }
-
3133 
-
3134 void
-
3135 NetworkOPsImp::pubAccountTransaction(
-
3136  std::shared_ptr<ReadView const> const& ledger,
-
3137  AcceptedLedgerTx const& transaction)
-
3138 {
-
3139  hash_set<InfoSub::pointer> notify;
-
3140  int iProposed = 0;
-
3141  int iAccepted = 0;
-
3142 
-
3143  std::vector<SubAccountHistoryInfo> accountHistoryNotify;
-
3144  auto const currLedgerSeq = ledger->seq();
-
3145  {
-
3146  std::lock_guard sl(mSubLock);
-
3147 
-
3148  if (!mSubAccount.empty() || !mSubRTAccount.empty() ||
-
3149  !mSubAccountHistory.empty())
-
3150  {
-
3151  for (auto const& affectedAccount : transaction.getAffected())
-
3152  {
-
3153  if (auto simiIt = mSubRTAccount.find(affectedAccount);
-
3154  simiIt != mSubRTAccount.end())
-
3155  {
-
3156  auto it = simiIt->second.begin();
-
3157 
-
3158  while (it != simiIt->second.end())
-
3159  {
-
3160  InfoSub::pointer p = it->second.lock();
-
3161 
-
3162  if (p)
-
3163  {
-
3164  notify.insert(p);
-
3165  ++it;
-
3166  ++iProposed;
-
3167  }
-
3168  else
-
3169  it = simiIt->second.erase(it);
-
3170  }
-
3171  }
-
3172 
-
3173  if (auto simiIt = mSubAccount.find(affectedAccount);
-
3174  simiIt != mSubAccount.end())
-
3175  {
-
3176  auto it = simiIt->second.begin();
-
3177  while (it != simiIt->second.end())
-
3178  {
-
3179  InfoSub::pointer p = it->second.lock();
-
3180 
-
3181  if (p)
-
3182  {
-
3183  notify.insert(p);
-
3184  ++it;
-
3185  ++iAccepted;
-
3186  }
-
3187  else
-
3188  it = simiIt->second.erase(it);
-
3189  }
-
3190  }
-
3191 
-
3192  if (auto histoIt = mSubAccountHistory.find(affectedAccount);
-
3193  histoIt != mSubAccountHistory.end())
-
3194  {
-
3195  auto& subs = histoIt->second;
-
3196  auto it = subs.begin();
-
3197  while (it != subs.end())
-
3198  {
-
3199  SubAccountHistoryInfoWeak const& info = it->second;
-
3200  if (currLedgerSeq <= info.index_->separationLedgerSeq_)
-
3201  {
-
3202  ++it;
-
3203  continue;
-
3204  }
-
3205 
-
3206  if (auto isSptr = info.sinkWptr_.lock(); isSptr)
-
3207  {
-
3208  accountHistoryNotify.emplace_back(
-
3209  SubAccountHistoryInfo{isSptr, info.index_});
-
3210  ++it;
-
3211  }
-
3212  else
-
3213  {
-
3214  it = subs.erase(it);
-
3215  }
-
3216  }
-
3217  if (subs.empty())
-
3218  mSubAccountHistory.erase(histoIt);
-
3219  }
-
3220  }
-
3221  }
-
3222  }
-
3223 
-
3224  JLOG(m_journal.trace())
-
3225  << "pubAccountTransaction: "
-
3226  << "proposed=" << iProposed << ", accepted=" << iAccepted;
-
3227 
-
3228  if (!notify.empty() || !accountHistoryNotify.empty())
-
3229  {
-
3230  auto const& stTxn = transaction.getTxn();
-
3231 
-
3232  Json::Value jvObj =
-
3233  transJson(*stTxn, transaction.getResult(), true, ledger);
-
3234 
-
3235  {
-
3236  auto const& meta = transaction.getMeta();
-
3237 
-
3238  jvObj[jss::meta] = meta.getJson(JsonOptions::none);
-
3239  RPC::insertDeliveredAmount(jvObj[jss::meta], *ledger, stTxn, meta);
-
3240  }
-
3241 
-
3242  for (InfoSub::ref isrListener : notify)
-
3243  isrListener->send(jvObj, true);
-
3244 
-
3245  assert(!jvObj.isMember(jss::account_history_tx_stream));
-
3246  for (auto& info : accountHistoryNotify)
-
3247  {
-
3248  auto& index = info.index_;
-
3249  if (index->forwardTxIndex_ == 0 && !index->haveHistorical_)
-
3250  jvObj[jss::account_history_tx_first] = true;
-
3251  jvObj[jss::account_history_tx_index] = index->forwardTxIndex_++;
-
3252  info.sink_->send(jvObj, true);
-
3253  }
-
3254  }
-
3255 }
-
3256 
-
3257 void
-
3258 NetworkOPsImp::pubProposedAccountTransaction(
-
3259  std::shared_ptr<ReadView const> const& ledger,
-
3260  std::shared_ptr<STTx const> const& tx,
-
3261  TER result)
-
3262 {
-
3263  hash_set<InfoSub::pointer> notify;
-
3264  int iProposed = 0;
-
3265 
-
3266  std::vector<SubAccountHistoryInfo> accountHistoryNotify;
-
3267 
-
3268  {
-
3269  std::lock_guard sl(mSubLock);
-
3270 
-
3271  if (mSubRTAccount.empty())
-
3272  return;
-
3273 
-
3274  if (!mSubAccount.empty() || !mSubRTAccount.empty() ||
-
3275  !mSubAccountHistory.empty())
-
3276  {
-
3277  for (auto const& affectedAccount : tx->getMentionedAccounts())
-
3278  {
-
3279  if (auto simiIt = mSubRTAccount.find(affectedAccount);
-
3280  simiIt != mSubRTAccount.end())
-
3281  {
-
3282  auto it = simiIt->second.begin();
-
3283 
-
3284  while (it != simiIt->second.end())
-
3285  {
-
3286  InfoSub::pointer p = it->second.lock();
-
3287 
-
3288  if (p)
-
3289  {
-
3290  notify.insert(p);
-
3291  ++it;
-
3292  ++iProposed;
-
3293  }
-
3294  else
-
3295  it = simiIt->second.erase(it);
-
3296  }
-
3297  }
-
3298  }
-
3299  }
-
3300  }
-
3301 
-
3302  JLOG(m_journal.trace()) << "pubProposedAccountTransaction: " << iProposed;
-
3303 
-
3304  if (!notify.empty() || !accountHistoryNotify.empty())
-
3305  {
-
3306  Json::Value jvObj = transJson(*tx, result, false, ledger);
-
3307 
-
3308  for (InfoSub::ref isrListener : notify)
-
3309  isrListener->send(jvObj, true);
-
3310 
-
3311  assert(!jvObj.isMember(jss::account_history_tx_stream));
-
3312  for (auto& info : accountHistoryNotify)
-
3313  {
-
3314  auto& index = info.index_;
-
3315  if (index->forwardTxIndex_ == 0 && !index->haveHistorical_)
-
3316  jvObj[jss::account_history_tx_first] = true;
-
3317  jvObj[jss::account_history_tx_index] = index->forwardTxIndex_++;
-
3318  info.sink_->send(jvObj, true);
-
3319  }
-
3320  }
-
3321 }
-
3322 
-
3323 //
-
3324 // Monitoring
-
3325 //
-
3326 
-
3327 void
-
3328 NetworkOPsImp::subAccount(
-
3329  InfoSub::ref isrListener,
-
3330  hash_set<AccountID> const& vnaAccountIDs,
-
3331  bool rt)
-
3332 {
-
3333  SubInfoMapType& subMap = rt ? mSubRTAccount : mSubAccount;
-
3334 
-
3335  for (auto const& naAccountID : vnaAccountIDs)
-
3336  {
-
3337  JLOG(m_journal.trace())
-
3338  << "subAccount: account: " << toBase58(naAccountID);
-
3339 
-
3340  isrListener->insertSubAccountInfo(naAccountID, rt);
-
3341  }
-
3342 
-
3343  std::lock_guard sl(mSubLock);
-
3344 
-
3345  for (auto const& naAccountID : vnaAccountIDs)
-
3346  {
-
3347  auto simIterator = subMap.find(naAccountID);
-
3348  if (simIterator == subMap.end())
-
3349  {
-
3350  // Not found, note that account has a new single listner.
-
3351  SubMapType usisElement;
-
3352  usisElement[isrListener->getSeq()] = isrListener;
-
3353  // VFALCO NOTE This is making a needless copy of naAccountID
-
3354  subMap.insert(simIterator, make_pair(naAccountID, usisElement));
-
3355  }
-
3356  else
-
3357  {
-
3358  // Found, note that the account has another listener.
-
3359  simIterator->second[isrListener->getSeq()] = isrListener;
-
3360  }
-
3361  }
-
3362 }
-
3363 
-
3364 void
-
3365 NetworkOPsImp::unsubAccount(
-
3366  InfoSub::ref isrListener,
-
3367  hash_set<AccountID> const& vnaAccountIDs,
-
3368  bool rt)
-
3369 {
-
3370  for (auto const& naAccountID : vnaAccountIDs)
-
3371  {
-
3372  // Remove from the InfoSub
-
3373  isrListener->deleteSubAccountInfo(naAccountID, rt);
-
3374  }
-
3375 
-
3376  // Remove from the server
-
3377  unsubAccountInternal(isrListener->getSeq(), vnaAccountIDs, rt);
-
3378 }
-
3379 
-
3380 void
-
3381 NetworkOPsImp::unsubAccountInternal(
-
3382  std::uint64_t uSeq,
-
3383  hash_set<AccountID> const& vnaAccountIDs,
-
3384  bool rt)
-
3385 {
-
3386  std::lock_guard sl(mSubLock);
-
3387 
-
3388  SubInfoMapType& subMap = rt ? mSubRTAccount : mSubAccount;
-
3389 
-
3390  for (auto const& naAccountID : vnaAccountIDs)
-
3391  {
-
3392  auto simIterator = subMap.find(naAccountID);
-
3393 
-
3394  if (simIterator != subMap.end())
-
3395  {
-
3396  // Found
-
3397  simIterator->second.erase(uSeq);
-
3398 
-
3399  if (simIterator->second.empty())
-
3400  {
-
3401  // Don't need hash entry.
-
3402  subMap.erase(simIterator);
-
3403  }
-
3404  }
-
3405  }
-
3406 }
-
3407 
-
3408 void
-
3409 NetworkOPsImp::addAccountHistoryJob(SubAccountHistoryInfoWeak subInfo)
-
3410 {
-
3411  enum DatabaseType { Postgres, Sqlite, None };
-
3412  static const auto databaseType = [&]() -> DatabaseType {
-
3413 #ifdef RIPPLED_REPORTING
-
3414  if (app_.config().reporting())
-
3415  {
-
3416  // Use a dynamic_cast to return DatabaseType::None
-
3417  // on failure.
-
3418  if (dynamic_cast<PostgresDatabase*>(&app_.getRelationalDatabase()))
-
3419  {
-
3420  return DatabaseType::Postgres;
-
3421  }
-
3422  return DatabaseType::None;
-
3423  }
-
3424  else
-
3425  {
-
3426  // Use a dynamic_cast to return DatabaseType::None
-
3427  // on failure.
-
3428  if (dynamic_cast<SQLiteDatabase*>(&app_.getRelationalDatabase()))
-
3429  {
-
3430  return DatabaseType::Sqlite;
-
3431  }
-
3432  return DatabaseType::None;
-
3433  }
-
3434 #else
-
3435  // Use a dynamic_cast to return DatabaseType::None
-
3436  // on failure.
-
3437  if (dynamic_cast<SQLiteDatabase*>(&app_.getRelationalDatabase()))
-
3438  {
-
3439  return DatabaseType::Sqlite;
-
3440  }
-
3441  return DatabaseType::None;
-
3442 #endif
-
3443  }();
-
3444 
-
3445  if (databaseType == DatabaseType::None)
-
3446  {
-
3447  JLOG(m_journal.error())
-
3448  << "AccountHistory job for account "
-
3449  << toBase58(subInfo.index_->accountId_) << " no database";
-
3450  if (auto sptr = subInfo.sinkWptr_.lock(); sptr)
-
3451  {
-
3452  sptr->send(rpcError(rpcINTERNAL), true);
-
3453  unsubAccountHistory(sptr, subInfo.index_->accountId_, false);
-
3454  }
-
3455  return;
-
3456  }
-
3457 
-
3458  app_.getJobQueue().addJob(
-
3459  jtCLIENT_ACCT_HIST,
-
3460  "AccountHistoryTxStream",
-
3461  [this, dbType = databaseType, subInfo]() {
-
3462  auto const& accountId = subInfo.index_->accountId_;
-
3463  auto& lastLedgerSeq = subInfo.index_->historyLastLedgerSeq_;
-
3464  auto& txHistoryIndex = subInfo.index_->historyTxIndex_;
-
3465 
-
3466  JLOG(m_journal.trace())
-
3467  << "AccountHistory job for account " << toBase58(accountId)
-
3468  << " started. lastLedgerSeq=" << lastLedgerSeq;
-
3469 
-
3470  auto isFirstTx = [&](std::shared_ptr<Transaction> const& tx,
-
3471  std::shared_ptr<TxMeta> const& meta) -> bool {
-
3472  /*
-
3473  * genesis account: first tx is the one with seq 1
-
3474  * other account: first tx is the one created the account
-
3475  */
-
3476  if (accountId == genesisAccountId)
-
3477  {
-
3478  auto stx = tx->getSTransaction();
-
3479  if (stx->getAccountID(sfAccount) == accountId &&
-
3480  stx->getSeqProxy().value() == 1)
-
3481  return true;
-
3482  }
-
3483 
-
3484  for (auto& node : meta->getNodes())
-
3485  {
-
3486  if (node.getFieldU16(sfLedgerEntryType) != ltACCOUNT_ROOT)
-
3487  continue;
-
3488 
-
3489  if (node.isFieldPresent(sfNewFields))
-
3490  {
-
3491  if (auto inner = dynamic_cast<const STObject*>(
-
3492  node.peekAtPField(sfNewFields));
-
3493  inner)
-
3494  {
-
3495  if (inner->isFieldPresent(sfAccount) &&
-
3496  inner->getAccountID(sfAccount) == accountId)
-
3497  {
-
3498  return true;
-
3499  }
-
3500  }
-
3501  }
-
3502  }
-
3503 
-
3504  return false;
-
3505  };
-
3506 
-
3507  auto send = [&](Json::Value const& jvObj,
-
3508  bool unsubscribe) -> bool {
-
3509  if (auto sptr = subInfo.sinkWptr_.lock(); sptr)
-
3510  {
-
3511  sptr->send(jvObj, true);
-
3512  if (unsubscribe)
-
3513  unsubAccountHistory(sptr, accountId, false);
-
3514  return true;
-
3515  }
-
3516 
-
3517  return false;
-
3518  };
-
3519 
-
3520  auto getMoreTxns =
-
3521  [&](std::uint32_t minLedger,
-
3522  std::uint32_t maxLedger,
-
3523  std::optional<RelationalDatabase::AccountTxMarker> marker)
-
3524  -> std::optional<std::pair<
-
3525  RelationalDatabase::AccountTxs,
-
3526  std::optional<RelationalDatabase::AccountTxMarker>>> {
-
3527  switch (dbType)
-
3528  {
-
3529  case Postgres: {
-
3530  auto db = static_cast<PostgresDatabase*>(
-
3531  &app_.getRelationalDatabase());
-
3532  RelationalDatabase::AccountTxArgs args;
-
3533  args.account = accountId;
-
3534  LedgerRange range{minLedger, maxLedger};
-
3535  args.ledger = range;
-
3536  args.marker = marker;
-
3537  auto [txResult, status] = db->getAccountTx(args);
-
3538  if (status != rpcSUCCESS)
-
3539  {
-
3540  JLOG(m_journal.debug())
-
3541  << "AccountHistory job for account "
-
3542  << toBase58(accountId)
-
3543  << " getAccountTx failed";
-
3544  return {};
-
3545  }
-
3546 
-
3547  if (auto txns =
-
3548  std::get_if<RelationalDatabase::AccountTxs>(
-
3549  &txResult.transactions);
-
3550  txns)
-
3551  {
-
3552  return std::make_pair(*txns, txResult.marker);
-
3553  }
-
3554  else
-
3555  {
-
3556  JLOG(m_journal.debug())
-
3557  << "AccountHistory job for account "
-
3558  << toBase58(accountId)
-
3559  << " getAccountTx wrong data";
-
3560  return {};
-
3561  }
-
3562  }
-
3563  case Sqlite: {
-
3564  auto db = static_cast<SQLiteDatabase*>(
-
3565  &app_.getRelationalDatabase());
-
3566  RelationalDatabase::AccountTxPageOptions options{
-
3567  accountId, minLedger, maxLedger, marker, 0, true};
-
3568  return db->newestAccountTxPage(options);
-
3569  }
-
3570  default: {
-
3571  assert(false);
-
3572  return {};
-
3573  }
-
3574  }
-
3575  };
-
3576 
-
3577  /*
-
3578  * search backward until the genesis ledger or asked to stop
-
3579  */
-
3580  while (lastLedgerSeq >= 2 && !subInfo.index_->stopHistorical_)
-
3581  {
-
3582  int feeChargeCount = 0;
-
3583  if (auto sptr = subInfo.sinkWptr_.lock(); sptr)
-
3584  {
-
3585  sptr->getConsumer().charge(Resource::feeMediumBurdenRPC);
-
3586  ++feeChargeCount;
-
3587  }
-
3588  else
-
3589  {
-
3590  JLOG(m_journal.trace())
-
3591  << "AccountHistory job for account "
-
3592  << toBase58(accountId) << " no InfoSub. Fee charged "
-
3593  << feeChargeCount << " times.";
-
3594  return;
-
3595  }
-
3596 
-
3597  // try to search in 1024 ledgers till reaching genesis ledgers
-
3598  auto startLedgerSeq =
-
3599  (lastLedgerSeq > 1024 + 2 ? lastLedgerSeq - 1024 : 2);
-
3600  JLOG(m_journal.trace())
-
3601  << "AccountHistory job for account " << toBase58(accountId)
-
3602  << ", working on ledger range [" << startLedgerSeq << ","
-
3603  << lastLedgerSeq << "]";
-
3604 
-
3605  auto haveRange = [&]() -> bool {
-
3606  std::uint32_t validatedMin = UINT_MAX;
-
3607  std::uint32_t validatedMax = 0;
-
3608  auto haveSomeValidatedLedgers =
-
3609  app_.getLedgerMaster().getValidatedRange(
-
3610  validatedMin, validatedMax);
-
3611 
-
3612  return haveSomeValidatedLedgers &&
-
3613  validatedMin <= startLedgerSeq &&
-
3614  lastLedgerSeq <= validatedMax;
-
3615  }();
-
3616 
-
3617  if (!haveRange)
-
3618  {
-
3619  JLOG(m_journal.debug())
-
3620  << "AccountHistory reschedule job for account "
-
3621  << toBase58(accountId) << ", incomplete ledger range ["
-
3622  << startLedgerSeq << "," << lastLedgerSeq << "]";
-
3623  setAccountHistoryJobTimer(subInfo);
-
3624  return;
-
3625  }
-
3626 
-
3627  std::optional<RelationalDatabase::AccountTxMarker> marker{};
-
3628  while (!subInfo.index_->stopHistorical_)
-
3629  {
-
3630  auto dbResult =
-
3631  getMoreTxns(startLedgerSeq, lastLedgerSeq, marker);
-
3632  if (!dbResult)
-
3633  {
-
3634  JLOG(m_journal.debug())
-
3635  << "AccountHistory job for account "
-
3636  << toBase58(accountId) << " getMoreTxns failed.";
-
3637  send(rpcError(rpcINTERNAL), true);
-
3638  return;
-
3639  }
-
3640 
-
3641  auto const& txns = dbResult->first;
-
3642  marker = dbResult->second;
-
3643  for (auto const& [tx, meta] : txns)
-
3644  {
-
3645  if (!tx || !meta)
-
3646  {
-
3647  JLOG(m_journal.debug())
-
3648  << "AccountHistory job for account "
-
3649  << toBase58(accountId) << " empty tx or meta.";
-
3650  send(rpcError(rpcINTERNAL), true);
-
3651  return;
-
3652  }
-
3653  auto curTxLedger =
-
3654  app_.getLedgerMaster().getLedgerBySeq(
-
3655  tx->getLedger());
-
3656  if (!curTxLedger)
-
3657  {
-
3658  JLOG(m_journal.debug())
-
3659  << "AccountHistory job for account "
-
3660  << toBase58(accountId) << " no ledger.";
-
3661  send(rpcError(rpcINTERNAL), true);
-
3662  return;
-
3663  }
-
3664  std::shared_ptr<STTx const> stTxn =
-
3665  tx->getSTransaction();
-
3666  if (!stTxn)
-
3667  {
-
3668  JLOG(m_journal.debug())
-
3669  << "AccountHistory job for account "
-
3670  << toBase58(accountId)
-
3671  << " getSTransaction failed.";
-
3672  send(rpcError(rpcINTERNAL), true);
-
3673  return;
-
3674  }
-
3675  Json::Value jvTx = transJson(
-
3676  *stTxn, meta->getResultTER(), true, curTxLedger);
-
3677  jvTx[jss::meta] = meta->getJson(JsonOptions::none);
-
3678  jvTx[jss::account_history_tx_index] = txHistoryIndex--;
-
3679  RPC::insertDeliveredAmount(
-
3680  jvTx[jss::meta], *curTxLedger, stTxn, *meta);
-
3681  if (isFirstTx(tx, meta))
-
3682  {
-
3683  jvTx[jss::account_history_tx_first] = true;
-
3684  send(jvTx, false);
-
3685 
-
3686  JLOG(m_journal.trace())
-
3687  << "AccountHistory job for account "
-
3688  << toBase58(accountId)
-
3689  << " done, found last tx.";
-
3690  return;
-
3691  }
-
3692  else
-
3693  {
-
3694  send(jvTx, false);
-
3695  }
-
3696  }
-
3697 
-
3698  if (marker)
-
3699  {
-
3700  JLOG(m_journal.trace())
-
3701  << "AccountHistory job for account "
-
3702  << toBase58(accountId)
-
3703  << " paging, marker=" << marker->ledgerSeq << ":"
-
3704  << marker->txnSeq;
-
3705  }
-
3706  else
-
3707  {
-
3708  break;
-
3709  }
-
3710  }
-
3711 
-
3712  if (!subInfo.index_->stopHistorical_)
-
3713  {
-
3714  lastLedgerSeq = startLedgerSeq - 1;
-
3715  if (lastLedgerSeq <= 1)
-
3716  {
-
3717  JLOG(m_journal.trace())
-
3718  << "AccountHistory job for account "
-
3719  << toBase58(accountId)
-
3720  << " done, reached genesis ledger.";
-
3721  return;
-
3722  }
-
3723  }
-
3724  }
-
3725  });
-
3726 }
-
3727 
-
3728 void
-
3729 NetworkOPsImp::subAccountHistoryStart(
-
3730  std::shared_ptr<ReadView const> const& ledger,
-
3731  SubAccountHistoryInfoWeak& subInfo)
-
3732 {
-
3733  subInfo.index_->separationLedgerSeq_ = ledger->seq();
-
3734  auto const& accountId = subInfo.index_->accountId_;
-
3735  auto const accountKeylet = keylet::account(accountId);
-
3736  if (!ledger->exists(accountKeylet))
-
3737  {
-
3738  JLOG(m_journal.debug())
-
3739  << "subAccountHistoryStart, no account " << toBase58(accountId)
-
3740  << ", no need to add AccountHistory job.";
-
3741  return;
-
3742  }
-
3743  if (accountId == genesisAccountId)
-
3744  {
-
3745  if (auto const sleAcct = ledger->read(accountKeylet); sleAcct)
-
3746  {
-
3747  if (sleAcct->getFieldU32(sfSequence) == 1)
-
3748  {
-
3749  JLOG(m_journal.debug())
-
3750  << "subAccountHistoryStart, genesis account "
-
3751  << toBase58(accountId)
-
3752  << " does not have tx, no need to add AccountHistory job.";
-
3753  return;
-
3754  }
-
3755  }
-
3756  else
-
3757  {
-
3758  assert(false);
-
3759  return;
-
3760  }
-
3761  }
-
3762  subInfo.index_->historyLastLedgerSeq_ = ledger->seq();
-
3763  subInfo.index_->haveHistorical_ = true;
-
3764 
-
3765  JLOG(m_journal.debug())
-
3766  << "subAccountHistoryStart, add AccountHistory job: accountId="
-
3767  << toBase58(accountId) << ", currentLedgerSeq=" << ledger->seq();
-
3768 
-
3769  addAccountHistoryJob(subInfo);
-
3770 }
-
3771 
-
3772 error_code_i
-
3773 NetworkOPsImp::subAccountHistory(
-
3774  InfoSub::ref isrListener,
-
3775  AccountID const& accountId)
-
3776 {
-
3777  if (!isrListener->insertSubAccountHistory(accountId))
-
3778  {
-
3779  JLOG(m_journal.debug())
-
3780  << "subAccountHistory, already subscribed to account "
-
3781  << toBase58(accountId);
-
3782  return rpcINVALID_PARAMS;
-
3783  }
-
3784 
-
3785  std::lock_guard sl(mSubLock);
-
3786  SubAccountHistoryInfoWeak ahi{
-
3787  isrListener, std::make_shared<SubAccountHistoryIndex>(accountId)};
-
3788  auto simIterator = mSubAccountHistory.find(accountId);
-
3789  if (simIterator == mSubAccountHistory.end())
-
3790  {
-
3791  hash_map<std::uint64_t, SubAccountHistoryInfoWeak> inner;
-
3792  inner.emplace(isrListener->getSeq(), ahi);
-
3793  mSubAccountHistory.insert(
-
3794  simIterator, std::make_pair(accountId, inner));
-
3795  }
-
3796  else
-
3797  {
-
3798  simIterator->second.emplace(isrListener->getSeq(), ahi);
-
3799  }
-
3800 
-
3801  auto const ledger = app_.getLedgerMaster().getValidatedLedger();
-
3802  if (ledger)
-
3803  {
-
3804  subAccountHistoryStart(ledger, ahi);
-
3805  }
-
3806  else
-
3807  {
-
3808  // The node does not have validated ledgers, so wait for
-
3809  // one before start streaming.
-
3810  // In this case, the subscription is also considered successful.
-
3811  JLOG(m_journal.debug())
-
3812  << "subAccountHistory, no validated ledger yet, delay start";
-
3813  }
-
3814 
-
3815  return rpcSUCCESS;
-
3816 }
-
3817 
-
3818 void
-
3819 NetworkOPsImp::unsubAccountHistory(
-
3820  InfoSub::ref isrListener,
-
3821  AccountID const& account,
-
3822  bool historyOnly)
-
3823 {
-
3824  if (!historyOnly)
-
3825  isrListener->deleteSubAccountHistory(account);
-
3826  unsubAccountHistoryInternal(isrListener->getSeq(), account, historyOnly);
-
3827 }
-
3828 
-
3829 void
-
3830 NetworkOPsImp::unsubAccountHistoryInternal(
-
3831  std::uint64_t seq,
-
3832  const AccountID& account,
-
3833  bool historyOnly)
-
3834 {
-
3835  std::lock_guard sl(mSubLock);
-
3836  auto simIterator = mSubAccountHistory.find(account);
-
3837  if (simIterator != mSubAccountHistory.end())
-
3838  {
-
3839  auto& subInfoMap = simIterator->second;
-
3840  auto subInfoIter = subInfoMap.find(seq);
-
3841  if (subInfoIter != subInfoMap.end())
-
3842  {
-
3843  subInfoIter->second.index_->stopHistorical_ = true;
-
3844  }
-
3845 
-
3846  if (!historyOnly)
-
3847  {
-
3848  simIterator->second.erase(seq);
-
3849  if (simIterator->second.empty())
-
3850  {
-
3851  mSubAccountHistory.erase(simIterator);
-
3852  }
-
3853  }
-
3854  JLOG(m_journal.debug())
-
3855  << "unsubAccountHistory, account " << toBase58(account)
-
3856  << ", historyOnly = " << (historyOnly ? "true" : "false");
-
3857  }
-
3858 }
-
3859 
-
3860 bool
-
3861 NetworkOPsImp::subBook(InfoSub::ref isrListener, Book const& book)
-
3862 {
-
3863  if (auto listeners = app_.getOrderBookDB().makeBookListeners(book))
-
3864  listeners->addSubscriber(isrListener);
-
3865  else
-
3866  assert(false);
-
3867  return true;
-
3868 }
-
3869 
-
3870 bool
-
3871 NetworkOPsImp::unsubBook(std::uint64_t uSeq, Book const& book)
-
3872 {
-
3873  if (auto listeners = app_.getOrderBookDB().getBookListeners(book))
-
3874  listeners->removeSubscriber(uSeq);
-
3875 
-
3876  return true;
-
3877 }
-
3878 
-
3879 std::uint32_t
-
3880 NetworkOPsImp::acceptLedger(
-
3881  std::optional<std::chrono::milliseconds> consensusDelay)
-
3882 {
-
3883  // This code-path is exclusively used when the server is in standalone
-
3884  // mode via `ledger_accept`
-
3885  assert(m_standalone);
-
3886 
-
3887  if (!m_standalone)
-
3888  Throw<std::runtime_error>(
-
3889  "Operation only possible in STANDALONE mode.");
-
3890 
-
3891  // FIXME Could we improve on this and remove the need for a specialized
-
3892  // API in Consensus?
-
3893  beginConsensus(m_ledgerMaster.getClosedLedger()->info().hash);
-
3894  mConsensus.simulate(app_.timeKeeper().closeTime(), consensusDelay);
-
3895  return m_ledgerMaster.getCurrentLedger()->info().seq;
-
3896 }
-
3897 
-
3898 // <-- bool: true=added, false=already there
-
3899 bool
-
3900 NetworkOPsImp::subLedger(InfoSub::ref isrListener, Json::Value& jvResult)
-
3901 {
-
3902  if (auto lpClosed = m_ledgerMaster.getValidatedLedger())
-
3903  {
-
3904  jvResult[jss::ledger_index] = lpClosed->info().seq;
-
3905  jvResult[jss::ledger_hash] = to_string(lpClosed->info().hash);
-
3906  jvResult[jss::ledger_time] = Json::Value::UInt(
-
3907  lpClosed->info().closeTime.time_since_epoch().count());
-
3908  if (!lpClosed->rules().enabled(featureXRPFees))
-
3909  jvResult[jss::fee_ref] = Config::FEE_UNITS_DEPRECATED;
-
3910  jvResult[jss::fee_base] = lpClosed->fees().base.jsonClipped();
-
3911  jvResult[jss::reserve_base] =
-
3912  lpClosed->fees().accountReserve(0).jsonClipped();
-
3913  jvResult[jss::reserve_inc] = lpClosed->fees().increment.jsonClipped();
-
3914  }
-
3915 
-
3916  if ((mMode >= OperatingMode::SYNCING) && !isNeedNetworkLedger())
-
3917  {
-
3918  jvResult[jss::validated_ledgers] =
-
3919  app_.getLedgerMaster().getCompleteLedgers();
-
3920  }
-
3921 
-
3922  std::lock_guard sl(mSubLock);
-
3923  return mStreamMaps[sLedger]
-
3924  .emplace(isrListener->getSeq(), isrListener)
-
3925  .second;
-
3926 }
-
3927 
-
3928 // <-- bool: true=added, false=already there
-
3929 bool
-
3930 NetworkOPsImp::subBookChanges(InfoSub::ref isrListener)
-
3931 {
-
3932  std::lock_guard sl(mSubLock);
-
3933  return mStreamMaps[sBookChanges]
-
3934  .emplace(isrListener->getSeq(), isrListener)
-
3935  .second;
-
3936 }
-
3937 
-
3938 // <-- bool: true=erased, false=was not there
-
3939 bool
-
3940 NetworkOPsImp::unsubLedger(std::uint64_t uSeq)
-
3941 {
-
3942  std::lock_guard sl(mSubLock);
-
3943  return mStreamMaps[sLedger].erase(uSeq);
-
3944 }
-
3945 
-
3946 // <-- bool: true=erased, false=was not there
-
3947 bool
-
3948 NetworkOPsImp::unsubBookChanges(std::uint64_t uSeq)
-
3949 {
-
3950  std::lock_guard sl(mSubLock);
-
3951  return mStreamMaps[sBookChanges].erase(uSeq);
-
3952 }
-
3953 
-
3954 // <-- bool: true=added, false=already there
-
3955 bool
-
3956 NetworkOPsImp::subManifests(InfoSub::ref isrListener)
-
3957 {
-
3958  std::lock_guard sl(mSubLock);
-
3959  return mStreamMaps[sManifests]
-
3960  .emplace(isrListener->getSeq(), isrListener)
-
3961  .second;
-
3962 }
-
3963 
-
3964 // <-- bool: true=erased, false=was not there
-
3965 bool
-
3966 NetworkOPsImp::unsubManifests(std::uint64_t uSeq)
-
3967 {
-
3968  std::lock_guard sl(mSubLock);
-
3969  return mStreamMaps[sManifests].erase(uSeq);
-
3970 }
-
3971 
-
3972 // <-- bool: true=added, false=already there
-
3973 bool
-
3974 NetworkOPsImp::subServer(
-
3975  InfoSub::ref isrListener,
-
3976  Json::Value& jvResult,
-
3977  bool admin)
-
3978 {
-
3979  uint256 uRandom;
-
3980 
-
3981  if (m_standalone)
-
3982  jvResult[jss::stand_alone] = m_standalone;
-
3983 
-
3984  // CHECKME: is it necessary to provide a random number here?
-
3985  beast::rngfill(uRandom.begin(), uRandom.size(), crypto_prng());
-
3986 
-
3987  auto const& feeTrack = app_.getFeeTrack();
-
3988  jvResult[jss::random] = to_string(uRandom);
-
3989  jvResult[jss::server_status] = strOperatingMode(admin);
-
3990  jvResult[jss::load_base] = feeTrack.getLoadBase();
-
3991  jvResult[jss::load_factor] = feeTrack.getLoadFactor();
-
3992  jvResult[jss::hostid] = getHostId(admin);
-
3993  jvResult[jss::pubkey_node] =
-
3994  toBase58(TokenType::NodePublic, app_.nodeIdentity().first);
-
3995 
-
3996  std::lock_guard sl(mSubLock);
-
3997  return mStreamMaps[sServer]
-
3998  .emplace(isrListener->getSeq(), isrListener)
-
3999  .second;
-
4000 }
-
4001 
-
4002 // <-- bool: true=erased, false=was not there
-
4003 bool
-
4004 NetworkOPsImp::unsubServer(std::uint64_t uSeq)
-
4005 {
-
4006  std::lock_guard sl(mSubLock);
-
4007  return mStreamMaps[sServer].erase(uSeq);
-
4008 }
-
4009 
-
4010 // <-- bool: true=added, false=already there
-
4011 bool
-
4012 NetworkOPsImp::subTransactions(InfoSub::ref isrListener)
-
4013 {
-
4014  std::lock_guard sl(mSubLock);
-
4015  return mStreamMaps[sTransactions]
-
4016  .emplace(isrListener->getSeq(), isrListener)
-
4017  .second;
-
4018 }
-
4019 
-
4020 // <-- bool: true=erased, false=was not there
-
4021 bool
-
4022 NetworkOPsImp::unsubTransactions(std::uint64_t uSeq)
-
4023 {
-
4024  std::lock_guard sl(mSubLock);
-
4025  return mStreamMaps[sTransactions].erase(uSeq);
-
4026 }
-
4027 
-
4028 // <-- bool: true=added, false=already there
-
4029 bool
-
4030 NetworkOPsImp::subRTTransactions(InfoSub::ref isrListener)
-
4031 {
-
4032  std::lock_guard sl(mSubLock);
-
4033  return mStreamMaps[sRTTransactions]
-
4034  .emplace(isrListener->getSeq(), isrListener)
-
4035  .second;
-
4036 }
-
4037 
-
4038 // <-- bool: true=erased, false=was not there
-
4039 bool
-
4040 NetworkOPsImp::unsubRTTransactions(std::uint64_t uSeq)
-
4041 {
-
4042  std::lock_guard sl(mSubLock);
-
4043  return mStreamMaps[sRTTransactions].erase(uSeq);
-
4044 }
-
4045 
-
4046 // <-- bool: true=added, false=already there
-
4047 bool
-
4048 NetworkOPsImp::subValidations(InfoSub::ref isrListener)
-
4049 {
-
4050  std::lock_guard sl(mSubLock);
-
4051  return mStreamMaps[sValidations]
-
4052  .emplace(isrListener->getSeq(), isrListener)
-
4053  .second;
-
4054 }
-
4055 
-
4056 void
-
4057 NetworkOPsImp::stateAccounting(Json::Value& obj)
-
4058 {
-
4059  accounting_.json(obj);
-
4060 }
-
4061 
-
4062 // <-- bool: true=erased, false=was not there
-
4063 bool
-
4064 NetworkOPsImp::unsubValidations(std::uint64_t uSeq)
-
4065 {
-
4066  std::lock_guard sl(mSubLock);
-
4067  return mStreamMaps[sValidations].erase(uSeq);
-
4068 }
-
4069 
-
4070 // <-- bool: true=added, false=already there
-
4071 bool
-
4072 NetworkOPsImp::subPeerStatus(InfoSub::ref isrListener)
-
4073 {
-
4074  std::lock_guard sl(mSubLock);
-
4075  return mStreamMaps[sPeerStatus]
-
4076  .emplace(isrListener->getSeq(), isrListener)
-
4077  .second;
-
4078 }
-
4079 
-
4080 // <-- bool: true=erased, false=was not there
-
4081 bool
-
4082 NetworkOPsImp::unsubPeerStatus(std::uint64_t uSeq)
-
4083 {
-
4084  std::lock_guard sl(mSubLock);
-
4085  return mStreamMaps[sPeerStatus].erase(uSeq);
-
4086 }
-
4087 
-
4088 // <-- bool: true=added, false=already there
-
4089 bool
-
4090 NetworkOPsImp::subConsensus(InfoSub::ref isrListener)
-
4091 {
-
4092  std::lock_guard sl(mSubLock);
-
4093  return mStreamMaps[sConsensusPhase]
-
4094  .emplace(isrListener->getSeq(), isrListener)
-
4095  .second;
-
4096 }
-
4097 
-
4098 // <-- bool: true=erased, false=was not there
-
4099 bool
-
4100 NetworkOPsImp::unsubConsensus(std::uint64_t uSeq)
-
4101 {
-
4102  std::lock_guard sl(mSubLock);
-
4103  return mStreamMaps[sConsensusPhase].erase(uSeq);
-
4104 }
-
4105 
-
4106 InfoSub::pointer
-
4107 NetworkOPsImp::findRpcSub(std::string const& strUrl)
-
4108 {
-
4109  std::lock_guard sl(mSubLock);
-
4110 
-
4111  subRpcMapType::iterator it = mRpcSubMap.find(strUrl);
-
4112 
-
4113  if (it != mRpcSubMap.end())
-
4114  return it->second;
-
4115 
-
4116  return InfoSub::pointer();
-
4117 }
-
4118 
-
4119 InfoSub::pointer
-
4120 NetworkOPsImp::addRpcSub(std::string const& strUrl, InfoSub::ref rspEntry)
-
4121 {
-
4122  std::lock_guard sl(mSubLock);
-
4123 
-
4124  mRpcSubMap.emplace(strUrl, rspEntry);
-
4125 
-
4126  return rspEntry;
-
4127 }
-
4128 
-
4129 bool
-
4130 NetworkOPsImp::tryRemoveRpcSub(std::string const& strUrl)
-
4131 {
-
4132  std::lock_guard sl(mSubLock);
-
4133  auto pInfo = findRpcSub(strUrl);
-
4134 
-
4135  if (!pInfo)
-
4136  return false;
-
4137 
-
4138  // check to see if any of the stream maps still hold a weak reference to
-
4139  // this entry before removing
-
4140  for (SubMapType const& map : mStreamMaps)
-
4141  {
-
4142  if (map.find(pInfo->getSeq()) != map.end())
-
4143  return false;
-
4144  }
-
4145  mRpcSubMap.erase(strUrl);
-
4146  return true;
-
4147 }
-
4148 
-
4149 #ifndef USE_NEW_BOOK_PAGE
-
4150 
-
4151 // NIKB FIXME this should be looked at. There's no reason why this shouldn't
-
4152 // work, but it demonstrated poor performance.
-
4153 //
-
4154 void
-
4155 NetworkOPsImp::getBookPage(
-
4156  std::shared_ptr<ReadView const>& lpLedger,
-
4157  Book const& book,
-
4158  AccountID const& uTakerID,
-
4159  bool const bProof,
-
4160  unsigned int iLimit,
-
4161  Json::Value const& jvMarker,
-
4162  Json::Value& jvResult)
-
4163 { // CAUTION: This is the old get book page logic
-
4164  Json::Value& jvOffers =
-
4165  (jvResult[jss::offers] = Json::Value(Json::arrayValue));
-
4166 
-
4167  std::unordered_map<AccountID, STAmount> umBalance;
-
4168  const uint256 uBookBase = getBookBase(book);
-
4169  const uint256 uBookEnd = getQualityNext(uBookBase);
-
4170  uint256 uTipIndex = uBookBase;
-
4171 
-
4172  if (auto stream = m_journal.trace())
-
4173  {
-
4174  stream << "getBookPage:" << book;
-
4175  stream << "getBookPage: uBookBase=" << uBookBase;
-
4176  stream << "getBookPage: uBookEnd=" << uBookEnd;
-
4177  stream << "getBookPage: uTipIndex=" << uTipIndex;
-
4178  }
-
4179 
-
4180  ReadView const& view = *lpLedger;
-
4181 
-
4182  bool const bGlobalFreeze = isGlobalFrozen(view, book.out.account) ||
-
4183  isGlobalFrozen(view, book.in.account);
-
4184 
-
4185  bool bDone = false;
-
4186  bool bDirectAdvance = true;
-
4187 
-
4188  std::shared_ptr<SLE const> sleOfferDir;
-
4189  uint256 offerIndex;
-
4190  unsigned int uBookEntry;
-
4191  STAmount saDirRate;
-
4192 
-
4193  auto const rate = transferRate(view, book.out.account);
-
4194  auto viewJ = app_.journal("View");
-
4195 
-
4196  while (!bDone && iLimit-- > 0)
-
4197  {
-
4198  if (bDirectAdvance)
-
4199  {
-
4200  bDirectAdvance = false;
-
4201 
-
4202  JLOG(m_journal.trace()) << "getBookPage: bDirectAdvance";
-
4203 
-
4204  auto const ledgerIndex = view.succ(uTipIndex, uBookEnd);
-
4205  if (ledgerIndex)
-
4206  sleOfferDir = view.read(keylet::page(*ledgerIndex));
-
4207  else
-
4208  sleOfferDir.reset();
-
4209 
-
4210  if (!sleOfferDir)
-
4211  {
-
4212  JLOG(m_journal.trace()) << "getBookPage: bDone";
-
4213  bDone = true;
-
4214  }
-
4215  else
-
4216  {
-
4217  uTipIndex = sleOfferDir->key();
-
4218  saDirRate = amountFromQuality(getQuality(uTipIndex));
-
4219 
-
4220  cdirFirst(view, uTipIndex, sleOfferDir, uBookEntry, offerIndex);
-
4221 
-
4222  JLOG(m_journal.trace())
-
4223  << "getBookPage: uTipIndex=" << uTipIndex;
-
4224  JLOG(m_journal.trace())
-
4225  << "getBookPage: offerIndex=" << offerIndex;
-
4226  }
-
4227  }
-
4228 
-
4229  if (!bDone)
-
4230  {
-
4231  auto sleOffer = view.read(keylet::offer(offerIndex));
-
4232 
-
4233  if (sleOffer)
-
4234  {
-
4235  auto const uOfferOwnerID = sleOffer->getAccountID(sfAccount);
-
4236  auto const& saTakerGets = sleOffer->getFieldAmount(sfTakerGets);
-
4237  auto const& saTakerPays = sleOffer->getFieldAmount(sfTakerPays);
-
4238  STAmount saOwnerFunds;
-
4239  bool firstOwnerOffer(true);
-
4240 
-
4241  if (book.out.account == uOfferOwnerID)
-
4242  {
-
4243  // If an offer is selling issuer's own IOUs, it is fully
-
4244  // funded.
-
4245  saOwnerFunds = saTakerGets;
-
4246  }
-
4247  else if (bGlobalFreeze)
-
4248  {
-
4249  // If either asset is globally frozen, consider all offers
-
4250  // that aren't ours to be totally unfunded
-
4251  saOwnerFunds.clear(book.out);
-
4252  }
-
4253  else
-
4254  {
-
4255  auto umBalanceEntry = umBalance.find(uOfferOwnerID);
-
4256  if (umBalanceEntry != umBalance.end())
-
4257  {
-
4258  // Found in running balance table.
-
4259 
-
4260  saOwnerFunds = umBalanceEntry->second;
-
4261  firstOwnerOffer = false;
-
4262  }
-
4263  else
-
4264  {
-
4265  // Did not find balance in table.
-
4266 
-
4267  saOwnerFunds = accountHolds(
-
4268  view,
-
4269  uOfferOwnerID,
-
4270  book.out.currency,
-
4271  book.out.account,
-
4272  fhZERO_IF_FROZEN,
-
4273  viewJ);
-
4274 
-
4275  if (saOwnerFunds < beast::zero)
-
4276  {
-
4277  // Treat negative funds as zero.
-
4278 
-
4279  saOwnerFunds.clear();
-
4280  }
-
4281  }
-
4282  }
-
4283 
-
4284  Json::Value jvOffer = sleOffer->getJson(JsonOptions::none);
-
4285 
-
4286  STAmount saTakerGetsFunded;
-
4287  STAmount saOwnerFundsLimit = saOwnerFunds;
-
4288  Rate offerRate = parityRate;
-
4289 
-
4290  if (rate != parityRate
-
4291  // Have a tranfer fee.
-
4292  && uTakerID != book.out.account
-
4293  // Not taking offers of own IOUs.
-
4294  && book.out.account != uOfferOwnerID)
-
4295  // Offer owner not issuing ownfunds
-
4296  {
-
4297  // Need to charge a transfer fee to offer owner.
-
4298  offerRate = rate;
-
4299  saOwnerFundsLimit = divide(saOwnerFunds, offerRate);
-
4300  }
-
4301 
-
4302  if (saOwnerFundsLimit >= saTakerGets)
-
4303  {
-
4304  // Sufficient funds no shenanigans.
-
4305  saTakerGetsFunded = saTakerGets;
-
4306  }
-
4307  else
-
4308  {
-
4309  // Only provide, if not fully funded.
-
4310 
-
4311  saTakerGetsFunded = saOwnerFundsLimit;
-
4312 
-
4313  saTakerGetsFunded.setJson(jvOffer[jss::taker_gets_funded]);
-
4314  std::min(
-
4315  saTakerPays,
-
4316  multiply(
-
4317  saTakerGetsFunded, saDirRate, saTakerPays.issue()))
-
4318  .setJson(jvOffer[jss::taker_pays_funded]);
-
4319  }
-
4320 
-
4321  STAmount saOwnerPays = (parityRate == offerRate)
-
4322  ? saTakerGetsFunded
-
4323  : std::min(
-
4324  saOwnerFunds, multiply(saTakerGetsFunded, offerRate));
-
4325 
-
4326  umBalance[uOfferOwnerID] = saOwnerFunds - saOwnerPays;
-
4327 
-
4328  // Include all offers funded and unfunded
-
4329  Json::Value& jvOf = jvOffers.append(jvOffer);
-
4330  jvOf[jss::quality] = saDirRate.getText();
-
4331 
-
4332  if (firstOwnerOffer)
-
4333  jvOf[jss::owner_funds] = saOwnerFunds.getText();
-
4334  }
-
4335  else
-
4336  {
-
4337  JLOG(m_journal.warn()) << "Missing offer";
-
4338  }
-
4339 
-
4340  if (!cdirNext(view, uTipIndex, sleOfferDir, uBookEntry, offerIndex))
-
4341  {
-
4342  bDirectAdvance = true;
-
4343  }
-
4344  else
-
4345  {
-
4346  JLOG(m_journal.trace())
-
4347  << "getBookPage: offerIndex=" << offerIndex;
-
4348  }
-
4349  }
-
4350  }
-
4351 
-
4352  // jvResult[jss::marker] = Json::Value(Json::arrayValue);
-
4353  // jvResult[jss::nodes] = Json::Value(Json::arrayValue);
-
4354 }
-
4355 
-
4356 #else
-
4357 
-
4358 // This is the new code that uses the book iterators
-
4359 // It has temporarily been disabled
-
4360 
-
4361 void
-
4362 NetworkOPsImp::getBookPage(
-
4363  std::shared_ptr<ReadView const> lpLedger,
-
4364  Book const& book,
-
4365  AccountID const& uTakerID,
-
4366  bool const bProof,
-
4367  unsigned int iLimit,
-
4368  Json::Value const& jvMarker,
-
4369  Json::Value& jvResult)
-
4370 {
-
4371  auto& jvOffers = (jvResult[jss::offers] = Json::Value(Json::arrayValue));
-
4372 
-
4373  std::map<AccountID, STAmount> umBalance;
-
4374 
-
4375  MetaView lesActive(lpLedger, tapNONE, true);
-
4376  OrderBookIterator obIterator(lesActive, book);
-
4377 
-
4378  auto const rate = transferRate(lesActive, book.out.account);
-
4379 
-
4380  const bool bGlobalFreeze = lesActive.isGlobalFrozen(book.out.account) ||
-
4381  lesActive.isGlobalFrozen(book.in.account);
-
4382 
-
4383  while (iLimit-- > 0 && obIterator.nextOffer())
-
4384  {
-
4385  SLE::pointer sleOffer = obIterator.getCurrentOffer();
-
4386  if (sleOffer)
-
4387  {
-
4388  auto const uOfferOwnerID = sleOffer->getAccountID(sfAccount);
-
4389  auto const& saTakerGets = sleOffer->getFieldAmount(sfTakerGets);
-
4390  auto const& saTakerPays = sleOffer->getFieldAmount(sfTakerPays);
-
4391  STAmount saDirRate = obIterator.getCurrentRate();
-
4392  STAmount saOwnerFunds;
-
4393 
-
4394  if (book.out.account == uOfferOwnerID)
-
4395  {
-
4396  // If offer is selling issuer's own IOUs, it is fully funded.
-
4397  saOwnerFunds = saTakerGets;
-
4398  }
-
4399  else if (bGlobalFreeze)
-
4400  {
-
4401  // If either asset is globally frozen, consider all offers
-
4402  // that aren't ours to be totally unfunded
-
4403  saOwnerFunds.clear(book.out);
-
4404  }
-
4405  else
-
4406  {
-
4407  auto umBalanceEntry = umBalance.find(uOfferOwnerID);
-
4408 
-
4409  if (umBalanceEntry != umBalance.end())
-
4410  {
-
4411  // Found in running balance table.
-
4412 
-
4413  saOwnerFunds = umBalanceEntry->second;
-
4414  }
-
4415  else
-
4416  {
-
4417  // Did not find balance in table.
-
4418 
-
4419  saOwnerFunds = lesActive.accountHolds(
-
4420  uOfferOwnerID,
-
4421  book.out.currency,
-
4422  book.out.account,
-
4423  fhZERO_IF_FROZEN);
-
4424 
-
4425  if (saOwnerFunds.isNegative())
-
4426  {
-
4427  // Treat negative funds as zero.
-
4428 
-
4429  saOwnerFunds.zero();
-
4430  }
-
4431  }
-
4432  }
-
4433 
-
4434  Json::Value jvOffer = sleOffer->getJson(JsonOptions::none);
-
4435 
-
4436  STAmount saTakerGetsFunded;
-
4437  STAmount saOwnerFundsLimit = saOwnerFunds;
-
4438  Rate offerRate = parityRate;
-
4439 
-
4440  if (rate != parityRate
-
4441  // Have a tranfer fee.
-
4442  && uTakerID != book.out.account
-
4443  // Not taking offers of own IOUs.
-
4444  && book.out.account != uOfferOwnerID)
-
4445  // Offer owner not issuing ownfunds
-
4446  {
-
4447  // Need to charge a transfer fee to offer owner.
-
4448  offerRate = rate;
-
4449  saOwnerFundsLimit = divide(saOwnerFunds, offerRate);
-
4450  }
-
4451 
-
4452  if (saOwnerFundsLimit >= saTakerGets)
-
4453  {
-
4454  // Sufficient funds no shenanigans.
-
4455  saTakerGetsFunded = saTakerGets;
-
4456  }
-
4457  else
-
4458  {
-
4459  // Only provide, if not fully funded.
-
4460  saTakerGetsFunded = saOwnerFundsLimit;
-
4461 
-
4462  saTakerGetsFunded.setJson(jvOffer[jss::taker_gets_funded]);
-
4463 
-
4464  // TOOD(tom): The result of this expression is not used - what's
-
4465  // going on here?
-
4466  std::min(
-
4467  saTakerPays,
-
4468  multiply(saTakerGetsFunded, saDirRate, saTakerPays.issue()))
-
4469  .setJson(jvOffer[jss::taker_pays_funded]);
-
4470  }
-
4471 
-
4472  STAmount saOwnerPays = (parityRate == offerRate)
-
4473  ? saTakerGetsFunded
-
4474  : std::min(
-
4475  saOwnerFunds, multiply(saTakerGetsFunded, offerRate));
-
4476 
-
4477  umBalance[uOfferOwnerID] = saOwnerFunds - saOwnerPays;
-
4478 
-
4479  if (!saOwnerFunds.isZero() || uOfferOwnerID == uTakerID)
-
4480  {
-
4481  // Only provide funded offers and offers of the taker.
-
4482  Json::Value& jvOf = jvOffers.append(jvOffer);
-
4483  jvOf[jss::quality] = saDirRate.getText();
-
4484  }
-
4485  }
-
4486  }
-
4487 
-
4488  // jvResult[jss::marker] = Json::Value(Json::arrayValue);
-
4489  // jvResult[jss::nodes] = Json::Value(Json::arrayValue);
-
4490 }
-
4491 
-
4492 #endif
-
4493 
-
4494 inline void
-
4495 NetworkOPsImp::collect_metrics()
-
4496 {
-
4497  auto [counters, mode, start, initialSync] = accounting_.getCounterData();
-
4498  auto const current = std::chrono::duration_cast<std::chrono::microseconds>(
-
4499  std::chrono::steady_clock::now() - start);
-
4500  counters[static_cast<std::size_t>(mode)].dur += current;
-
4501 
-
4502  std::lock_guard lock(m_statsMutex);
-
4503  m_stats.disconnected_duration.set(
-
4504  counters[static_cast<std::size_t>(OperatingMode::DISCONNECTED)]
-
4505  .dur.count());
-
4506  m_stats.connected_duration.set(
-
4507  counters[static_cast<std::size_t>(OperatingMode::CONNECTED)]
-
4508  .dur.count());
-
4509  m_stats.syncing_duration.set(
-
4510  counters[static_cast<std::size_t>(OperatingMode::SYNCING)].dur.count());
-
4511  m_stats.tracking_duration.set(
-
4512  counters[static_cast<std::size_t>(OperatingMode::TRACKING)]
-
4513  .dur.count());
-
4514  m_stats.full_duration.set(
-
4515  counters[static_cast<std::size_t>(OperatingMode::FULL)].dur.count());
-
4516 
-
4517  m_stats.disconnected_transitions.set(
-
4518  counters[static_cast<std::size_t>(OperatingMode::DISCONNECTED)]
-
4519  .transitions);
-
4520  m_stats.connected_transitions.set(
-
4521  counters[static_cast<std::size_t>(OperatingMode::CONNECTED)]
-
4522  .transitions);
-
4523  m_stats.syncing_transitions.set(
-
4524  counters[static_cast<std::size_t>(OperatingMode::SYNCING)].transitions);
-
4525  m_stats.tracking_transitions.set(
-
4526  counters[static_cast<std::size_t>(OperatingMode::TRACKING)]
-
4527  .transitions);
-
4528  m_stats.full_transitions.set(
-
4529  counters[static_cast<std::size_t>(OperatingMode::FULL)].transitions);
-
4530 }
-
4531 
-
4532 void
-
4533 NetworkOPsImp::StateAccounting::mode(OperatingMode om)
-
4534 {
-
4535  auto now = std::chrono::steady_clock::now();
-
4536 
-
4537  std::lock_guard lock(mutex_);
-
4538  ++counters_[static_cast<std::size_t>(om)].transitions;
-
4539  if (om == OperatingMode::FULL &&
-
4540  counters_[static_cast<std::size_t>(om)].transitions == 1)
-
4541  {
-
4542  initialSyncUs_ = std::chrono::duration_cast<std::chrono::microseconds>(
-
4543  now - processStart_)
-
4544  .count();
-
4545  }
-
4546  counters_[static_cast<std::size_t>(mode_)].dur +=
-
4547  std::chrono::duration_cast<std::chrono::microseconds>(now - start_);
-
4548 
-
4549  mode_ = om;
-
4550  start_ = now;
-
4551 }
-
4552 
-
4553 void
-
4554 NetworkOPsImp::StateAccounting::json(Json::Value& obj) const
-
4555 {
-
4556  auto [counters, mode, start, initialSync] = getCounterData();
-
4557  auto const current = std::chrono::duration_cast<std::chrono::microseconds>(
-
4558  std::chrono::steady_clock::now() - start);
-
4559  counters[static_cast<std::size_t>(mode)].dur += current;
-
4560 
-
4561  obj[jss::state_accounting] = Json::objectValue;
-
4562  for (std::size_t i = static_cast<std::size_t>(OperatingMode::DISCONNECTED);
-
4563  i <= static_cast<std::size_t>(OperatingMode::FULL);
-
4564  ++i)
-
4565  {
-
4566  obj[jss::state_accounting][states_[i]] = Json::objectValue;
-
4567  auto& state = obj[jss::state_accounting][states_[i]];
-
4568  state[jss::transitions] = std::to_string(counters[i].transitions);
-
4569  state[jss::duration_us] = std::to_string(counters[i].dur.count());
-
4570  }
-
4571  obj[jss::server_state_duration_us] = std::to_string(current.count());
-
4572  if (initialSync)
-
4573  obj[jss::initial_sync_duration_us] = std::to_string(initialSync);
-
4574 }
-
4575 
-
4576 //------------------------------------------------------------------------------
-
4577 
-
4578 std::unique_ptr<NetworkOPs>
-
4579 make_NetworkOPs(
-
4580  Application& app,
-
4581  NetworkOPs::clock_type& clock,
-
4582  bool standalone,
-
4583  std::size_t minPeerCount,
-
4584  bool startvalid,
-
4585  JobQueue& job_queue,
-
4586  LedgerMaster& ledgerMaster,
-
4587  ValidatorKeys const& validatorKeys,
-
4588  boost::asio::io_service& io_svc,
-
4589  beast::Journal journal,
-
4590  beast::insight::Collector::ptr const& collector)
-
4591 {
-
4592  return std::make_unique<NetworkOPsImp>(
-
4593  app,
-
4594  clock,
-
4595  standalone,
-
4596  minPeerCount,
-
4597  startvalid,
-
4598  job_queue,
-
4599  ledgerMaster,
-
4600  validatorKeys,
-
4601  io_svc,
-
4602  journal,
-
4603  collector);
-
4604 }
-
4605 
-
4606 } // namespace ripple
+
2191  jvObj[jss::reserve_base] = reserveBaseXRP->xrp().jsonClipped();
+
2192 
+
2193  if (auto const reserveIncXRP = ~val->at(~sfReserveIncrementDrops);
+
2194  reserveIncXRP && reserveIncXRP->native())
+
2195  jvObj[jss::reserve_inc] = reserveIncXRP->xrp().jsonClipped();
+
2196 
+
2197  for (auto i = mStreamMaps[sValidations].begin();
+
2198  i != mStreamMaps[sValidations].end();)
+
2199  {
+
2200  if (auto p = i->second.lock())
+
2201  {
+
2202  p->send(jvObj, true);
+
2203  ++i;
+
2204  }
+
2205  else
+
2206  {
+
2207  i = mStreamMaps[sValidations].erase(i);
+
2208  }
+
2209  }
+
2210  }
+
2211 }
+
2212 
+
2213 void
+
2214 NetworkOPsImp::pubPeerStatus(std::function<Json::Value(void)> const& func)
+
2215 {
+
2216  std::lock_guard sl(mSubLock);
+
2217 
+
2218  if (!mStreamMaps[sPeerStatus].empty())
+
2219  {
+
2220  Json::Value jvObj(func());
+
2221 
+
2222  jvObj[jss::type] = "peerStatusChange";
+
2223 
+
2224  for (auto i = mStreamMaps[sPeerStatus].begin();
+
2225  i != mStreamMaps[sPeerStatus].end();)
+
2226  {
+
2227  InfoSub::pointer p = i->second.lock();
+
2228 
+
2229  if (p)
+
2230  {
+
2231  p->send(jvObj, true);
+
2232  ++i;
+
2233  }
+
2234  else
+
2235  {
+
2236  i = mStreamMaps[sPeerStatus].erase(i);
+
2237  }
+
2238  }
+
2239  }
+
2240 }
+
2241 
+
2242 void
+
2243 NetworkOPsImp::setMode(OperatingMode om)
+
2244 {
+
2245  using namespace std::chrono_literals;
+
2246  if (om == OperatingMode::CONNECTED)
+
2247  {
+
2248  if (app_.getLedgerMaster().getValidatedLedgerAge() < 1min)
+
2249  om = OperatingMode::SYNCING;
+
2250  }
+
2251  else if (om == OperatingMode::SYNCING)
+
2252  {
+
2253  if (app_.getLedgerMaster().getValidatedLedgerAge() >= 1min)
+
2254  om = OperatingMode::CONNECTED;
+
2255  }
+
2256 
+
2257  if ((om > OperatingMode::CONNECTED) && isBlocked())
+
2258  om = OperatingMode::CONNECTED;
+
2259 
+
2260  if (mMode == om)
+
2261  return;
+
2262 
+
2263  mMode = om;
+
2264 
+
2265  accounting_.mode(om);
+
2266 
+
2267  JLOG(m_journal.info()) << "STATE->" << strOperatingMode();
+
2268  pubServer();
+
2269 }
+
2270 
+
2271 bool
+
2272 NetworkOPsImp::recvValidation(
+
2273  std::shared_ptr<STValidation> const& val,
+
2274  std::string const& source)
+
2275 {
+
2276  JLOG(m_journal.trace())
+
2277  << "recvValidation " << val->getLedgerHash() << " from " << source;
+
2278 
+
2279  handleNewValidation(app_, val, source);
+
2280 
+
2281  pubValidation(val);
+
2282 
+
2283  // We will always relay trusted validations; if configured, we will
+
2284  // also relay all untrusted validations.
+
2285  return app_.config().RELAY_UNTRUSTED_VALIDATIONS == 1 || val->isTrusted();
+
2286 }
+
2287 
+
2288 Json::Value
+
2289 NetworkOPsImp::getConsensusInfo()
+
2290 {
+
2291  return mConsensus.getJson(true);
+
2292 }
+
2293 
+
2294 Json::Value
+
2295 NetworkOPsImp::getServerInfo(bool human, bool admin, bool counters)
+
2296 {
+
2297  Json::Value info = Json::objectValue;
+
2298 
+
2299  // System-level warnings
+
2300  {
+
2301  Json::Value warnings{Json::arrayValue};
+
2302  if (isAmendmentBlocked())
+
2303  {
+
2304  Json::Value& w = warnings.append(Json::objectValue);
+
2305  w[jss::id] = warnRPC_AMENDMENT_BLOCKED;
+
2306  w[jss::message] =
+
2307  "This server is amendment blocked, and must be updated to be "
+
2308  "able to stay in sync with the network.";
+
2309  }
+
2310  if (isUNLBlocked())
+
2311  {
+
2312  Json::Value& w = warnings.append(Json::objectValue);
+
2313  w[jss::id] = warnRPC_EXPIRED_VALIDATOR_LIST;
+
2314  w[jss::message] =
+
2315  "This server has an expired validator list. validators.txt "
+
2316  "may be incorrectly configured or some [validator_list_sites] "
+
2317  "may be unreachable.";
+
2318  }
+
2319  if (admin && isAmendmentWarned())
+
2320  {
+
2321  Json::Value& w = warnings.append(Json::objectValue);
+
2322  w[jss::id] = warnRPC_UNSUPPORTED_MAJORITY;
+
2323  w[jss::message] =
+
2324  "One or more unsupported amendments have reached majority. "
+
2325  "Upgrade to the latest version before they are activated "
+
2326  "to avoid being amendment blocked.";
+
2327  if (auto const expected =
+
2328  app_.getAmendmentTable().firstUnsupportedExpected())
+
2329  {
+
2330  auto& d = w[jss::details] = Json::objectValue;
+
2331  d[jss::expected_date] = expected->time_since_epoch().count();
+
2332  d[jss::expected_date_UTC] = to_string(*expected);
+
2333  }
+
2334  }
+
2335 
+
2336  if (warnings.size())
+
2337  info[jss::warnings] = std::move(warnings);
+
2338  }
+
2339 
+
2340  // hostid: unique string describing the machine
+
2341  if (human)
+
2342  info[jss::hostid] = getHostId(admin);
+
2343 
+
2344  // domain: if configured with a domain, report it:
+
2345  if (!app_.config().SERVER_DOMAIN.empty())
+
2346  info[jss::server_domain] = app_.config().SERVER_DOMAIN;
+
2347 
+
2348  info[jss::build_version] = BuildInfo::getVersionString();
+
2349 
+
2350  info[jss::server_state] = strOperatingMode(admin);
+
2351 
+
2352  info[jss::time] = to_string(std::chrono::floor<std::chrono::microseconds>(
+
2353  std::chrono::system_clock::now()));
+
2354 
+
2355  if (needNetworkLedger_)
+
2356  info[jss::network_ledger] = "waiting";
+
2357 
+
2358  info[jss::validation_quorum] =
+
2359  static_cast<Json::UInt>(app_.validators().quorum());
+
2360 
+
2361  if (admin)
+
2362  {
+
2363  switch (app_.config().NODE_SIZE)
+
2364  {
+
2365  case 0:
+
2366  info[jss::node_size] = "tiny";
+
2367  break;
+
2368  case 1:
+
2369  info[jss::node_size] = "small";
+
2370  break;
+
2371  case 2:
+
2372  info[jss::node_size] = "medium";
+
2373  break;
+
2374  case 3:
+
2375  info[jss::node_size] = "large";
+
2376  break;
+
2377  case 4:
+
2378  info[jss::node_size] = "huge";
+
2379  break;
+
2380  }
+
2381 
+
2382  auto when = app_.validators().expires();
+
2383 
+
2384  if (!human)
+
2385  {
+
2386  if (when)
+
2387  info[jss::validator_list_expires] =
+
2388  safe_cast<Json::UInt>(when->time_since_epoch().count());
+
2389  else
+
2390  info[jss::validator_list_expires] = 0;
+
2391  }
+
2392  else
+
2393  {
+
2394  auto& x = (info[jss::validator_list] = Json::objectValue);
+
2395 
+
2396  x[jss::count] = static_cast<Json::UInt>(app_.validators().count());
+
2397 
+
2398  if (when)
+
2399  {
+
2400  if (*when == TimeKeeper::time_point::max())
+
2401  {
+
2402  x[jss::expiration] = "never";
+
2403  x[jss::status] = "active";
+
2404  }
+
2405  else
+
2406  {
+
2407  x[jss::expiration] = to_string(*when);
+
2408 
+
2409  if (*when > app_.timeKeeper().now())
+
2410  x[jss::status] = "active";
+
2411  else
+
2412  x[jss::status] = "expired";
+
2413  }
+
2414  }
+
2415  else
+
2416  {
+
2417  x[jss::status] = "unknown";
+
2418  x[jss::expiration] = "unknown";
+
2419  }
+
2420  }
+
2421  }
+
2422  info[jss::io_latency_ms] =
+
2423  static_cast<Json::UInt>(app_.getIOLatency().count());
+
2424 
+
2425  if (admin)
+
2426  {
+
2427  if (!app_.getValidationPublicKey().empty())
+
2428  {
+
2429  info[jss::pubkey_validator] = toBase58(
+
2430  TokenType::NodePublic, app_.validators().localPublicKey());
+
2431  }
+
2432  else
+
2433  {
+
2434  info[jss::pubkey_validator] = "none";
+
2435  }
+
2436  }
+
2437 
+
2438  if (counters)
+
2439  {
+
2440  info[jss::counters] = app_.getPerfLog().countersJson();
+
2441 
+
2442  Json::Value nodestore(Json::objectValue);
+
2443  if (app_.getShardStore())
+
2444  app_.getShardStore()->getCountsJson(nodestore);
+
2445  else
+
2446  app_.getNodeStore().getCountsJson(nodestore);
+
2447  info[jss::counters][jss::nodestore] = nodestore;
+
2448  info[jss::current_activities] = app_.getPerfLog().currentJson();
+
2449  }
+
2450 
+
2451  info[jss::pubkey_node] =
+
2452  toBase58(TokenType::NodePublic, app_.nodeIdentity().first);
+
2453 
+
2454  info[jss::complete_ledgers] = app_.getLedgerMaster().getCompleteLedgers();
+
2455 
+
2456  if (amendmentBlocked_)
+
2457  info[jss::amendment_blocked] = true;
+
2458 
+
2459  auto const fp = m_ledgerMaster.getFetchPackCacheSize();
+
2460 
+
2461  if (fp != 0)
+
2462  info[jss::fetch_pack] = Json::UInt(fp);
+
2463 
+
2464  if (!app_.config().reporting())
+
2465  info[jss::peers] = Json::UInt(app_.overlay().size());
+
2466 
+
2467  Json::Value lastClose = Json::objectValue;
+
2468  lastClose[jss::proposers] = Json::UInt(mConsensus.prevProposers());
+
2469 
+
2470  if (human)
+
2471  {
+
2472  lastClose[jss::converge_time_s] =
+
2473  std::chrono::duration<double>{mConsensus.prevRoundTime()}.count();
+
2474  }
+
2475  else
+
2476  {
+
2477  lastClose[jss::converge_time] =
+
2478  Json::Int(mConsensus.prevRoundTime().count());
+
2479  }
+
2480 
+
2481  info[jss::last_close] = lastClose;
+
2482 
+
2483  // info[jss::consensus] = mConsensus.getJson();
+
2484 
+
2485  if (admin)
+
2486  info[jss::load] = m_job_queue.getJson();
+
2487 
+
2488  if (!app_.config().reporting())
+
2489  {
+
2490  if (auto const netid = app_.overlay().networkID())
+
2491  info[jss::network_id] = static_cast<Json::UInt>(*netid);
+
2492 
+
2493  auto const escalationMetrics =
+
2494  app_.getTxQ().getMetrics(*app_.openLedger().current());
+
2495 
+
2496  auto const loadFactorServer = app_.getFeeTrack().getLoadFactor();
+
2497  auto const loadBaseServer = app_.getFeeTrack().getLoadBase();
+
2498  /* Scale the escalated fee level to unitless "load factor".
+
2499  In practice, this just strips the units, but it will continue
+
2500  to work correctly if either base value ever changes. */
+
2501  auto const loadFactorFeeEscalation =
+
2502  mulDiv(
+
2503  escalationMetrics.openLedgerFeeLevel,
+
2504  loadBaseServer,
+
2505  escalationMetrics.referenceFeeLevel)
+
2506  .second;
+
2507 
+
2508  auto const loadFactor = std::max(
+
2509  safe_cast<std::uint64_t>(loadFactorServer),
+
2510  loadFactorFeeEscalation);
+
2511 
+
2512  if (!human)
+
2513  {
+
2514  info[jss::load_base] = loadBaseServer;
+
2515  info[jss::load_factor] = trunc32(loadFactor);
+
2516  info[jss::load_factor_server] = loadFactorServer;
+
2517 
+
2518  /* Json::Value doesn't support uint64, so clamp to max
+
2519  uint32 value. This is mostly theoretical, since there
+
2520  probably isn't enough extant XRP to drive the factor
+
2521  that high.
+
2522  */
+
2523  info[jss::load_factor_fee_escalation] =
+
2524  escalationMetrics.openLedgerFeeLevel.jsonClipped();
+
2525  info[jss::load_factor_fee_queue] =
+
2526  escalationMetrics.minProcessingFeeLevel.jsonClipped();
+
2527  info[jss::load_factor_fee_reference] =
+
2528  escalationMetrics.referenceFeeLevel.jsonClipped();
+
2529  }
+
2530  else
+
2531  {
+
2532  info[jss::load_factor] =
+
2533  static_cast<double>(loadFactor) / loadBaseServer;
+
2534 
+
2535  if (loadFactorServer != loadFactor)
+
2536  info[jss::load_factor_server] =
+
2537  static_cast<double>(loadFactorServer) / loadBaseServer;
+
2538 
+
2539  if (admin)
+
2540  {
+
2541  std::uint32_t fee = app_.getFeeTrack().getLocalFee();
+
2542  if (fee != loadBaseServer)
+
2543  info[jss::load_factor_local] =
+
2544  static_cast<double>(fee) / loadBaseServer;
+
2545  fee = app_.getFeeTrack().getRemoteFee();
+
2546  if (fee != loadBaseServer)
+
2547  info[jss::load_factor_net] =
+
2548  static_cast<double>(fee) / loadBaseServer;
+
2549  fee = app_.getFeeTrack().getClusterFee();
+
2550  if (fee != loadBaseServer)
+
2551  info[jss::load_factor_cluster] =
+
2552  static_cast<double>(fee) / loadBaseServer;
+
2553  }
+
2554  if (escalationMetrics.openLedgerFeeLevel !=
+
2555  escalationMetrics.referenceFeeLevel &&
+
2556  (admin || loadFactorFeeEscalation != loadFactor))
+
2557  info[jss::load_factor_fee_escalation] =
+
2558  escalationMetrics.openLedgerFeeLevel.decimalFromReference(
+
2559  escalationMetrics.referenceFeeLevel);
+
2560  if (escalationMetrics.minProcessingFeeLevel !=
+
2561  escalationMetrics.referenceFeeLevel)
+
2562  info[jss::load_factor_fee_queue] =
+
2563  escalationMetrics.minProcessingFeeLevel
+
2564  .decimalFromReference(
+
2565  escalationMetrics.referenceFeeLevel);
+
2566  }
+
2567  }
+
2568 
+
2569  bool valid = false;
+
2570  auto lpClosed = m_ledgerMaster.getValidatedLedger();
+
2571 
+
2572  if (lpClosed)
+
2573  valid = true;
+
2574  else if (!app_.config().reporting())
+
2575  lpClosed = m_ledgerMaster.getClosedLedger();
+
2576 
+
2577  if (lpClosed)
+
2578  {
+
2579  XRPAmount const baseFee = lpClosed->fees().base;
+
2580  Json::Value l(Json::objectValue);
+
2581  l[jss::seq] = Json::UInt(lpClosed->info().seq);
+
2582  l[jss::hash] = to_string(lpClosed->info().hash);
+
2583 
+
2584  if (!human)
+
2585  {
+
2586  l[jss::base_fee] = baseFee.jsonClipped();
+
2587  l[jss::reserve_base] =
+
2588  lpClosed->fees().accountReserve(0).jsonClipped();
+
2589  l[jss::reserve_inc] = lpClosed->fees().increment.jsonClipped();
+
2590  l[jss::close_time] = Json::Value::UInt(
+
2591  lpClosed->info().closeTime.time_since_epoch().count());
+
2592  }
+
2593  else
+
2594  {
+
2595  l[jss::base_fee_xrp] = baseFee.decimalXRP();
+
2596  l[jss::reserve_base_xrp] =
+
2597  lpClosed->fees().accountReserve(0).decimalXRP();
+
2598  l[jss::reserve_inc_xrp] = lpClosed->fees().increment.decimalXRP();
+
2599 
+
2600  auto const nowOffset = app_.timeKeeper().nowOffset();
+
2601  if (std::abs(nowOffset.count()) >= 60)
+
2602  l[jss::system_time_offset] = nowOffset.count();
+
2603 
+
2604  auto const closeOffset = app_.timeKeeper().closeOffset();
+
2605  if (std::abs(closeOffset.count()) >= 60)
+
2606  l[jss::close_time_offset] = closeOffset.count();
+
2607 
+
2608 #if RIPPLED_REPORTING
+
2609  std::int64_t const dbAge =
+
2610  std::max(m_ledgerMaster.getValidatedLedgerAge().count(), 0L);
+
2611  l[jss::age] = Json::UInt(dbAge);
+
2612 #else
+
2613  constexpr std::chrono::seconds highAgeThreshold{1000000};
+
2614  if (m_ledgerMaster.haveValidated())
+
2615  {
+
2616  auto const age = m_ledgerMaster.getValidatedLedgerAge();
+
2617  l[jss::age] =
+
2618  Json::UInt(age < highAgeThreshold ? age.count() : 0);
+
2619  }
+
2620  else
+
2621  {
+
2622  auto lCloseTime = lpClosed->info().closeTime;
+
2623  auto closeTime = app_.timeKeeper().closeTime();
+
2624  if (lCloseTime <= closeTime)
+
2625  {
+
2626  using namespace std::chrono_literals;
+
2627  auto age = closeTime - lCloseTime;
+
2628  l[jss::age] =
+
2629  Json::UInt(age < highAgeThreshold ? age.count() : 0);
+
2630  }
+
2631  }
+
2632 #endif
+
2633  }
+
2634 
+
2635  if (valid)
+
2636  info[jss::validated_ledger] = l;
+
2637  else
+
2638  info[jss::closed_ledger] = l;
+
2639 
+
2640  auto lpPublished = m_ledgerMaster.getPublishedLedger();
+
2641  if (!lpPublished)
+
2642  info[jss::published_ledger] = "none";
+
2643  else if (lpPublished->info().seq != lpClosed->info().seq)
+
2644  info[jss::published_ledger] = lpPublished->info().seq;
+
2645  }
+
2646 
+
2647  accounting_.json(info);
+
2648  info[jss::uptime] = UptimeClock::now().time_since_epoch().count();
+
2649  if (!app_.config().reporting())
+
2650  {
+
2651  info[jss::jq_trans_overflow] =
+
2652  std::to_string(app_.overlay().getJqTransOverflow());
+
2653  info[jss::peer_disconnects] =
+
2654  std::to_string(app_.overlay().getPeerDisconnect());
+
2655  info[jss::peer_disconnects_resources] =
+
2656  std::to_string(app_.overlay().getPeerDisconnectCharges());
+
2657  }
+
2658  else
+
2659  {
+
2660  info["reporting"] = app_.getReportingETL().getInfo();
+
2661  }
+
2662 
+
2663  return info;
+
2664 }
+
2665 
+
2666 void
+
2667 NetworkOPsImp::clearLedgerFetch()
+
2668 {
+
2669  app_.getInboundLedgers().clearFailures();
+
2670 }
+
2671 
+
2672 Json::Value
+
2673 NetworkOPsImp::getLedgerFetchInfo()
+
2674 {
+
2675  return app_.getInboundLedgers().getInfo();
+
2676 }
+
2677 
+
2678 void
+
2679 NetworkOPsImp::pubProposedTransaction(
+
2680  std::shared_ptr<ReadView const> const& ledger,
+
2681  std::shared_ptr<STTx const> const& transaction,
+
2682  TER result)
+
2683 {
+
2684  Json::Value jvObj = transJson(*transaction, result, false, ledger);
+
2685 
+
2686  {
+
2687  std::lock_guard sl(mSubLock);
+
2688 
+
2689  auto it = mStreamMaps[sRTTransactions].begin();
+
2690  while (it != mStreamMaps[sRTTransactions].end())
+
2691  {
+
2692  InfoSub::pointer p = it->second.lock();
+
2693 
+
2694  if (p)
+
2695  {
+
2696  p->send(jvObj, true);
+
2697  ++it;
+
2698  }
+
2699  else
+
2700  {
+
2701  it = mStreamMaps[sRTTransactions].erase(it);
+
2702  }
+
2703  }
+
2704  }
+
2705 
+
2706  pubProposedAccountTransaction(ledger, transaction, result);
+
2707 }
+
2708 
+
2709 void
+
2710 NetworkOPsImp::forwardProposedTransaction(Json::Value const& jvObj)
+
2711 {
+
2712  // reporting does not forward validated transactions
+
2713  // validated transactions will be published to the proper streams when the
+
2714  // etl process writes a validated ledger
+
2715  if (jvObj[jss::validated].asBool())
+
2716  return;
+
2717  {
+
2718  std::lock_guard sl(mSubLock);
+
2719 
+
2720  auto it = mStreamMaps[sRTTransactions].begin();
+
2721  while (it != mStreamMaps[sRTTransactions].end())
+
2722  {
+
2723  InfoSub::pointer p = it->second.lock();
+
2724 
+
2725  if (p)
+
2726  {
+
2727  p->send(jvObj, true);
+
2728  ++it;
+
2729  }
+
2730  else
+
2731  {
+
2732  it = mStreamMaps[sRTTransactions].erase(it);
+
2733  }
+
2734  }
+
2735  }
+
2736 
+
2737  forwardProposedAccountTransaction(jvObj);
+
2738 }
+
2739 
+
2740 void
+
2741 NetworkOPsImp::forwardValidation(Json::Value const& jvObj)
+
2742 {
+
2743  std::lock_guard sl(mSubLock);
+
2744 
+
2745  for (auto i = mStreamMaps[sValidations].begin();
+
2746  i != mStreamMaps[sValidations].end();)
+
2747  {
+
2748  if (auto p = i->second.lock())
+
2749  {
+
2750  p->send(jvObj, true);
+
2751  ++i;
+
2752  }
+
2753  else
+
2754  {
+
2755  i = mStreamMaps[sValidations].erase(i);
+
2756  }
+
2757  }
+
2758 }
+
2759 
+
2760 void
+
2761 NetworkOPsImp::forwardManifest(Json::Value const& jvObj)
+
2762 {
+
2763  std::lock_guard sl(mSubLock);
+
2764 
+
2765  for (auto i = mStreamMaps[sManifests].begin();
+
2766  i != mStreamMaps[sManifests].end();)
+
2767  {
+
2768  if (auto p = i->second.lock())
+
2769  {
+
2770  p->send(jvObj, true);
+
2771  ++i;
+
2772  }
+
2773  else
+
2774  {
+
2775  i = mStreamMaps[sManifests].erase(i);
+
2776  }
+
2777  }
+
2778 }
+
2779 
+
2780 static void
+
2781 getAccounts(Json::Value const& jvObj, std::vector<AccountID>& accounts)
+
2782 {
+
2783  for (auto& jv : jvObj)
+
2784  {
+
2785  if (jv.isObject())
+
2786  {
+
2787  getAccounts(jv, accounts);
+
2788  }
+
2789  else if (jv.isString())
+
2790  {
+
2791  auto account = RPC::accountFromStringStrict(jv.asString());
+
2792  if (account)
+
2793  accounts.push_back(*account);
+
2794  }
+
2795  }
+
2796 }
+
2797 
+
2798 void
+
2799 NetworkOPsImp::forwardProposedAccountTransaction(Json::Value const& jvObj)
+
2800 {
+
2801  hash_set<InfoSub::pointer> notify;
+
2802  int iProposed = 0;
+
2803  // check if there are any subscribers before attempting to parse the JSON
+
2804  {
+
2805  std::lock_guard sl(mSubLock);
+
2806 
+
2807  if (mSubRTAccount.empty())
+
2808  return;
+
2809  }
+
2810 
+
2811  // parse the JSON outside of the lock
+
2812  std::vector<AccountID> accounts;
+
2813  if (jvObj.isMember(jss::transaction))
+
2814  {
+
2815  try
+
2816  {
+
2817  getAccounts(jvObj[jss::transaction], accounts);
+
2818  }
+
2819  catch (...)
+
2820  {
+
2821  JLOG(m_journal.debug())
+
2822  << __func__ << " : "
+
2823  << "error parsing json for accounts affected";
+
2824  return;
+
2825  }
+
2826  }
+
2827  {
+
2828  std::lock_guard sl(mSubLock);
+
2829 
+
2830  if (!mSubRTAccount.empty())
+
2831  {
+
2832  for (auto const& affectedAccount : accounts)
+
2833  {
+
2834  auto simiIt = mSubRTAccount.find(affectedAccount);
+
2835  if (simiIt != mSubRTAccount.end())
+
2836  {
+
2837  auto it = simiIt->second.begin();
+
2838 
+
2839  while (it != simiIt->second.end())
+
2840  {
+
2841  InfoSub::pointer p = it->second.lock();
+
2842 
+
2843  if (p)
+
2844  {
+
2845  notify.insert(p);
+
2846  ++it;
+
2847  ++iProposed;
+
2848  }
+
2849  else
+
2850  it = simiIt->second.erase(it);
+
2851  }
+
2852  }
+
2853  }
+
2854  }
+
2855  }
+
2856  JLOG(m_journal.trace()) << "forwardProposedAccountTransaction:"
+
2857  << " iProposed=" << iProposed;
+
2858 
+
2859  if (!notify.empty())
+
2860  {
+
2861  for (InfoSub::ref isrListener : notify)
+
2862  isrListener->send(jvObj, true);
+
2863  }
+
2864 }
+
2865 
+
2866 void
+
2867 NetworkOPsImp::pubLedger(std::shared_ptr<ReadView const> const& lpAccepted)
+
2868 {
+
2869  // Ledgers are published only when they acquire sufficient validations
+
2870  // Holes are filled across connection loss or other catastrophe
+
2871 
+
2872  std::shared_ptr<AcceptedLedger> alpAccepted =
+
2873  app_.getAcceptedLedgerCache().fetch(lpAccepted->info().hash);
+
2874  if (!alpAccepted)
+
2875  {
+
2876  alpAccepted = std::make_shared<AcceptedLedger>(lpAccepted, app_);
+
2877  app_.getAcceptedLedgerCache().canonicalize_replace_client(
+
2878  lpAccepted->info().hash, alpAccepted);
+
2879  }
+
2880 
+
2881  assert(alpAccepted->getLedger().get() == lpAccepted.get());
+
2882 
+
2883  {
+
2884  JLOG(m_journal.debug())
+
2885  << "Publishing ledger " << lpAccepted->info().seq << " "
+
2886  << lpAccepted->info().hash;
+
2887 
+
2888  std::lock_guard sl(mSubLock);
+
2889 
+
2890  if (!mStreamMaps[sLedger].empty())
+
2891  {
+
2892  Json::Value jvObj(Json::objectValue);
+
2893 
+
2894  jvObj[jss::type] = "ledgerClosed";
+
2895  jvObj[jss::ledger_index] = lpAccepted->info().seq;
+
2896  jvObj[jss::ledger_hash] = to_string(lpAccepted->info().hash);
+
2897  jvObj[jss::ledger_time] = Json::Value::UInt(
+
2898  lpAccepted->info().closeTime.time_since_epoch().count());
+
2899 
+
2900  if (!lpAccepted->rules().enabled(featureXRPFees))
+
2901  jvObj[jss::fee_ref] = Config::FEE_UNITS_DEPRECATED;
+
2902  jvObj[jss::fee_base] = lpAccepted->fees().base.jsonClipped();
+
2903  jvObj[jss::reserve_base] =
+
2904  lpAccepted->fees().accountReserve(0).jsonClipped();
+
2905  jvObj[jss::reserve_inc] =
+
2906  lpAccepted->fees().increment.jsonClipped();
+
2907 
+
2908  jvObj[jss::txn_count] = Json::UInt(alpAccepted->size());
+
2909 
+
2910  if (mMode >= OperatingMode::SYNCING)
+
2911  {
+
2912  jvObj[jss::validated_ledgers] =
+
2913  app_.getLedgerMaster().getCompleteLedgers();
+
2914  }
+
2915 
+
2916  auto it = mStreamMaps[sLedger].begin();
+
2917  while (it != mStreamMaps[sLedger].end())
+
2918  {
+
2919  InfoSub::pointer p = it->second.lock();
+
2920  if (p)
+
2921  {
+
2922  p->send(jvObj, true);
+
2923  ++it;
+
2924  }
+
2925  else
+
2926  it = mStreamMaps[sLedger].erase(it);
+
2927  }
+
2928  }
+
2929 
+
2930  if (!mStreamMaps[sBookChanges].empty())
+
2931  {
+
2932  Json::Value jvObj = ripple::RPC::computeBookChanges(lpAccepted);
+
2933 
+
2934  auto it = mStreamMaps[sBookChanges].begin();
+
2935  while (it != mStreamMaps[sBookChanges].end())
+
2936  {
+
2937  InfoSub::pointer p = it->second.lock();
+
2938  if (p)
+
2939  {
+
2940  p->send(jvObj, true);
+
2941  ++it;
+
2942  }
+
2943  else
+
2944  it = mStreamMaps[sBookChanges].erase(it);
+
2945  }
+
2946  }
+
2947 
+
2948  {
+
2949  static bool firstTime = true;
+
2950  if (firstTime)
+
2951  {
+
2952  // First validated ledger, start delayed SubAccountHistory
+
2953  firstTime = false;
+
2954  for (auto& outer : mSubAccountHistory)
+
2955  {
+
2956  for (auto& inner : outer.second)
+
2957  {
+
2958  auto& subInfo = inner.second;
+
2959  if (subInfo.index_->separationLedgerSeq_ == 0)
+
2960  {
+
2961  subAccountHistoryStart(
+
2962  alpAccepted->getLedger(), subInfo);
+
2963  }
+
2964  }
+
2965  }
+
2966  }
+
2967  }
+
2968  }
+
2969 
+
2970  // Don't lock since pubAcceptedTransaction is locking.
+
2971  for (auto const& accTx : *alpAccepted)
+
2972  {
+
2973  JLOG(m_journal.trace()) << "pubAccepted: " << accTx->getJson();
+
2974  pubValidatedTransaction(lpAccepted, *accTx);
+
2975  }
+
2976 }
+
2977 
+
2978 void
+
2979 NetworkOPsImp::reportFeeChange()
+
2980 {
+
2981  if (app_.config().reporting())
+
2982  return;
+
2983  ServerFeeSummary f{
+
2984  app_.openLedger().current()->fees().base,
+
2985  app_.getTxQ().getMetrics(*app_.openLedger().current()),
+
2986  app_.getFeeTrack()};
+
2987 
+
2988  // only schedule the job if something has changed
+
2989  if (f != mLastFeeSummary)
+
2990  {
+
2991  m_job_queue.addJob(
+
2992  jtCLIENT_FEE_CHANGE, "reportFeeChange->pubServer", [this]() {
+
2993  pubServer();
+
2994  });
+
2995  }
+
2996 }
+
2997 
+
2998 void
+
2999 NetworkOPsImp::reportConsensusStateChange(ConsensusPhase phase)
+
3000 {
+
3001  m_job_queue.addJob(
+
3002  jtCLIENT_CONSENSUS,
+
3003  "reportConsensusStateChange->pubConsensus",
+
3004  [this, phase]() { pubConsensus(phase); });
+
3005 }
+
3006 
+
3007 inline void
+
3008 NetworkOPsImp::updateLocalTx(ReadView const& view)
+
3009 {
+
3010  m_localTX->sweep(view);
+
3011 }
+
3012 inline std::size_t
+
3013 NetworkOPsImp::getLocalTxCount()
+
3014 {
+
3015  return m_localTX->size();
+
3016 }
+
3017 
+
3018 // This routine should only be used to publish accepted or validated
+
3019 // transactions.
+
3020 Json::Value
+
3021 NetworkOPsImp::transJson(
+
3022  const STTx& transaction,
+
3023  TER result,
+
3024  bool validated,
+
3025  std::shared_ptr<ReadView const> const& ledger)
+
3026 {
+
3027  Json::Value jvObj(Json::objectValue);
+
3028  std::string sToken;
+
3029  std::string sHuman;
+
3030 
+
3031  transResultInfo(result, sToken, sHuman);
+
3032 
+
3033  jvObj[jss::type] = "transaction";
+
3034  jvObj[jss::transaction] = transaction.getJson(JsonOptions::none);
+
3035 
+
3036  if (validated)
+
3037  {
+
3038  jvObj[jss::ledger_index] = ledger->info().seq;
+
3039  jvObj[jss::ledger_hash] = to_string(ledger->info().hash);
+
3040  jvObj[jss::transaction][jss::date] =
+
3041  ledger->info().closeTime.time_since_epoch().count();
+
3042  jvObj[jss::validated] = true;
+
3043 
+
3044  // WRITEME: Put the account next seq here
+
3045  }
+
3046  else
+
3047  {
+
3048  jvObj[jss::validated] = false;
+
3049  jvObj[jss::ledger_current_index] = ledger->info().seq;
+
3050  }
+
3051 
+
3052  jvObj[jss::status] = validated ? "closed" : "proposed";
+
3053  jvObj[jss::engine_result] = sToken;
+
3054  jvObj[jss::engine_result_code] = result;
+
3055  jvObj[jss::engine_result_message] = sHuman;
+
3056 
+
3057  if (transaction.getTxnType() == ttOFFER_CREATE)
+
3058  {
+
3059  auto const account = transaction.getAccountID(sfAccount);
+
3060  auto const amount = transaction.getFieldAmount(sfTakerGets);
+
3061 
+
3062  // If the offer create is not self funded then add the owner balance
+
3063  if (account != amount.issue().account)
+
3064  {
+
3065  auto const ownerFunds = accountFunds(
+
3066  *ledger,
+
3067  account,
+
3068  amount,
+
3069  fhIGNORE_FREEZE,
+
3070  app_.journal("View"));
+
3071  jvObj[jss::transaction][jss::owner_funds] = ownerFunds.getText();
+
3072  }
+
3073  }
+
3074 
+
3075  return jvObj;
+
3076 }
+
3077 
+
3078 void
+
3079 NetworkOPsImp::pubValidatedTransaction(
+
3080  std::shared_ptr<ReadView const> const& ledger,
+
3081  const AcceptedLedgerTx& transaction)
+
3082 {
+
3083  auto const& stTxn = transaction.getTxn();
+
3084 
+
3085  Json::Value jvObj =
+
3086  transJson(*stTxn, transaction.getResult(), true, ledger);
+
3087 
+
3088  {
+
3089  auto const& meta = transaction.getMeta();
+
3090  jvObj[jss::meta] = meta.getJson(JsonOptions::none);
+
3091  RPC::insertDeliveredAmount(jvObj[jss::meta], *ledger, stTxn, meta);
+
3092  }
+
3093 
+
3094  {
+
3095  std::lock_guard sl(mSubLock);
+
3096 
+
3097  auto it = mStreamMaps[sTransactions].begin();
+
3098  while (it != mStreamMaps[sTransactions].end())
+
3099  {
+
3100  InfoSub::pointer p = it->second.lock();
+
3101 
+
3102  if (p)
+
3103  {
+
3104  p->send(jvObj, true);
+
3105  ++it;
+
3106  }
+
3107  else
+
3108  it = mStreamMaps[sTransactions].erase(it);
+
3109  }
+
3110 
+
3111  it = mStreamMaps[sRTTransactions].begin();
+
3112 
+
3113  while (it != mStreamMaps[sRTTransactions].end())
+
3114  {
+
3115  InfoSub::pointer p = it->second.lock();
+
3116 
+
3117  if (p)
+
3118  {
+
3119  p->send(jvObj, true);
+
3120  ++it;
+
3121  }
+
3122  else
+
3123  it = mStreamMaps[sRTTransactions].erase(it);
+
3124  }
+
3125  }
+
3126 
+
3127  if (transaction.getResult() == tesSUCCESS)
+
3128  app_.getOrderBookDB().processTxn(ledger, transaction, jvObj);
+
3129 
+
3130  pubAccountTransaction(ledger, transaction);
+
3131 }
+
3132 
+
3133 void
+
3134 NetworkOPsImp::pubAccountTransaction(
+
3135  std::shared_ptr<ReadView const> const& ledger,
+
3136  AcceptedLedgerTx const& transaction)
+
3137 {
+
3138  hash_set<InfoSub::pointer> notify;
+
3139  int iProposed = 0;
+
3140  int iAccepted = 0;
+
3141 
+
3142  std::vector<SubAccountHistoryInfo> accountHistoryNotify;
+
3143  auto const currLedgerSeq = ledger->seq();
+
3144  {
+
3145  std::lock_guard sl(mSubLock);
+
3146 
+
3147  if (!mSubAccount.empty() || !mSubRTAccount.empty() ||
+
3148  !mSubAccountHistory.empty())
+
3149  {
+
3150  for (auto const& affectedAccount : transaction.getAffected())
+
3151  {
+
3152  if (auto simiIt = mSubRTAccount.find(affectedAccount);
+
3153  simiIt != mSubRTAccount.end())
+
3154  {
+
3155  auto it = simiIt->second.begin();
+
3156 
+
3157  while (it != simiIt->second.end())
+
3158  {
+
3159  InfoSub::pointer p = it->second.lock();
+
3160 
+
3161  if (p)
+
3162  {
+
3163  notify.insert(p);
+
3164  ++it;
+
3165  ++iProposed;
+
3166  }
+
3167  else
+
3168  it = simiIt->second.erase(it);
+
3169  }
+
3170  }
+
3171 
+
3172  if (auto simiIt = mSubAccount.find(affectedAccount);
+
3173  simiIt != mSubAccount.end())
+
3174  {
+
3175  auto it = simiIt->second.begin();
+
3176  while (it != simiIt->second.end())
+
3177  {
+
3178  InfoSub::pointer p = it->second.lock();
+
3179 
+
3180  if (p)
+
3181  {
+
3182  notify.insert(p);
+
3183  ++it;
+
3184  ++iAccepted;
+
3185  }
+
3186  else
+
3187  it = simiIt->second.erase(it);
+
3188  }
+
3189  }
+
3190 
+
3191  if (auto histoIt = mSubAccountHistory.find(affectedAccount);
+
3192  histoIt != mSubAccountHistory.end())
+
3193  {
+
3194  auto& subs = histoIt->second;
+
3195  auto it = subs.begin();
+
3196  while (it != subs.end())
+
3197  {
+
3198  SubAccountHistoryInfoWeak const& info = it->second;
+
3199  if (currLedgerSeq <= info.index_->separationLedgerSeq_)
+
3200  {
+
3201  ++it;
+
3202  continue;
+
3203  }
+
3204 
+
3205  if (auto isSptr = info.sinkWptr_.lock(); isSptr)
+
3206  {
+
3207  accountHistoryNotify.emplace_back(
+
3208  SubAccountHistoryInfo{isSptr, info.index_});
+
3209  ++it;
+
3210  }
+
3211  else
+
3212  {
+
3213  it = subs.erase(it);
+
3214  }
+
3215  }
+
3216  if (subs.empty())
+
3217  mSubAccountHistory.erase(histoIt);
+
3218  }
+
3219  }
+
3220  }
+
3221  }
+
3222 
+
3223  JLOG(m_journal.trace())
+
3224  << "pubAccountTransaction: "
+
3225  << "proposed=" << iProposed << ", accepted=" << iAccepted;
+
3226 
+
3227  if (!notify.empty() || !accountHistoryNotify.empty())
+
3228  {
+
3229  auto const& stTxn = transaction.getTxn();
+
3230 
+
3231  Json::Value jvObj =
+
3232  transJson(*stTxn, transaction.getResult(), true, ledger);
+
3233 
+
3234  {
+
3235  auto const& meta = transaction.getMeta();
+
3236 
+
3237  jvObj[jss::meta] = meta.getJson(JsonOptions::none);
+
3238  RPC::insertDeliveredAmount(jvObj[jss::meta], *ledger, stTxn, meta);
+
3239  }
+
3240 
+
3241  for (InfoSub::ref isrListener : notify)
+
3242  isrListener->send(jvObj, true);
+
3243 
+
3244  assert(!jvObj.isMember(jss::account_history_tx_stream));
+
3245  for (auto& info : accountHistoryNotify)
+
3246  {
+
3247  auto& index = info.index_;
+
3248  if (index->forwardTxIndex_ == 0 && !index->haveHistorical_)
+
3249  jvObj[jss::account_history_tx_first] = true;
+
3250  jvObj[jss::account_history_tx_index] = index->forwardTxIndex_++;
+
3251  info.sink_->send(jvObj, true);
+
3252  }
+
3253  }
+
3254 }
+
3255 
+
3256 void
+
3257 NetworkOPsImp::pubProposedAccountTransaction(
+
3258  std::shared_ptr<ReadView const> const& ledger,
+
3259  std::shared_ptr<STTx const> const& tx,
+
3260  TER result)
+
3261 {
+
3262  hash_set<InfoSub::pointer> notify;
+
3263  int iProposed = 0;
+
3264 
+
3265  std::vector<SubAccountHistoryInfo> accountHistoryNotify;
+
3266 
+
3267  {
+
3268  std::lock_guard sl(mSubLock);
+
3269 
+
3270  if (mSubRTAccount.empty())
+
3271  return;
+
3272 
+
3273  if (!mSubAccount.empty() || !mSubRTAccount.empty() ||
+
3274  !mSubAccountHistory.empty())
+
3275  {
+
3276  for (auto const& affectedAccount : tx->getMentionedAccounts())
+
3277  {
+
3278  if (auto simiIt = mSubRTAccount.find(affectedAccount);
+
3279  simiIt != mSubRTAccount.end())
+
3280  {
+
3281  auto it = simiIt->second.begin();
+
3282 
+
3283  while (it != simiIt->second.end())
+
3284  {
+
3285  InfoSub::pointer p = it->second.lock();
+
3286 
+
3287  if (p)
+
3288  {
+
3289  notify.insert(p);
+
3290  ++it;
+
3291  ++iProposed;
+
3292  }
+
3293  else
+
3294  it = simiIt->second.erase(it);
+
3295  }
+
3296  }
+
3297  }
+
3298  }
+
3299  }
+
3300 
+
3301  JLOG(m_journal.trace()) << "pubProposedAccountTransaction: " << iProposed;
+
3302 
+
3303  if (!notify.empty() || !accountHistoryNotify.empty())
+
3304  {
+
3305  Json::Value jvObj = transJson(*tx, result, false, ledger);
+
3306 
+
3307  for (InfoSub::ref isrListener : notify)
+
3308  isrListener->send(jvObj, true);
+
3309 
+
3310  assert(!jvObj.isMember(jss::account_history_tx_stream));
+
3311  for (auto& info : accountHistoryNotify)
+
3312  {
+
3313  auto& index = info.index_;
+
3314  if (index->forwardTxIndex_ == 0 && !index->haveHistorical_)
+
3315  jvObj[jss::account_history_tx_first] = true;
+
3316  jvObj[jss::account_history_tx_index] = index->forwardTxIndex_++;
+
3317  info.sink_->send(jvObj, true);
+
3318  }
+
3319  }
+
3320 }
+
3321 
+
3322 //
+
3323 // Monitoring
+
3324 //
+
3325 
+
3326 void
+
3327 NetworkOPsImp::subAccount(
+
3328  InfoSub::ref isrListener,
+
3329  hash_set<AccountID> const& vnaAccountIDs,
+
3330  bool rt)
+
3331 {
+
3332  SubInfoMapType& subMap = rt ? mSubRTAccount : mSubAccount;
+
3333 
+
3334  for (auto const& naAccountID : vnaAccountIDs)
+
3335  {
+
3336  JLOG(m_journal.trace())
+
3337  << "subAccount: account: " << toBase58(naAccountID);
+
3338 
+
3339  isrListener->insertSubAccountInfo(naAccountID, rt);
+
3340  }
+
3341 
+
3342  std::lock_guard sl(mSubLock);
+
3343 
+
3344  for (auto const& naAccountID : vnaAccountIDs)
+
3345  {
+
3346  auto simIterator = subMap.find(naAccountID);
+
3347  if (simIterator == subMap.end())
+
3348  {
+
3349  // Not found, note that account has a new single listner.
+
3350  SubMapType usisElement;
+
3351  usisElement[isrListener->getSeq()] = isrListener;
+
3352  // VFALCO NOTE This is making a needless copy of naAccountID
+
3353  subMap.insert(simIterator, make_pair(naAccountID, usisElement));
+
3354  }
+
3355  else
+
3356  {
+
3357  // Found, note that the account has another listener.
+
3358  simIterator->second[isrListener->getSeq()] = isrListener;
+
3359  }
+
3360  }
+
3361 }
+
3362 
+
3363 void
+
3364 NetworkOPsImp::unsubAccount(
+
3365  InfoSub::ref isrListener,
+
3366  hash_set<AccountID> const& vnaAccountIDs,
+
3367  bool rt)
+
3368 {
+
3369  for (auto const& naAccountID : vnaAccountIDs)
+
3370  {
+
3371  // Remove from the InfoSub
+
3372  isrListener->deleteSubAccountInfo(naAccountID, rt);
+
3373  }
+
3374 
+
3375  // Remove from the server
+
3376  unsubAccountInternal(isrListener->getSeq(), vnaAccountIDs, rt);
+
3377 }
+
3378 
+
3379 void
+
3380 NetworkOPsImp::unsubAccountInternal(
+
3381  std::uint64_t uSeq,
+
3382  hash_set<AccountID> const& vnaAccountIDs,
+
3383  bool rt)
+
3384 {
+
3385  std::lock_guard sl(mSubLock);
+
3386 
+
3387  SubInfoMapType& subMap = rt ? mSubRTAccount : mSubAccount;
+
3388 
+
3389  for (auto const& naAccountID : vnaAccountIDs)
+
3390  {
+
3391  auto simIterator = subMap.find(naAccountID);
+
3392 
+
3393  if (simIterator != subMap.end())
+
3394  {
+
3395  // Found
+
3396  simIterator->second.erase(uSeq);
+
3397 
+
3398  if (simIterator->second.empty())
+
3399  {
+
3400  // Don't need hash entry.
+
3401  subMap.erase(simIterator);
+
3402  }
+
3403  }
+
3404  }
+
3405 }
+
3406 
+
3407 void
+
3408 NetworkOPsImp::addAccountHistoryJob(SubAccountHistoryInfoWeak subInfo)
+
3409 {
+
3410  enum DatabaseType { Postgres, Sqlite, None };
+
3411  static const auto databaseType = [&]() -> DatabaseType {
+
3412 #ifdef RIPPLED_REPORTING
+
3413  if (app_.config().reporting())
+
3414  {
+
3415  // Use a dynamic_cast to return DatabaseType::None
+
3416  // on failure.
+
3417  if (dynamic_cast<PostgresDatabase*>(&app_.getRelationalDatabase()))
+
3418  {
+
3419  return DatabaseType::Postgres;
+
3420  }
+
3421  return DatabaseType::None;
+
3422  }
+
3423  else
+
3424  {
+
3425  // Use a dynamic_cast to return DatabaseType::None
+
3426  // on failure.
+
3427  if (dynamic_cast<SQLiteDatabase*>(&app_.getRelationalDatabase()))
+
3428  {
+
3429  return DatabaseType::Sqlite;
+
3430  }
+
3431  return DatabaseType::None;
+
3432  }
+
3433 #else
+
3434  // Use a dynamic_cast to return DatabaseType::None
+
3435  // on failure.
+
3436  if (dynamic_cast<SQLiteDatabase*>(&app_.getRelationalDatabase()))
+
3437  {
+
3438  return DatabaseType::Sqlite;
+
3439  }
+
3440  return DatabaseType::None;
+
3441 #endif
+
3442  }();
+
3443 
+
3444  if (databaseType == DatabaseType::None)
+
3445  {
+
3446  JLOG(m_journal.error())
+
3447  << "AccountHistory job for account "
+
3448  << toBase58(subInfo.index_->accountId_) << " no database";
+
3449  if (auto sptr = subInfo.sinkWptr_.lock(); sptr)
+
3450  {
+
3451  sptr->send(rpcError(rpcINTERNAL), true);
+
3452  unsubAccountHistory(sptr, subInfo.index_->accountId_, false);
+
3453  }
+
3454  return;
+
3455  }
+
3456 
+
3457  app_.getJobQueue().addJob(
+
3458  jtCLIENT_ACCT_HIST,
+
3459  "AccountHistoryTxStream",
+
3460  [this, dbType = databaseType, subInfo]() {
+
3461  auto const& accountId = subInfo.index_->accountId_;
+
3462  auto& lastLedgerSeq = subInfo.index_->historyLastLedgerSeq_;
+
3463  auto& txHistoryIndex = subInfo.index_->historyTxIndex_;
+
3464 
+
3465  JLOG(m_journal.trace())
+
3466  << "AccountHistory job for account " << toBase58(accountId)
+
3467  << " started. lastLedgerSeq=" << lastLedgerSeq;
+
3468 
+
3469  auto isFirstTx = [&](std::shared_ptr<Transaction> const& tx,
+
3470  std::shared_ptr<TxMeta> const& meta) -> bool {
+
3471  /*
+
3472  * genesis account: first tx is the one with seq 1
+
3473  * other account: first tx is the one created the account
+
3474  */
+
3475  if (accountId == genesisAccountId)
+
3476  {
+
3477  auto stx = tx->getSTransaction();
+
3478  if (stx->getAccountID(sfAccount) == accountId &&
+
3479  stx->getSeqProxy().value() == 1)
+
3480  return true;
+
3481  }
+
3482 
+
3483  for (auto& node : meta->getNodes())
+
3484  {
+
3485  if (node.getFieldU16(sfLedgerEntryType) != ltACCOUNT_ROOT)
+
3486  continue;
+
3487 
+
3488  if (node.isFieldPresent(sfNewFields))
+
3489  {
+
3490  if (auto inner = dynamic_cast<const STObject*>(
+
3491  node.peekAtPField(sfNewFields));
+
3492  inner)
+
3493  {
+
3494  if (inner->isFieldPresent(sfAccount) &&
+
3495  inner->getAccountID(sfAccount) == accountId)
+
3496  {
+
3497  return true;
+
3498  }
+
3499  }
+
3500  }
+
3501  }
+
3502 
+
3503  return false;
+
3504  };
+
3505 
+
3506  auto send = [&](Json::Value const& jvObj,
+
3507  bool unsubscribe) -> bool {
+
3508  if (auto sptr = subInfo.sinkWptr_.lock(); sptr)
+
3509  {
+
3510  sptr->send(jvObj, true);
+
3511  if (unsubscribe)
+
3512  unsubAccountHistory(sptr, accountId, false);
+
3513  return true;
+
3514  }
+
3515 
+
3516  return false;
+
3517  };
+
3518 
+
3519  auto getMoreTxns =
+
3520  [&](std::uint32_t minLedger,
+
3521  std::uint32_t maxLedger,
+
3522  std::optional<RelationalDatabase::AccountTxMarker> marker)
+
3523  -> std::optional<std::pair<
+
3524  RelationalDatabase::AccountTxs,
+
3525  std::optional<RelationalDatabase::AccountTxMarker>>> {
+
3526  switch (dbType)
+
3527  {
+
3528  case Postgres: {
+
3529  auto db = static_cast<PostgresDatabase*>(
+
3530  &app_.getRelationalDatabase());
+
3531  RelationalDatabase::AccountTxArgs args;
+
3532  args.account = accountId;
+
3533  LedgerRange range{minLedger, maxLedger};
+
3534  args.ledger = range;
+
3535  args.marker = marker;
+
3536  auto [txResult, status] = db->getAccountTx(args);
+
3537  if (status != rpcSUCCESS)
+
3538  {
+
3539  JLOG(m_journal.debug())
+
3540  << "AccountHistory job for account "
+
3541  << toBase58(accountId)
+
3542  << " getAccountTx failed";
+
3543  return {};
+
3544  }
+
3545 
+
3546  if (auto txns =
+
3547  std::get_if<RelationalDatabase::AccountTxs>(
+
3548  &txResult.transactions);
+
3549  txns)
+
3550  {
+
3551  return std::make_pair(*txns, txResult.marker);
+
3552  }
+
3553  else
+
3554  {
+
3555  JLOG(m_journal.debug())
+
3556  << "AccountHistory job for account "
+
3557  << toBase58(accountId)
+
3558  << " getAccountTx wrong data";
+
3559  return {};
+
3560  }
+
3561  }
+
3562  case Sqlite: {
+
3563  auto db = static_cast<SQLiteDatabase*>(
+
3564  &app_.getRelationalDatabase());
+
3565  RelationalDatabase::AccountTxPageOptions options{
+
3566  accountId, minLedger, maxLedger, marker, 0, true};
+
3567  return db->newestAccountTxPage(options);
+
3568  }
+
3569  default: {
+
3570  assert(false);
+
3571  return {};
+
3572  }
+
3573  }
+
3574  };
+
3575 
+
3576  /*
+
3577  * search backward until the genesis ledger or asked to stop
+
3578  */
+
3579  while (lastLedgerSeq >= 2 && !subInfo.index_->stopHistorical_)
+
3580  {
+
3581  int feeChargeCount = 0;
+
3582  if (auto sptr = subInfo.sinkWptr_.lock(); sptr)
+
3583  {
+
3584  sptr->getConsumer().charge(Resource::feeMediumBurdenRPC);
+
3585  ++feeChargeCount;
+
3586  }
+
3587  else
+
3588  {
+
3589  JLOG(m_journal.trace())
+
3590  << "AccountHistory job for account "
+
3591  << toBase58(accountId) << " no InfoSub. Fee charged "
+
3592  << feeChargeCount << " times.";
+
3593  return;
+
3594  }
+
3595 
+
3596  // try to search in 1024 ledgers till reaching genesis ledgers
+
3597  auto startLedgerSeq =
+
3598  (lastLedgerSeq > 1024 + 2 ? lastLedgerSeq - 1024 : 2);
+
3599  JLOG(m_journal.trace())
+
3600  << "AccountHistory job for account " << toBase58(accountId)
+
3601  << ", working on ledger range [" << startLedgerSeq << ","
+
3602  << lastLedgerSeq << "]";
+
3603 
+
3604  auto haveRange = [&]() -> bool {
+
3605  std::uint32_t validatedMin = UINT_MAX;
+
3606  std::uint32_t validatedMax = 0;
+
3607  auto haveSomeValidatedLedgers =
+
3608  app_.getLedgerMaster().getValidatedRange(
+
3609  validatedMin, validatedMax);
+
3610 
+
3611  return haveSomeValidatedLedgers &&
+
3612  validatedMin <= startLedgerSeq &&
+
3613  lastLedgerSeq <= validatedMax;
+
3614  }();
+
3615 
+
3616  if (!haveRange)
+
3617  {
+
3618  JLOG(m_journal.debug())
+
3619  << "AccountHistory reschedule job for account "
+
3620  << toBase58(accountId) << ", incomplete ledger range ["
+
3621  << startLedgerSeq << "," << lastLedgerSeq << "]";
+
3622  setAccountHistoryJobTimer(subInfo);
+
3623  return;
+
3624  }
+
3625 
+
3626  std::optional<RelationalDatabase::AccountTxMarker> marker{};
+
3627  while (!subInfo.index_->stopHistorical_)
+
3628  {
+
3629  auto dbResult =
+
3630  getMoreTxns(startLedgerSeq, lastLedgerSeq, marker);
+
3631  if (!dbResult)
+
3632  {
+
3633  JLOG(m_journal.debug())
+
3634  << "AccountHistory job for account "
+
3635  << toBase58(accountId) << " getMoreTxns failed.";
+
3636  send(rpcError(rpcINTERNAL), true);
+
3637  return;
+
3638  }
+
3639 
+
3640  auto const& txns = dbResult->first;
+
3641  marker = dbResult->second;
+
3642  for (auto const& [tx, meta] : txns)
+
3643  {
+
3644  if (!tx || !meta)
+
3645  {
+
3646  JLOG(m_journal.debug())
+
3647  << "AccountHistory job for account "
+
3648  << toBase58(accountId) << " empty tx or meta.";
+
3649  send(rpcError(rpcINTERNAL), true);
+
3650  return;
+
3651  }
+
3652  auto curTxLedger =
+
3653  app_.getLedgerMaster().getLedgerBySeq(
+
3654  tx->getLedger());
+
3655  if (!curTxLedger)
+
3656  {
+
3657  JLOG(m_journal.debug())
+
3658  << "AccountHistory job for account "
+
3659  << toBase58(accountId) << " no ledger.";
+
3660  send(rpcError(rpcINTERNAL), true);
+
3661  return;
+
3662  }
+
3663  std::shared_ptr<STTx const> stTxn =
+
3664  tx->getSTransaction();
+
3665  if (!stTxn)
+
3666  {
+
3667  JLOG(m_journal.debug())
+
3668  << "AccountHistory job for account "
+
3669  << toBase58(accountId)
+
3670  << " getSTransaction failed.";
+
3671  send(rpcError(rpcINTERNAL), true);
+
3672  return;
+
3673  }
+
3674  Json::Value jvTx = transJson(
+
3675  *stTxn, meta->getResultTER(), true, curTxLedger);
+
3676  jvTx[jss::meta] = meta->getJson(JsonOptions::none);
+
3677  jvTx[jss::account_history_tx_index] = txHistoryIndex--;
+
3678  RPC::insertDeliveredAmount(
+
3679  jvTx[jss::meta], *curTxLedger, stTxn, *meta);
+
3680  if (isFirstTx(tx, meta))
+
3681  {
+
3682  jvTx[jss::account_history_tx_first] = true;
+
3683  send(jvTx, false);
+
3684 
+
3685  JLOG(m_journal.trace())
+
3686  << "AccountHistory job for account "
+
3687  << toBase58(accountId)
+
3688  << " done, found last tx.";
+
3689  return;
+
3690  }
+
3691  else
+
3692  {
+
3693  send(jvTx, false);
+
3694  }
+
3695  }
+
3696 
+
3697  if (marker)
+
3698  {
+
3699  JLOG(m_journal.trace())
+
3700  << "AccountHistory job for account "
+
3701  << toBase58(accountId)
+
3702  << " paging, marker=" << marker->ledgerSeq << ":"
+
3703  << marker->txnSeq;
+
3704  }
+
3705  else
+
3706  {
+
3707  break;
+
3708  }
+
3709  }
+
3710 
+
3711  if (!subInfo.index_->stopHistorical_)
+
3712  {
+
3713  lastLedgerSeq = startLedgerSeq - 1;
+
3714  if (lastLedgerSeq <= 1)
+
3715  {
+
3716  JLOG(m_journal.trace())
+
3717  << "AccountHistory job for account "
+
3718  << toBase58(accountId)
+
3719  << " done, reached genesis ledger.";
+
3720  return;
+
3721  }
+
3722  }
+
3723  }
+
3724  });
+
3725 }
+
3726 
+
3727 void
+
3728 NetworkOPsImp::subAccountHistoryStart(
+
3729  std::shared_ptr<ReadView const> const& ledger,
+
3730  SubAccountHistoryInfoWeak& subInfo)
+
3731 {
+
3732  subInfo.index_->separationLedgerSeq_ = ledger->seq();
+
3733  auto const& accountId = subInfo.index_->accountId_;
+
3734  auto const accountKeylet = keylet::account(accountId);
+
3735  if (!ledger->exists(accountKeylet))
+
3736  {
+
3737  JLOG(m_journal.debug())
+
3738  << "subAccountHistoryStart, no account " << toBase58(accountId)
+
3739  << ", no need to add AccountHistory job.";
+
3740  return;
+
3741  }
+
3742  if (accountId == genesisAccountId)
+
3743  {
+
3744  if (auto const sleAcct = ledger->read(accountKeylet); sleAcct)
+
3745  {
+
3746  if (sleAcct->getFieldU32(sfSequence) == 1)
+
3747  {
+
3748  JLOG(m_journal.debug())
+
3749  << "subAccountHistoryStart, genesis account "
+
3750  << toBase58(accountId)
+
3751  << " does not have tx, no need to add AccountHistory job.";
+
3752  return;
+
3753  }
+
3754  }
+
3755  else
+
3756  {
+
3757  assert(false);
+
3758  return;
+
3759  }
+
3760  }
+
3761  subInfo.index_->historyLastLedgerSeq_ = ledger->seq();
+
3762  subInfo.index_->haveHistorical_ = true;
+
3763 
+
3764  JLOG(m_journal.debug())
+
3765  << "subAccountHistoryStart, add AccountHistory job: accountId="
+
3766  << toBase58(accountId) << ", currentLedgerSeq=" << ledger->seq();
+
3767 
+
3768  addAccountHistoryJob(subInfo);
+
3769 }
+
3770 
+
3771 error_code_i
+
3772 NetworkOPsImp::subAccountHistory(
+
3773  InfoSub::ref isrListener,
+
3774  AccountID const& accountId)
+
3775 {
+
3776  if (!isrListener->insertSubAccountHistory(accountId))
+
3777  {
+
3778  JLOG(m_journal.debug())
+
3779  << "subAccountHistory, already subscribed to account "
+
3780  << toBase58(accountId);
+
3781  return rpcINVALID_PARAMS;
+
3782  }
+
3783 
+
3784  std::lock_guard sl(mSubLock);
+
3785  SubAccountHistoryInfoWeak ahi{
+
3786  isrListener, std::make_shared<SubAccountHistoryIndex>(accountId)};
+
3787  auto simIterator = mSubAccountHistory.find(accountId);
+
3788  if (simIterator == mSubAccountHistory.end())
+
3789  {
+
3790  hash_map<std::uint64_t, SubAccountHistoryInfoWeak> inner;
+
3791  inner.emplace(isrListener->getSeq(), ahi);
+
3792  mSubAccountHistory.insert(
+
3793  simIterator, std::make_pair(accountId, inner));
+
3794  }
+
3795  else
+
3796  {
+
3797  simIterator->second.emplace(isrListener->getSeq(), ahi);
+
3798  }
+
3799 
+
3800  auto const ledger = app_.getLedgerMaster().getValidatedLedger();
+
3801  if (ledger)
+
3802  {
+
3803  subAccountHistoryStart(ledger, ahi);
+
3804  }
+
3805  else
+
3806  {
+
3807  // The node does not have validated ledgers, so wait for
+
3808  // one before start streaming.
+
3809  // In this case, the subscription is also considered successful.
+
3810  JLOG(m_journal.debug())
+
3811  << "subAccountHistory, no validated ledger yet, delay start";
+
3812  }
+
3813 
+
3814  return rpcSUCCESS;
+
3815 }
+
3816 
+
3817 void
+
3818 NetworkOPsImp::unsubAccountHistory(
+
3819  InfoSub::ref isrListener,
+
3820  AccountID const& account,
+
3821  bool historyOnly)
+
3822 {
+
3823  if (!historyOnly)
+
3824  isrListener->deleteSubAccountHistory(account);
+
3825  unsubAccountHistoryInternal(isrListener->getSeq(), account, historyOnly);
+
3826 }
+
3827 
+
3828 void
+
3829 NetworkOPsImp::unsubAccountHistoryInternal(
+
3830  std::uint64_t seq,
+
3831  const AccountID& account,
+
3832  bool historyOnly)
+
3833 {
+
3834  std::lock_guard sl(mSubLock);
+
3835  auto simIterator = mSubAccountHistory.find(account);
+
3836  if (simIterator != mSubAccountHistory.end())
+
3837  {
+
3838  auto& subInfoMap = simIterator->second;
+
3839  auto subInfoIter = subInfoMap.find(seq);
+
3840  if (subInfoIter != subInfoMap.end())
+
3841  {
+
3842  subInfoIter->second.index_->stopHistorical_ = true;
+
3843  }
+
3844 
+
3845  if (!historyOnly)
+
3846  {
+
3847  simIterator->second.erase(seq);
+
3848  if (simIterator->second.empty())
+
3849  {
+
3850  mSubAccountHistory.erase(simIterator);
+
3851  }
+
3852  }
+
3853  JLOG(m_journal.debug())
+
3854  << "unsubAccountHistory, account " << toBase58(account)
+
3855  << ", historyOnly = " << (historyOnly ? "true" : "false");
+
3856  }
+
3857 }
+
3858 
+
3859 bool
+
3860 NetworkOPsImp::subBook(InfoSub::ref isrListener, Book const& book)
+
3861 {
+
3862  if (auto listeners = app_.getOrderBookDB().makeBookListeners(book))
+
3863  listeners->addSubscriber(isrListener);
+
3864  else
+
3865  assert(false);
+
3866  return true;
+
3867 }
+
3868 
+
3869 bool
+
3870 NetworkOPsImp::unsubBook(std::uint64_t uSeq, Book const& book)
+
3871 {
+
3872  if (auto listeners = app_.getOrderBookDB().getBookListeners(book))
+
3873  listeners->removeSubscriber(uSeq);
+
3874 
+
3875  return true;
+
3876 }
+
3877 
+
3878 std::uint32_t
+
3879 NetworkOPsImp::acceptLedger(
+
3880  std::optional<std::chrono::milliseconds> consensusDelay)
+
3881 {
+
3882  // This code-path is exclusively used when the server is in standalone
+
3883  // mode via `ledger_accept`
+
3884  assert(m_standalone);
+
3885 
+
3886  if (!m_standalone)
+
3887  Throw<std::runtime_error>(
+
3888  "Operation only possible in STANDALONE mode.");
+
3889 
+
3890  // FIXME Could we improve on this and remove the need for a specialized
+
3891  // API in Consensus?
+
3892  beginConsensus(m_ledgerMaster.getClosedLedger()->info().hash);
+
3893  mConsensus.simulate(app_.timeKeeper().closeTime(), consensusDelay);
+
3894  return m_ledgerMaster.getCurrentLedger()->info().seq;
+
3895 }
+
3896 
+
3897 // <-- bool: true=added, false=already there
+
3898 bool
+
3899 NetworkOPsImp::subLedger(InfoSub::ref isrListener, Json::Value& jvResult)
+
3900 {
+
3901  if (auto lpClosed = m_ledgerMaster.getValidatedLedger())
+
3902  {
+
3903  jvResult[jss::ledger_index] = lpClosed->info().seq;
+
3904  jvResult[jss::ledger_hash] = to_string(lpClosed->info().hash);
+
3905  jvResult[jss::ledger_time] = Json::Value::UInt(
+
3906  lpClosed->info().closeTime.time_since_epoch().count());
+
3907  if (!lpClosed->rules().enabled(featureXRPFees))
+
3908  jvResult[jss::fee_ref] = Config::FEE_UNITS_DEPRECATED;
+
3909  jvResult[jss::fee_base] = lpClosed->fees().base.jsonClipped();
+
3910  jvResult[jss::reserve_base] =
+
3911  lpClosed->fees().accountReserve(0).jsonClipped();
+
3912  jvResult[jss::reserve_inc] = lpClosed->fees().increment.jsonClipped();
+
3913  }
+
3914 
+
3915  if ((mMode >= OperatingMode::SYNCING) && !isNeedNetworkLedger())
+
3916  {
+
3917  jvResult[jss::validated_ledgers] =
+
3918  app_.getLedgerMaster().getCompleteLedgers();
+
3919  }
+
3920 
+
3921  std::lock_guard sl(mSubLock);
+
3922  return mStreamMaps[sLedger]
+
3923  .emplace(isrListener->getSeq(), isrListener)
+
3924  .second;
+
3925 }
+
3926 
+
3927 // <-- bool: true=added, false=already there
+
3928 bool
+
3929 NetworkOPsImp::subBookChanges(InfoSub::ref isrListener)
+
3930 {
+
3931  std::lock_guard sl(mSubLock);
+
3932  return mStreamMaps[sBookChanges]
+
3933  .emplace(isrListener->getSeq(), isrListener)
+
3934  .second;
+
3935 }
+
3936 
+
3937 // <-- bool: true=erased, false=was not there
+
3938 bool
+
3939 NetworkOPsImp::unsubLedger(std::uint64_t uSeq)
+
3940 {
+
3941  std::lock_guard sl(mSubLock);
+
3942  return mStreamMaps[sLedger].erase(uSeq);
+
3943 }
+
3944 
+
3945 // <-- bool: true=erased, false=was not there
+
3946 bool
+
3947 NetworkOPsImp::unsubBookChanges(std::uint64_t uSeq)
+
3948 {
+
3949  std::lock_guard sl(mSubLock);
+
3950  return mStreamMaps[sBookChanges].erase(uSeq);
+
3951 }
+
3952 
+
3953 // <-- bool: true=added, false=already there
+
3954 bool
+
3955 NetworkOPsImp::subManifests(InfoSub::ref isrListener)
+
3956 {
+
3957  std::lock_guard sl(mSubLock);
+
3958  return mStreamMaps[sManifests]
+
3959  .emplace(isrListener->getSeq(), isrListener)
+
3960  .second;
+
3961 }
+
3962 
+
3963 // <-- bool: true=erased, false=was not there
+
3964 bool
+
3965 NetworkOPsImp::unsubManifests(std::uint64_t uSeq)
+
3966 {
+
3967  std::lock_guard sl(mSubLock);
+
3968  return mStreamMaps[sManifests].erase(uSeq);
+
3969 }
+
3970 
+
3971 // <-- bool: true=added, false=already there
+
3972 bool
+
3973 NetworkOPsImp::subServer(
+
3974  InfoSub::ref isrListener,
+
3975  Json::Value& jvResult,
+
3976  bool admin)
+
3977 {
+
3978  uint256 uRandom;
+
3979 
+
3980  if (m_standalone)
+
3981  jvResult[jss::stand_alone] = m_standalone;
+
3982 
+
3983  // CHECKME: is it necessary to provide a random number here?
+
3984  beast::rngfill(uRandom.begin(), uRandom.size(), crypto_prng());
+
3985 
+
3986  auto const& feeTrack = app_.getFeeTrack();
+
3987  jvResult[jss::random] = to_string(uRandom);
+
3988  jvResult[jss::server_status] = strOperatingMode(admin);
+
3989  jvResult[jss::load_base] = feeTrack.getLoadBase();
+
3990  jvResult[jss::load_factor] = feeTrack.getLoadFactor();
+
3991  jvResult[jss::hostid] = getHostId(admin);
+
3992  jvResult[jss::pubkey_node] =
+
3993  toBase58(TokenType::NodePublic, app_.nodeIdentity().first);
+
3994 
+
3995  std::lock_guard sl(mSubLock);
+
3996  return mStreamMaps[sServer]
+
3997  .emplace(isrListener->getSeq(), isrListener)
+
3998  .second;
+
3999 }
+
4000 
+
4001 // <-- bool: true=erased, false=was not there
+
4002 bool
+
4003 NetworkOPsImp::unsubServer(std::uint64_t uSeq)
+
4004 {
+
4005  std::lock_guard sl(mSubLock);
+
4006  return mStreamMaps[sServer].erase(uSeq);
+
4007 }
+
4008 
+
4009 // <-- bool: true=added, false=already there
+
4010 bool
+
4011 NetworkOPsImp::subTransactions(InfoSub::ref isrListener)
+
4012 {
+
4013  std::lock_guard sl(mSubLock);
+
4014  return mStreamMaps[sTransactions]
+
4015  .emplace(isrListener->getSeq(), isrListener)
+
4016  .second;
+
4017 }
+
4018 
+
4019 // <-- bool: true=erased, false=was not there
+
4020 bool
+
4021 NetworkOPsImp::unsubTransactions(std::uint64_t uSeq)
+
4022 {
+
4023  std::lock_guard sl(mSubLock);
+
4024  return mStreamMaps[sTransactions].erase(uSeq);
+
4025 }
+
4026 
+
4027 // <-- bool: true=added, false=already there
+
4028 bool
+
4029 NetworkOPsImp::subRTTransactions(InfoSub::ref isrListener)
+
4030 {
+
4031  std::lock_guard sl(mSubLock);
+
4032  return mStreamMaps[sRTTransactions]
+
4033  .emplace(isrListener->getSeq(), isrListener)
+
4034  .second;
+
4035 }
+
4036 
+
4037 // <-- bool: true=erased, false=was not there
+
4038 bool
+
4039 NetworkOPsImp::unsubRTTransactions(std::uint64_t uSeq)
+
4040 {
+
4041  std::lock_guard sl(mSubLock);
+
4042  return mStreamMaps[sRTTransactions].erase(uSeq);
+
4043 }
+
4044 
+
4045 // <-- bool: true=added, false=already there
+
4046 bool
+
4047 NetworkOPsImp::subValidations(InfoSub::ref isrListener)
+
4048 {
+
4049  std::lock_guard sl(mSubLock);
+
4050  return mStreamMaps[sValidations]
+
4051  .emplace(isrListener->getSeq(), isrListener)
+
4052  .second;
+
4053 }
+
4054 
+
4055 void
+
4056 NetworkOPsImp::stateAccounting(Json::Value& obj)
+
4057 {
+
4058  accounting_.json(obj);
+
4059 }
+
4060 
+
4061 // <-- bool: true=erased, false=was not there
+
4062 bool
+
4063 NetworkOPsImp::unsubValidations(std::uint64_t uSeq)
+
4064 {
+
4065  std::lock_guard sl(mSubLock);
+
4066  return mStreamMaps[sValidations].erase(uSeq);
+
4067 }
+
4068 
+
4069 // <-- bool: true=added, false=already there
+
4070 bool
+
4071 NetworkOPsImp::subPeerStatus(InfoSub::ref isrListener)
+
4072 {
+
4073  std::lock_guard sl(mSubLock);
+
4074  return mStreamMaps[sPeerStatus]
+
4075  .emplace(isrListener->getSeq(), isrListener)
+
4076  .second;
+
4077 }
+
4078 
+
4079 // <-- bool: true=erased, false=was not there
+
4080 bool
+
4081 NetworkOPsImp::unsubPeerStatus(std::uint64_t uSeq)
+
4082 {
+
4083  std::lock_guard sl(mSubLock);
+
4084  return mStreamMaps[sPeerStatus].erase(uSeq);
+
4085 }
+
4086 
+
4087 // <-- bool: true=added, false=already there
+
4088 bool
+
4089 NetworkOPsImp::subConsensus(InfoSub::ref isrListener)
+
4090 {
+
4091  std::lock_guard sl(mSubLock);
+
4092  return mStreamMaps[sConsensusPhase]
+
4093  .emplace(isrListener->getSeq(), isrListener)
+
4094  .second;
+
4095 }
+
4096 
+
4097 // <-- bool: true=erased, false=was not there
+
4098 bool
+
4099 NetworkOPsImp::unsubConsensus(std::uint64_t uSeq)
+
4100 {
+
4101  std::lock_guard sl(mSubLock);
+
4102  return mStreamMaps[sConsensusPhase].erase(uSeq);
+
4103 }
+
4104 
+
4105 InfoSub::pointer
+
4106 NetworkOPsImp::findRpcSub(std::string const& strUrl)
+
4107 {
+
4108  std::lock_guard sl(mSubLock);
+
4109 
+
4110  subRpcMapType::iterator it = mRpcSubMap.find(strUrl);
+
4111 
+
4112  if (it != mRpcSubMap.end())
+
4113  return it->second;
+
4114 
+
4115  return InfoSub::pointer();
+
4116 }
+
4117 
+
4118 InfoSub::pointer
+
4119 NetworkOPsImp::addRpcSub(std::string const& strUrl, InfoSub::ref rspEntry)
+
4120 {
+
4121  std::lock_guard sl(mSubLock);
+
4122 
+
4123  mRpcSubMap.emplace(strUrl, rspEntry);
+
4124 
+
4125  return rspEntry;
+
4126 }
+
4127 
+
4128 bool
+
4129 NetworkOPsImp::tryRemoveRpcSub(std::string const& strUrl)
+
4130 {
+
4131  std::lock_guard sl(mSubLock);
+
4132  auto pInfo = findRpcSub(strUrl);
+
4133 
+
4134  if (!pInfo)
+
4135  return false;
+
4136 
+
4137  // check to see if any of the stream maps still hold a weak reference to
+
4138  // this entry before removing
+
4139  for (SubMapType const& map : mStreamMaps)
+
4140  {
+
4141  if (map.find(pInfo->getSeq()) != map.end())
+
4142  return false;
+
4143  }
+
4144  mRpcSubMap.erase(strUrl);
+
4145  return true;
+
4146 }
+
4147 
+
4148 #ifndef USE_NEW_BOOK_PAGE
+
4149 
+
4150 // NIKB FIXME this should be looked at. There's no reason why this shouldn't
+
4151 // work, but it demonstrated poor performance.
+
4152 //
+
4153 void
+
4154 NetworkOPsImp::getBookPage(
+
4155  std::shared_ptr<ReadView const>& lpLedger,
+
4156  Book const& book,
+
4157  AccountID const& uTakerID,
+
4158  bool const bProof,
+
4159  unsigned int iLimit,
+
4160  Json::Value const& jvMarker,
+
4161  Json::Value& jvResult)
+
4162 { // CAUTION: This is the old get book page logic
+
4163  Json::Value& jvOffers =
+
4164  (jvResult[jss::offers] = Json::Value(Json::arrayValue));
+
4165 
+
4166  std::unordered_map<AccountID, STAmount> umBalance;
+
4167  const uint256 uBookBase = getBookBase(book);
+
4168  const uint256 uBookEnd = getQualityNext(uBookBase);
+
4169  uint256 uTipIndex = uBookBase;
+
4170 
+
4171  if (auto stream = m_journal.trace())
+
4172  {
+
4173  stream << "getBookPage:" << book;
+
4174  stream << "getBookPage: uBookBase=" << uBookBase;
+
4175  stream << "getBookPage: uBookEnd=" << uBookEnd;
+
4176  stream << "getBookPage: uTipIndex=" << uTipIndex;
+
4177  }
+
4178 
+
4179  ReadView const& view = *lpLedger;
+
4180 
+
4181  bool const bGlobalFreeze = isGlobalFrozen(view, book.out.account) ||
+
4182  isGlobalFrozen(view, book.in.account);
+
4183 
+
4184  bool bDone = false;
+
4185  bool bDirectAdvance = true;
+
4186 
+
4187  std::shared_ptr<SLE const> sleOfferDir;
+
4188  uint256 offerIndex;
+
4189  unsigned int uBookEntry;
+
4190  STAmount saDirRate;
+
4191 
+
4192  auto const rate = transferRate(view, book.out.account);
+
4193  auto viewJ = app_.journal("View");
+
4194 
+
4195  while (!bDone && iLimit-- > 0)
+
4196  {
+
4197  if (bDirectAdvance)
+
4198  {
+
4199  bDirectAdvance = false;
+
4200 
+
4201  JLOG(m_journal.trace()) << "getBookPage: bDirectAdvance";
+
4202 
+
4203  auto const ledgerIndex = view.succ(uTipIndex, uBookEnd);
+
4204  if (ledgerIndex)
+
4205  sleOfferDir = view.read(keylet::page(*ledgerIndex));
+
4206  else
+
4207  sleOfferDir.reset();
+
4208 
+
4209  if (!sleOfferDir)
+
4210  {
+
4211  JLOG(m_journal.trace()) << "getBookPage: bDone";
+
4212  bDone = true;
+
4213  }
+
4214  else
+
4215  {
+
4216  uTipIndex = sleOfferDir->key();
+
4217  saDirRate = amountFromQuality(getQuality(uTipIndex));
+
4218 
+
4219  cdirFirst(view, uTipIndex, sleOfferDir, uBookEntry, offerIndex);
+
4220 
+
4221  JLOG(m_journal.trace())
+
4222  << "getBookPage: uTipIndex=" << uTipIndex;
+
4223  JLOG(m_journal.trace())
+
4224  << "getBookPage: offerIndex=" << offerIndex;
+
4225  }
+
4226  }
+
4227 
+
4228  if (!bDone)
+
4229  {
+
4230  auto sleOffer = view.read(keylet::offer(offerIndex));
+
4231 
+
4232  if (sleOffer)
+
4233  {
+
4234  auto const uOfferOwnerID = sleOffer->getAccountID(sfAccount);
+
4235  auto const& saTakerGets = sleOffer->getFieldAmount(sfTakerGets);
+
4236  auto const& saTakerPays = sleOffer->getFieldAmount(sfTakerPays);
+
4237  STAmount saOwnerFunds;
+
4238  bool firstOwnerOffer(true);
+
4239 
+
4240  if (book.out.account == uOfferOwnerID)
+
4241  {
+
4242  // If an offer is selling issuer's own IOUs, it is fully
+
4243  // funded.
+
4244  saOwnerFunds = saTakerGets;
+
4245  }
+
4246  else if (bGlobalFreeze)
+
4247  {
+
4248  // If either asset is globally frozen, consider all offers
+
4249  // that aren't ours to be totally unfunded
+
4250  saOwnerFunds.clear(book.out);
+
4251  }
+
4252  else
+
4253  {
+
4254  auto umBalanceEntry = umBalance.find(uOfferOwnerID);
+
4255  if (umBalanceEntry != umBalance.end())
+
4256  {
+
4257  // Found in running balance table.
+
4258 
+
4259  saOwnerFunds = umBalanceEntry->second;
+
4260  firstOwnerOffer = false;
+
4261  }
+
4262  else
+
4263  {
+
4264  // Did not find balance in table.
+
4265 
+
4266  saOwnerFunds = accountHolds(
+
4267  view,
+
4268  uOfferOwnerID,
+
4269  book.out.currency,
+
4270  book.out.account,
+
4271  fhZERO_IF_FROZEN,
+
4272  viewJ);
+
4273 
+
4274  if (saOwnerFunds < beast::zero)
+
4275  {
+
4276  // Treat negative funds as zero.
+
4277 
+
4278  saOwnerFunds.clear();
+
4279  }
+
4280  }
+
4281  }
+
4282 
+
4283  Json::Value jvOffer = sleOffer->getJson(JsonOptions::none);
+
4284 
+
4285  STAmount saTakerGetsFunded;
+
4286  STAmount saOwnerFundsLimit = saOwnerFunds;
+
4287  Rate offerRate = parityRate;
+
4288 
+
4289  if (rate != parityRate
+
4290  // Have a tranfer fee.
+
4291  && uTakerID != book.out.account
+
4292  // Not taking offers of own IOUs.
+
4293  && book.out.account != uOfferOwnerID)
+
4294  // Offer owner not issuing ownfunds
+
4295  {
+
4296  // Need to charge a transfer fee to offer owner.
+
4297  offerRate = rate;
+
4298  saOwnerFundsLimit = divide(saOwnerFunds, offerRate);
+
4299  }
+
4300 
+
4301  if (saOwnerFundsLimit >= saTakerGets)
+
4302  {
+
4303  // Sufficient funds no shenanigans.
+
4304  saTakerGetsFunded = saTakerGets;
+
4305  }
+
4306  else
+
4307  {
+
4308  // Only provide, if not fully funded.
+
4309 
+
4310  saTakerGetsFunded = saOwnerFundsLimit;
+
4311 
+
4312  saTakerGetsFunded.setJson(jvOffer[jss::taker_gets_funded]);
+
4313  std::min(
+
4314  saTakerPays,
+
4315  multiply(
+
4316  saTakerGetsFunded, saDirRate, saTakerPays.issue()))
+
4317  .setJson(jvOffer[jss::taker_pays_funded]);
+
4318  }
+
4319 
+
4320  STAmount saOwnerPays = (parityRate == offerRate)
+
4321  ? saTakerGetsFunded
+
4322  : std::min(
+
4323  saOwnerFunds, multiply(saTakerGetsFunded, offerRate));
+
4324 
+
4325  umBalance[uOfferOwnerID] = saOwnerFunds - saOwnerPays;
+
4326 
+
4327  // Include all offers funded and unfunded
+
4328  Json::Value& jvOf = jvOffers.append(jvOffer);
+
4329  jvOf[jss::quality] = saDirRate.getText();
+
4330 
+
4331  if (firstOwnerOffer)
+
4332  jvOf[jss::owner_funds] = saOwnerFunds.getText();
+
4333  }
+
4334  else
+
4335  {
+
4336  JLOG(m_journal.warn()) << "Missing offer";
+
4337  }
+
4338 
+
4339  if (!cdirNext(view, uTipIndex, sleOfferDir, uBookEntry, offerIndex))
+
4340  {
+
4341  bDirectAdvance = true;
+
4342  }
+
4343  else
+
4344  {
+
4345  JLOG(m_journal.trace())
+
4346  << "getBookPage: offerIndex=" << offerIndex;
+
4347  }
+
4348  }
+
4349  }
+
4350 
+
4351  // jvResult[jss::marker] = Json::Value(Json::arrayValue);
+
4352  // jvResult[jss::nodes] = Json::Value(Json::arrayValue);
+
4353 }
+
4354 
+
4355 #else
+
4356 
+
4357 // This is the new code that uses the book iterators
+
4358 // It has temporarily been disabled
+
4359 
+
4360 void
+
4361 NetworkOPsImp::getBookPage(
+
4362  std::shared_ptr<ReadView const> lpLedger,
+
4363  Book const& book,
+
4364  AccountID const& uTakerID,
+
4365  bool const bProof,
+
4366  unsigned int iLimit,
+
4367  Json::Value const& jvMarker,
+
4368  Json::Value& jvResult)
+
4369 {
+
4370  auto& jvOffers = (jvResult[jss::offers] = Json::Value(Json::arrayValue));
+
4371 
+
4372  std::map<AccountID, STAmount> umBalance;
+
4373 
+
4374  MetaView lesActive(lpLedger, tapNONE, true);
+
4375  OrderBookIterator obIterator(lesActive, book);
+
4376 
+
4377  auto const rate = transferRate(lesActive, book.out.account);
+
4378 
+
4379  const bool bGlobalFreeze = lesActive.isGlobalFrozen(book.out.account) ||
+
4380  lesActive.isGlobalFrozen(book.in.account);
+
4381 
+
4382  while (iLimit-- > 0 && obIterator.nextOffer())
+
4383  {
+
4384  SLE::pointer sleOffer = obIterator.getCurrentOffer();
+
4385  if (sleOffer)
+
4386  {
+
4387  auto const uOfferOwnerID = sleOffer->getAccountID(sfAccount);
+
4388  auto const& saTakerGets = sleOffer->getFieldAmount(sfTakerGets);
+
4389  auto const& saTakerPays = sleOffer->getFieldAmount(sfTakerPays);
+
4390  STAmount saDirRate = obIterator.getCurrentRate();
+
4391  STAmount saOwnerFunds;
+
4392 
+
4393  if (book.out.account == uOfferOwnerID)
+
4394  {
+
4395  // If offer is selling issuer's own IOUs, it is fully funded.
+
4396  saOwnerFunds = saTakerGets;
+
4397  }
+
4398  else if (bGlobalFreeze)
+
4399  {
+
4400  // If either asset is globally frozen, consider all offers
+
4401  // that aren't ours to be totally unfunded
+
4402  saOwnerFunds.clear(book.out);
+
4403  }
+
4404  else
+
4405  {
+
4406  auto umBalanceEntry = umBalance.find(uOfferOwnerID);
+
4407 
+
4408  if (umBalanceEntry != umBalance.end())
+
4409  {
+
4410  // Found in running balance table.
+
4411 
+
4412  saOwnerFunds = umBalanceEntry->second;
+
4413  }
+
4414  else
+
4415  {
+
4416  // Did not find balance in table.
+
4417 
+
4418  saOwnerFunds = lesActive.accountHolds(
+
4419  uOfferOwnerID,
+
4420  book.out.currency,
+
4421  book.out.account,
+
4422  fhZERO_IF_FROZEN);
+
4423 
+
4424  if (saOwnerFunds.isNegative())
+
4425  {
+
4426  // Treat negative funds as zero.
+
4427 
+
4428  saOwnerFunds.zero();
+
4429  }
+
4430  }
+
4431  }
+
4432 
+
4433  Json::Value jvOffer = sleOffer->getJson(JsonOptions::none);
+
4434 
+
4435  STAmount saTakerGetsFunded;
+
4436  STAmount saOwnerFundsLimit = saOwnerFunds;
+
4437  Rate offerRate = parityRate;
+
4438 
+
4439  if (rate != parityRate
+
4440  // Have a tranfer fee.
+
4441  && uTakerID != book.out.account
+
4442  // Not taking offers of own IOUs.
+
4443  && book.out.account != uOfferOwnerID)
+
4444  // Offer owner not issuing ownfunds
+
4445  {
+
4446  // Need to charge a transfer fee to offer owner.
+
4447  offerRate = rate;
+
4448  saOwnerFundsLimit = divide(saOwnerFunds, offerRate);
+
4449  }
+
4450 
+
4451  if (saOwnerFundsLimit >= saTakerGets)
+
4452  {
+
4453  // Sufficient funds no shenanigans.
+
4454  saTakerGetsFunded = saTakerGets;
+
4455  }
+
4456  else
+
4457  {
+
4458  // Only provide, if not fully funded.
+
4459  saTakerGetsFunded = saOwnerFundsLimit;
+
4460 
+
4461  saTakerGetsFunded.setJson(jvOffer[jss::taker_gets_funded]);
+
4462 
+
4463  // TOOD(tom): The result of this expression is not used - what's
+
4464  // going on here?
+
4465  std::min(
+
4466  saTakerPays,
+
4467  multiply(saTakerGetsFunded, saDirRate, saTakerPays.issue()))
+
4468  .setJson(jvOffer[jss::taker_pays_funded]);
+
4469  }
+
4470 
+
4471  STAmount saOwnerPays = (parityRate == offerRate)
+
4472  ? saTakerGetsFunded
+
4473  : std::min(
+
4474  saOwnerFunds, multiply(saTakerGetsFunded, offerRate));
+
4475 
+
4476  umBalance[uOfferOwnerID] = saOwnerFunds - saOwnerPays;
+
4477 
+
4478  if (!saOwnerFunds.isZero() || uOfferOwnerID == uTakerID)
+
4479  {
+
4480  // Only provide funded offers and offers of the taker.
+
4481  Json::Value& jvOf = jvOffers.append(jvOffer);
+
4482  jvOf[jss::quality] = saDirRate.getText();
+
4483  }
+
4484  }
+
4485  }
+
4486 
+
4487  // jvResult[jss::marker] = Json::Value(Json::arrayValue);
+
4488  // jvResult[jss::nodes] = Json::Value(Json::arrayValue);
+
4489 }
+
4490 
+
4491 #endif
+
4492 
+
4493 inline void
+
4494 NetworkOPsImp::collect_metrics()
+
4495 {
+
4496  auto [counters, mode, start, initialSync] = accounting_.getCounterData();
+
4497  auto const current = std::chrono::duration_cast<std::chrono::microseconds>(
+
4498  std::chrono::steady_clock::now() - start);
+
4499  counters[static_cast<std::size_t>(mode)].dur += current;
+
4500 
+
4501  std::lock_guard lock(m_statsMutex);
+
4502  m_stats.disconnected_duration.set(
+
4503  counters[static_cast<std::size_t>(OperatingMode::DISCONNECTED)]
+
4504  .dur.count());
+
4505  m_stats.connected_duration.set(
+
4506  counters[static_cast<std::size_t>(OperatingMode::CONNECTED)]
+
4507  .dur.count());
+
4508  m_stats.syncing_duration.set(
+
4509  counters[static_cast<std::size_t>(OperatingMode::SYNCING)].dur.count());
+
4510  m_stats.tracking_duration.set(
+
4511  counters[static_cast<std::size_t>(OperatingMode::TRACKING)]
+
4512  .dur.count());
+
4513  m_stats.full_duration.set(
+
4514  counters[static_cast<std::size_t>(OperatingMode::FULL)].dur.count());
+
4515 
+
4516  m_stats.disconnected_transitions.set(
+
4517  counters[static_cast<std::size_t>(OperatingMode::DISCONNECTED)]
+
4518  .transitions);
+
4519  m_stats.connected_transitions.set(
+
4520  counters[static_cast<std::size_t>(OperatingMode::CONNECTED)]
+
4521  .transitions);
+
4522  m_stats.syncing_transitions.set(
+
4523  counters[static_cast<std::size_t>(OperatingMode::SYNCING)].transitions);
+
4524  m_stats.tracking_transitions.set(
+
4525  counters[static_cast<std::size_t>(OperatingMode::TRACKING)]
+
4526  .transitions);
+
4527  m_stats.full_transitions.set(
+
4528  counters[static_cast<std::size_t>(OperatingMode::FULL)].transitions);
+
4529 }
+
4530 
+
4531 void
+
4532 NetworkOPsImp::StateAccounting::mode(OperatingMode om)
+
4533 {
+
4534  auto now = std::chrono::steady_clock::now();
+
4535 
+
4536  std::lock_guard lock(mutex_);
+
4537  ++counters_[static_cast<std::size_t>(om)].transitions;
+
4538  if (om == OperatingMode::FULL &&
+
4539  counters_[static_cast<std::size_t>(om)].transitions == 1)
+
4540  {
+
4541  initialSyncUs_ = std::chrono::duration_cast<std::chrono::microseconds>(
+
4542  now - processStart_)
+
4543  .count();
+
4544  }
+
4545  counters_[static_cast<std::size_t>(mode_)].dur +=
+
4546  std::chrono::duration_cast<std::chrono::microseconds>(now - start_);
+
4547 
+
4548  mode_ = om;
+
4549  start_ = now;
+
4550 }
+
4551 
+
4552 void
+
4553 NetworkOPsImp::StateAccounting::json(Json::Value& obj) const
+
4554 {
+
4555  auto [counters, mode, start, initialSync] = getCounterData();
+
4556  auto const current = std::chrono::duration_cast<std::chrono::microseconds>(
+
4557  std::chrono::steady_clock::now() - start);
+
4558  counters[static_cast<std::size_t>(mode)].dur += current;
+
4559 
+
4560  obj[jss::state_accounting] = Json::objectValue;
+
4561  for (std::size_t i = static_cast<std::size_t>(OperatingMode::DISCONNECTED);
+
4562  i <= static_cast<std::size_t>(OperatingMode::FULL);
+
4563  ++i)
+
4564  {
+
4565  obj[jss::state_accounting][states_[i]] = Json::objectValue;
+
4566  auto& state = obj[jss::state_accounting][states_[i]];
+
4567  state[jss::transitions] = std::to_string(counters[i].transitions);
+
4568  state[jss::duration_us] = std::to_string(counters[i].dur.count());
+
4569  }
+
4570  obj[jss::server_state_duration_us] = std::to_string(current.count());
+
4571  if (initialSync)
+
4572  obj[jss::initial_sync_duration_us] = std::to_string(initialSync);
+
4573 }
+
4574 
+
4575 //------------------------------------------------------------------------------
+
4576 
+
4577 std::unique_ptr<NetworkOPs>
+
4578 make_NetworkOPs(
+
4579  Application& app,
+
4580  NetworkOPs::clock_type& clock,
+
4581  bool standalone,
+
4582  std::size_t minPeerCount,
+
4583  bool startvalid,
+
4584  JobQueue& job_queue,
+
4585  LedgerMaster& ledgerMaster,
+
4586  ValidatorKeys const& validatorKeys,
+
4587  boost::asio::io_service& io_svc,
+
4588  beast::Journal journal,
+
4589  beast::insight::Collector::ptr const& collector)
+
4590 {
+
4591  return std::make_unique<NetworkOPsImp>(
+
4592  app,
+
4593  clock,
+
4594  standalone,
+
4595  minPeerCount,
+
4596  startvalid,
+
4597  job_queue,
+
4598  ledgerMaster,
+
4599  validatorKeys,
+
4600  io_svc,
+
4601  journal,
+
4602  collector);
+
4603 }
+
4604 
+
4605 } // namespace ripple
-
void forwardManifest(Json::Value const &jvObj) override
-
bool unsubValidations(std::uint64_t uListener) override
+
void forwardManifest(Json::Value const &jvObj) override
+
bool unsubValidations(std::uint64_t uListener) override
beast::insight::Hook hook
Definition: NetworkOPs.cpp:815
TxType getTxnType() const
Definition: STTx.h:179
FeeVote::Setup setup_FeeVote(Section const &section)
Build FeeVote::Setup from a config section.
-
bool subValidations(InfoSub::ref ispListener) override
+
bool subValidations(InfoSub::ref ispListener) override
void processHeartbeatTimer()
Provides server functionality for clients.
Definition: NetworkOPs.h:86
const SF_UINT64 sfIndexNext
@@ -4632,7 +4631,7 @@ $(function() {
bool cdirNext(ReadView const &view, uint256 const &root, std::shared_ptr< SLE const > &page, unsigned int &index, uint256 &entry)
Returns the next entry in the directory, advancing the index.
Definition: View.cpp:145
Definition: ClusterNode.h:30
SubTypes
Definition: NetworkOPs.cpp:743
-
bool unsubConsensus(std::uint64_t uListener) override
+
bool unsubConsensus(std::uint64_t uListener) override
@ jtTRANSACTION
Definition: Job.h:63
std::string domain
The domain, if one was specified in the manifest; empty otherwise.
Definition: Manifest.h:95
virtual OrderBookDB & getOrderBookDB()=0
@@ -4642,10 +4641,10 @@ $(function() {
bool processTrustedProposal(RCLCxPeerPos proposal) override
T lock(T... args)
void setAccountHistoryJobTimer(SubAccountHistoryInfoWeak subInfo)
Definition: NetworkOPs.cpp:991
-
void pubAccountTransaction(std::shared_ptr< ReadView const > const &ledger, AcceptedLedgerTx const &transaction)
+
void pubAccountTransaction(std::shared_ptr< ReadView const > const &ledger, AcceptedLedgerTx const &transaction)
const SF_AMOUNT sfBaseFeeDrops
virtual Json::Value getInfo()=0
-
void stateAccounting(Json::Value &obj) override
+
void stateAccounting(Json::Value &obj) override
Manages load sources.
Definition: LoadManager.h:45
const SF_UINT32 sfReserveBase
virtual Cluster & cluster()=0
@@ -4673,7 +4672,7 @@ $(function() {
STL class.
void setStateTimer() override
Called to initially start our timers.
Definition: NetworkOPs.cpp:919
bool isNonZero() const
Definition: base_uint.h:536
-
void json(Json::Value &obj) const
Output state counters in JSON format.
+
void json(Json::Value &obj) const
Output state counters in JSON format.
Stream trace() const
Severity stream access functions.
Definition: Journal.h:309
void clear()
Definition: STAmount.h:409
const SF_UINT32 sfLedgerSequence
@@ -4690,8 +4689,8 @@ $(function() {
void pubManifest(Manifest const &) override
Definition: Manifest.h:80
-
void collect_metrics()
-
bool subPeerStatus(InfoSub::ref ispListener) override
+
void collect_metrics()
+
bool subPeerStatus(InfoSub::ref ispListener) override
STL class.
DispatchState mDispatchState
Definition: NetworkOPs.cpp:772
@ none
@@ -4706,7 +4705,7 @@ $(function() {
const SF_UINT32 sfSequence
Definition: LedgerMaster.h:70
virtual AmendmentTable & getAmendmentTable()=0
-
void setMode(OperatingMode om) override
+
void setMode(OperatingMode om) override
std::string const & name() const
Definition: ClusterNode.h:45
Writable ledger view that accumulates state and tx changes.
Definition: OpenView.h:55
unsigned int UInt
Definition: json_forwards.h:27
@@ -4714,22 +4713,22 @@ $(function() {
uint256 getBookBase(Book const &book)
Definition: Indexes.cpp:82
std::chrono::microseconds dur
Definition: NetworkOPs.cpp:138
PublicKey signingKey
The ephemeral key associated with this manifest.
Definition: Manifest.h:89
-
void pubProposedAccountTransaction(std::shared_ptr< ReadView const > const &ledger, std::shared_ptr< STTx const > const &transaction, TER result)
+
void pubProposedAccountTransaction(std::shared_ptr< ReadView const > const &ledger, std::shared_ptr< STTx const > const &transaction, TER result)
STL class.
bool isUNLBlocked() override
T find(T... args)
Json::Value getInfo()
Definition: ReportingETL.h:310
std::string serialized
The manifest in serialized form.
Definition: Manifest.h:83
void setNeedNetworkLedger() override
Definition: NetworkOPs.cpp:876
-
bool tryRemoveRpcSub(std::string const &strUrl) override
+
bool tryRemoveRpcSub(std::string const &strUrl) override
PublicKey masterKey
The master key associated with this manifest.
Definition: Manifest.h:86
STAmount accountHolds(ReadView const &view, AccountID const &account, Currency const &currency, AccountID const &issuer, FreezeHandling zeroIfFrozen, beast::Journal j)
Definition: View.cpp:223
bool empty() const noexcept
Definition: PublicKey.h:117
std::string getText() const override
Definition: STAmount.cpp:550
-
bool recvValidation(std::shared_ptr< STValidation > const &val, std::string const &source) override
+
bool recvValidation(std::shared_ptr< STValidation > const &val, std::string const &source) override
@ jtNETOP_CLUSTER
Definition: Job.h:76
std::string getHostId(bool forAdmin)
Definition: NetworkOPs.cpp:900
-
void forwardProposedTransaction(Json::Value const &jvObj) override
+
void forwardProposedTransaction(Json::Value const &jvObj) override
@ sValidations
Definition: NetworkOPs.cpp:749
ApplyFlags
Definition: ApplyView.h:29
@@ -4752,7 +4751,7 @@ $(function() {
Json::Value computeBookChanges(std::shared_ptr< L const > const &lpAccepted)
Definition: BookChanges.h:38
StateAccounting accounting_
Definition: NetworkOPs.cpp:775
std::chrono::milliseconds ledgerGRANULARITY
How often we check state or change positions.
-
void unsubAccountHistoryInternal(std::uint64_t seq, AccountID const &account, bool historyOnly) override
+
void unsubAccountHistoryInternal(std::uint64_t seq, AccountID const &account, bool historyOnly) override
virtual NodeStore::DatabaseShard * getShardStore()=0
@ scheduled
const SF_UINT32 sfCloseTime
@@ -4762,7 +4761,7 @@ $(function() {
void apply(std::unique_lock< std::mutex > &batchLock)
Attempt to apply transactions and post-process based on the results.
bool addJob(JobType type, std::string const &name, JobHandler &&jobHandler)
Adds a job to the JobQueue.
Definition: JobQueue.h:166
@ jtCLIENT_CONSENSUS
Definition: Job.h:48
-
std::unique_ptr< NetworkOPs > make_NetworkOPs(Application &app, NetworkOPs::clock_type &clock, bool standalone, std::size_t minPeerCount, bool startvalid, JobQueue &job_queue, LedgerMaster &ledgerMaster, ValidatorKeys const &validatorKeys, boost::asio::io_service &io_svc, beast::Journal journal, beast::insight::Collector::ptr const &collector)
+
std::unique_ptr< NetworkOPs > make_NetworkOPs(Application &app, NetworkOPs::clock_type &clock, bool standalone, std::size_t minPeerCount, bool startvalid, JobQueue &job_queue, LedgerMaster &ledgerMaster, ValidatorKeys const &validatorKeys, boost::asio::io_service &io_svc, beast::Journal journal, beast::insight::Collector::ptr const &collector)
beast::insight::Gauge syncing_transitions
Definition: NetworkOPs.cpp:824
std::uint32_t getLoadBase() const
Definition: LoadFeeTrack.h:89
@@ -4770,9 +4769,9 @@ $(function() {
SubAccountHistoryIndex(AccountID const &accountId)
Definition: NetworkOPs.cpp:675
uint256 getQualityNext(uint256 const &uBase)
Definition: Indexes.cpp:100
virtual TimeKeeper & timeKeeper()=0
-
void forwardProposedAccountTransaction(Json::Value const &jvObj) override
+
void forwardProposedAccountTransaction(Json::Value const &jvObj) override
virtual OpenLedger & openLedger()=0
-
void pubLedger(std::shared_ptr< ReadView const > const &lpAccepted) override
+
void pubLedger(std::shared_ptr< ReadView const > const &lpAccepted) override
AccountID account
void switchLastClosedLedger(std::shared_ptr< Ledger const > const &newLCL)
@ tapNONE
Definition: ApplyView.h:30
@@ -4797,7 +4796,7 @@ $(function() {
Sends a message to all peers.
Definition: predicates.h:31
@ SYNCING
fallen slightly behind
void processClusterTimer()
-
bool unsubTransactions(std::uint64_t uListener) override
+
bool unsubTransactions(std::uint64_t uListener) override
T unlock(T... args)
void const * data() const noexcept
Definition: Serializer.h:75
@ terQUEUED
Definition: TER.h:203
@@ -4815,7 +4814,7 @@ $(function() {
Integers of any length that is a multiple of 32-bits.
Definition: base_uint.h:81
const SF_AMOUNT sfTakerPays
@ INCLUDED
Definition: Transaction.h:48
-
static void getAccounts(Json::Value const &jvObj, std::vector< AccountID > &accounts)
+
static void getAccounts(Json::Value const &jvObj, std::vector< AccountID > &accounts)
Manages the generic consensus algorithm for use by the RCL.
Definition: RCLConsensus.h:50
@ warnRPC_AMENDMENT_BLOCKED
Definition: ErrorCodes.h:155
Definition: NetworkOPs.cpp:662
@@ -4824,9 +4823,9 @@ $(function() {
bool isGlobalFrozen(ReadView const &view, AccountID const &issuer)
Definition: View.cpp:188
beast::insight::Gauge syncing_duration
Definition: NetworkOPs.cpp:818
bool isAmendmentBlocked() override
-
InfoSub::pointer addRpcSub(std::string const &strUrl, InfoSub::ref) override
+
InfoSub::pointer addRpcSub(std::string const &strUrl, InfoSub::ref) override
@ rpcSUCCESS
Definition: ErrorCodes.h:44
-
void forwardValidation(Json::Value const &jvObj) override
+
void forwardValidation(Json::Value const &jvObj) override
const FailHard failType
Definition: NetworkOPs.cpp:91
@ ltOFFER
A ledger object which describes an offer on the DEX.
Definition: LedgerFormats.h:92
Value & append(const Value &value)
Append value to array at the end.
Definition: json_value.cpp:882
@@ -4837,7 +4836,7 @@ $(function() {
void clearAmendmentWarned() override
void setJson(Json::Value &) const
Definition: STAmount.cpp:496
static time_point now()
Definition: UptimeClock.cpp:63
-
void subAccountHistoryStart(std::shared_ptr< ReadView const > const &ledger, SubAccountHistoryInfoWeak &subInfo)
+
void subAccountHistoryStart(std::shared_ptr< ReadView const > const &ledger, SubAccountHistoryInfoWeak &subInfo)
@ jtTXN_PROC
Definition: Job.h:83
void processTxn(std::shared_ptr< ReadView const > const &ledger, const AcceptedLedgerTx &alTx, Json::Value const &jvObj)
virtual std::chrono::milliseconds getIOLatency()=0
@@ -4845,7 +4844,7 @@ $(function() {
Json::Value getOwnerInfo(std::shared_ptr< ReadView const > lpLedger, AccountID const &account) override
const SF_UINT64 sfServerVersion
std::pair< Validity, std::string > checkValidity(HashRouter &router, STTx const &tx, Rules const &rules, Config const &config)
Checks transaction signature and local checks.
Definition: apply.cpp:37
-
void reportFeeChange() override
+
void reportFeeChange() override
std::uint32_t getLocalFee() const
Definition: LoadFeeTrack.h:75
bool isZero() const
Definition: base_uint.h:531
@ CONNECTED
convinced we are talking to the network
@@ -4856,7 +4855,7 @@ $(function() {
constexpr double decimalXRP() const
Definition: XRPAmount.h:253
const SF_UINT32 sfLoadFee
virtual LedgerMaster & getLedgerMaster()=0
-
void addAccountHistoryJob(SubAccountHistoryInfoWeak subInfo)
+
void addAccountHistoryJob(SubAccountHistoryInfoWeak subInfo)
bool isBlocked() override
Keylet account(AccountID const &id) noexcept
AccountID root.
Definition: Indexes.cpp:133
@ TRACKING
convinced we agree with the network
@@ -4881,17 +4880,17 @@ $(function() {
STL class.
const SF_UINT64 sfCookie
AccountID calcAccountID(PublicKey const &pk)
Definition: AccountID.cpp:158
-
void unsubAccount(InfoSub::ref ispListener, hash_set< AccountID > const &vnaAccountIDs, bool rt) override
+
void unsubAccount(InfoSub::ref ispListener, hash_set< AccountID > const &vnaAccountIDs, bool rt) override
virtual RelationalDatabase & getRelationalDatabase()=0
virtual std::pair< PublicKey, SecretKey > const & nodeIdentity()=0
-
bool unsubRTTransactions(std::uint64_t uListener) override
+
bool unsubRTTransactions(std::uint64_t uListener) override
virtual TxQ & getTxQ()=0
Manages the current fee schedule.
Definition: LoadFeeTrack.h:44
std::optional< Blob > getSignature() const
Returns manifest signature.
-
void pubValidatedTransaction(std::shared_ptr< ReadView const > const &ledger, AcceptedLedgerTx const &transaction)
+
void pubValidatedTransaction(std::shared_ptr< ReadView const > const &ledger, AcceptedLedgerTx const &transaction)
T to_string(T... args)
virtual JobQueue & getJobQueue()=0
-
bool subManifests(InfoSub::ref ispListener) override
+
bool subManifests(InfoSub::ref ispListener) override
A transaction that is in a closed ledger.
virtual std::optional< NetClock::time_point > firstUnsupportedExpected() const =0
std::vector< Item > items
Definition: Gossip.h:42
@@ -4913,20 +4912,20 @@ $(function() {
T erase(T... args)
std::string const & getVersionString()
Server version.
Definition: BuildInfo.cpp:65
const SF_AMOUNT sfTakerGets
-
bool subBookChanges(InfoSub::ref ispListener) override
+
bool subBookChanges(InfoSub::ref ispListener) override
Definition: STTx.h:45
std::shared_ptr< Ledger const > getLedgerBySeq(std::uint32_t index)
boost::container::flat_set< AccountID > const & getAffected() const
decltype(counters_) counters
Definition: NetworkOPs.cpp:176
beast::insight::Gauge tracking_duration
Definition: NetworkOPs.cpp:819
@ warnRPC_UNSUPPORTED_MAJORITY
Definition: ErrorCodes.h:154
-
bool subTransactions(InfoSub::ref ispListener) override
+
bool subTransactions(InfoSub::ref ispListener) override
virtual time_point closeTime() const =0
Returns the close time, in network time.
@ current
This was a new validation and was added.
The role of a ClosureCounter is to assist in shutdown by letting callers wait for the completion of c...
std::array< Counters, 5 > counters_
Definition: NetworkOPs.cpp:142
bool isMember(const char *key) const
Return true if the object has a member named key.
Definition: json_value.cpp:932
-
bool unsubLedger(std::uint64_t uListener) override
+
bool unsubLedger(std::uint64_t uListener) override
A generic endpoint for log messages.
Definition: Journal.h:58
bool isAmendmentWarned() override
@@ -4946,7 +4945,7 @@ $(function() {
BookListeners::pointer makeBookListeners(Book const &)
FailHard
Definition: NetworkOPs.h:91
const SF_AMOUNT sfReserveIncrementDrops
-
void subAccount(InfoSub::ref ispListener, hash_set< AccountID > const &vnaAccountIDs, bool rt) override
+
void subAccount(InfoSub::ref ispListener, hash_set< AccountID > const &vnaAccountIDs, bool rt) override
const bool m_standalone
Definition: NetworkOPs.cpp:764
virtual std::shared_ptr< SLE const > read(Keylet const &k) const =0
Return the state item associated with a key.
std::shared_ptr< ReadView const > getCurrentLedger()
@@ -5007,25 +5006,25 @@ $(function() {
virtual Json::Value countersJson() const =0
Render performance counters in Json.
std::vector< TransactionStatus > mTransactions
Definition: NetworkOPs.cpp:773
A view into a ledger.
Definition: ReadView.h:125
-
void reportConsensusStateChange(ConsensusPhase phase)
+
void reportConsensusStateChange(ConsensusPhase phase)
T emplace_back(T... args)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
bool transResultInfo(TER code, std::string &token, std::string &text)
Definition: TER.cpp:192
-
bool unsubServer(std::uint64_t uListener) override
+
bool unsubServer(std::uint64_t uListener) override
std::chrono::milliseconds prevRoundTime() const
Get duration of the previous round.
Definition: RCLConsensus.h:456
std::shared_ptr< STTx const > sterilize(STTx const &stx)
Sterilize a transaction.
Definition: STTx.cpp:550
Stats(Handler const &handler, beast::insight::Collector::ptr const &collector)
Definition: NetworkOPs.cpp:781
void setHeartbeatTimer()
Definition: NetworkOPs.cpp:961
-
bool unsubBookChanges(std::uint64_t uListener) override
+
bool unsubBookChanges(std::uint64_t uListener) override
virtual NodeStore::Database & getNodeStore()=0
virtual beast::Journal journal(std::string const &name)=0
virtual ManifestCache & validatorManifests()=0
-
std::size_t getLocalTxCount() override
+
std::size_t getLocalTxCount() override
std::uint64_t initialSyncUs_
Definition: NetworkOPs.cpp:147
std::array< SubMapType, SubTypes::sLastEntry+1 > mStreamMaps
Definition: NetworkOPs.cpp:757
std::size_t size() const noexcept
Definition: Serializer.h:69
std::uint32_t getLoadFactor() const
Definition: LoadFeeTrack.h:95
-
Json::Value getLedgerFetchInfo() override
+
Json::Value getLedgerFetchInfo() override
@ tapUNLIMITED
Definition: ApplyView.h:41
@ sManifests
Definition: NetworkOPs.cpp:745
const SF_UINT16 sfLedgerEntryType
@@ -5035,8 +5034,8 @@ $(function() {
void pubServer()
iterator begin()
Definition: base_uint.h:132
@ tefPAST_SEQ
Definition: TER.h:154
-
bool unsubBook(std::uint64_t uListener, Book const &) override
-
std::uint32_t acceptLedger(std::optional< std::chrono::milliseconds > consensusDelay) override
Accepts the current transaction tree, return the new ledger's sequence.
+
bool unsubBook(std::uint64_t uListener, Book const &) override
+
std::uint32_t acceptLedger(std::optional< std::chrono::milliseconds > consensusDelay) override
Accepts the current transaction tree, return the new ledger's sequence.
@ sTransactions
Definition: NetworkOPs.cpp:747
SubInfoMapType mSubAccount
Definition: NetworkOPs.cpp:736
std::string SERVER_DOMAIN
Definition: Config.h:265
@@ -5052,22 +5051,22 @@ $(function() {
bool checkLastClosedLedger(const Overlay::PeerSequence &, uint256 &networkClosed)
T insert(T... args)
std::string strOperatingMode(OperatingMode const mode, bool const admin) const override
-
void getBookPage(std::shared_ptr< ReadView const > &lpLedger, Book const &, AccountID const &uTakerID, const bool bProof, unsigned int iLimit, Json::Value const &jvMarker, Json::Value &jvResult) override
+
void getBookPage(std::shared_ptr< ReadView const > &lpLedger, Book const &, AccountID const &uTakerID, const bool bProof, unsigned int iLimit, Json::Value const &jvMarker, Json::Value &jvResult) override
XRPAmount baseFee
Definition: NetworkOPs.cpp:210
void insertDeliveredAmount(Json::Value &meta, ReadView const &, std::shared_ptr< STTx const > const &serializedTx, TxMeta const &)
Add a delivered_amount field to the meta input/output parameter.
-
void pubPeerStatus(std::function< Json::Value(void)> const &) override
+
void pubPeerStatus(std::function< Json::Value(void)> const &) override
std::condition_variable mCond
Definition: NetworkOPs.cpp:770
bool isFull() override
Definition: NetworkOPs.cpp:894
void getCountsJson(Json::Value &obj)
Definition: Database.cpp:378
-
bool subLedger(InfoSub::ref ispListener, Json::Value &jvResult) override
+
bool subLedger(InfoSub::ref ispListener, Json::Value &jvResult) override
beast::insight::Gauge full_transitions
Definition: NetworkOPs.cpp:826
int RELAY_UNTRUSTED_VALIDATIONS
Definition: Config.h:153
static const std::array< char const *, 5 > stateNames
Definition: NetworkOPs.cpp:839
@ sLedger
Definition: NetworkOPs.cpp:744
virtual time_point now() const override=0
Returns the estimate of wall time, in network time.
-
error_code_i subAccountHistory(InfoSub::ref ispListener, AccountID const &account) override
subscribe an account's new transactions and retrieve the account's historical transactions
+
error_code_i subAccountHistory(InfoSub::ref ispListener, AccountID const &account) override
subscribe an account's new transactions and retrieve the account's historical transactions
RCLConsensus mConsensus
Definition: NetworkOPs.cpp:730
std::size_t prevProposers() const
Get the number of proposing peers that participated in the previous round.
Definition: RCLConsensus.h:443
virtual Overlay & overlay()=0
@@ -5075,7 +5074,7 @@ $(function() {
T count(T... args)
std::atomic< OperatingMode > mMode
Definition: NetworkOPs.cpp:718
std::shared_ptr< Ledger const > getValidatedLedger()
-
bool unsubManifests(std::uint64_t uListener) override
+
bool unsubManifests(std::uint64_t uListener) override
@ tapFAIL_HARD
Definition: ApplyView.h:34
hash_set< NodeID > added
std::atomic< bool > amendmentBlocked_
Definition: NetworkOPs.cpp:721
@@ -5086,10 +5085,10 @@ $(function() {
virtual std::optional< std::uint32_t > networkID() const =0
Returns the ID of the network this server is configured for, if any.
virtual void clearFailures()=0
@ NodePublic
-
Json::Value transJson(const STTx &transaction, TER result, bool validated, std::shared_ptr< ReadView const > const &ledger)
+
Json::Value transJson(const STTx &transaction, TER result, bool validated, std::shared_ptr< ReadView const > const &ledger)
void join(char const *name, std::chrono::milliseconds wait, beast::Journal j)
Returns once all counted in-flight closures are destroyed.
ConsensusPhase mLastConsensusPhase
Definition: NetworkOPs.cpp:732
-
void updateLocalTx(ReadView const &view) override
+
void updateLocalTx(ReadView const &view) override
@ sRTTransactions
Definition: NetworkOPs.cpp:748
@@ -5097,22 +5096,22 @@ $(function() {
void pubConsensus(ConsensusPhase phase)
std::string to_string(Manifest const &m)
Format the specified manifest to a string for debugging purposes.
-
bool subRTTransactions(InfoSub::ref ispListener) override
+
bool subRTTransactions(InfoSub::ref ispListener) override
Specifies an order book.
Definition: Book.h:33
NetClock::time_point getReportTime() const
Definition: ClusterNode.h:57
beast::insight::Gauge disconnected_transitions
Definition: NetworkOPs.cpp:822
static const auto genesisAccountId
Definition: NetworkOPs.cpp:852
T make_pair(T... args)
const SF_ACCOUNT sfAccount
-
void pubProposedTransaction(std::shared_ptr< ReadView const > const &ledger, std::shared_ptr< STTx const > const &transaction, TER result) override
+
void pubProposedTransaction(std::shared_ptr< ReadView const > const &ledger, std::shared_ptr< STTx const > const &transaction, TER result) override
@ ltRIPPLE_STATE
A ledger object which describes a bidirectional trust line.
Definition: LedgerFormats.h:74
std::string strHex(FwdIt begin, FwdIt end)
Definition: strHex.h:30
T end(T... args)
std::pair< bool, Dest > mulDiv(Source1 value, Dest mul, Source2 div)
Definition: FeeUnits.h:468
-
Json::Value getServerInfo(bool human, bool admin, bool counters) override
+
Json::Value getServerInfo(bool human, bool admin, bool counters) override
virtual Json::Value currentJson() const =0
Render currently executing jobs and RPC calls and durations in Json.
LedgerMaster & m_ledgerMaster
Definition: NetworkOPs.cpp:734
-
bool subServer(InfoSub::ref ispListener, Json::Value &jvResult, bool admin) override
+
bool subServer(InfoSub::ref ispListener, Json::Value &jvResult, bool admin) override
std::shared_ptr< SubAccountHistoryIndex > index_
Definition: NetworkOPs.cpp:694
std::optional< LedgerSpecifier > ledger
@@ -5126,9 +5125,9 @@ $(function() {
virtual perf::PerfLog & getPerfLog()=0
send_if_pred< Predicate > send_if(std::shared_ptr< Message > const &m, Predicate const &f)
Helper function to aid in type deduction.
Definition: predicates.h:75
virtual std::uint64_t getPeerDisconnect() const =0
-
bool subBook(InfoSub::ref ispListener, Book const &) override
-
bool subConsensus(InfoSub::ref ispListener) override
-
Json::Value getConsensusInfo() override
+
bool subBook(InfoSub::ref ispListener, Book const &) override
+
bool subConsensus(InfoSub::ref ispListener) override
+
Json::Value getConsensusInfo() override
beast::insight::Gauge connected_duration
Definition: NetworkOPs.cpp:817
std::size_t count() const
Return the number of configured validator list sites.
ClosureCounter< void, boost::system::error_code const & > waitHandlerCounter_
Definition: NetworkOPs.cpp:725
@@ -5137,21 +5136,21 @@ $(function() {
std::atomic< bool > stopHistorical_
Definition: NetworkOPs.cpp:673
Definition: NetworkOPs.cpp:79
SubAccountHistoryMapType mSubAccountHistory
Definition: NetworkOPs.cpp:741
-
void mode(OperatingMode om)
Record state transition.
+
void mode(OperatingMode om)
Record state transition.
std::optional< AccountID > accountFromStringStrict(std::string const &account)
Get an AccountID from an account ID or public key.
Definition: RPCHelpers.cpp:41
static const std::array< Json::StaticString const, 5 > states_
Definition: NetworkOPs.cpp:148
static std::string getWordFromBlob(void const *blob, size_t bytes)
Chooses a single dictionary word from the data.
Definition: RFC1751.cpp:494
-
void unsubAccountInternal(std::uint64_t seq, hash_set< AccountID > const &vnaAccountIDs, bool rt) override
+
void unsubAccountInternal(std::uint64_t seq, hash_set< AccountID > const &vnaAccountIDs, bool rt) override
const SF_UINT32 sfSigningTime
-
void unsubAccountHistory(InfoSub::ref ispListener, AccountID const &account, bool historyOnly) override
unsubscribe an account's transactions
+
void unsubAccountHistory(InfoSub::ref ispListener, AccountID const &account, bool historyOnly) override
unsubscribe an account's transactions
@ tesSUCCESS
Definition: TER.h:219
State accounting records two attributes for each possible server state: 1) Amount of time spent in ea...
Definition: NetworkOPs.cpp:131
A reference to a handler for performing polled collection.
Definition: Hook.h:31
std::uint64_t getQuality(uint256 const &uBase)
Definition: Indexes.cpp:108
virtual std::uint64_t getPeerDisconnectCharges() const =0
STAmount const & getFieldAmount(SField const &field) const
Definition: STObject.cpp:603
-
bool unsubPeerStatus(std::uint64_t uListener) override
+
bool unsubPeerStatus(std::uint64_t uListener) override
Application & app_
Definition: NetworkOPs.cpp:711
void handleNewValidation(Application &app, std::shared_ptr< STValidation > const &val, std::string const &source)
Handle a new validation.
const AccountID accountId_
Definition: NetworkOPs.cpp:664
@@ -5169,11 +5168,11 @@ $(function() {
Represents a JSON value.
Definition: json_value.h:145
const SF_VECTOR256 sfAmendments
virtual std::chrono::duration< std::int32_t > closeOffset() const =0
-
InfoSub::pointer findRpcSub(std::string const &strUrl) override
+
InfoSub::pointer findRpcSub(std::string const &strUrl) override
void set(value_type value) const
Set the value on the gauge.
Definition: Gauge.h:68
std::uint32_t loadBaseServer
Definition: NetworkOPs.cpp:209
Definition: XRPAmount.h:46
-
void clearLedgerFetch() override
+
void clearLedgerFetch() override
std::uint32_t getLoadFee() const
Definition: ClusterNode.h:51
std::optional< Substitute< Closure > > wrap(Closure &&closure)
Wrap the passed closure with a reference counter.
Json::Value rate(Account const &account, double multiplier)
Set a transfer rate.
Definition: rate.cpp:30
diff --git a/NetworkOPs_8h_source.html b/NetworkOPs_8h_source.html index 860f3b60e6..afe6787ef3 100644 --- a/NetworkOPs_8h_source.html +++ b/NetworkOPs_8h_source.html @@ -345,7 +345,7 @@ $(function() {
virtual bool isAmendmentWarned()=0
virtual OperatingMode getOperatingMode() const =0
-
std::unique_ptr< NetworkOPs > make_NetworkOPs(Application &app, NetworkOPs::clock_type &clock, bool standalone, std::size_t minPeerCount, bool startvalid, JobQueue &job_queue, LedgerMaster &ledgerMaster, ValidatorKeys const &validatorKeys, boost::asio::io_service &io_svc, beast::Journal journal, beast::insight::Collector::ptr const &collector)
+
std::unique_ptr< NetworkOPs > make_NetworkOPs(Application &app, NetworkOPs::clock_type &clock, bool standalone, std::size_t minPeerCount, bool startvalid, JobQueue &job_queue, LedgerMaster &ledgerMaster, ValidatorKeys const &validatorKeys, boost::asio::io_service &io_svc, beast::Journal journal, beast::insight::Collector::ptr const &collector)
~NetworkOPs() override=default
virtual bool isAmendmentBlocked()=0
virtual void pubProposedTransaction(std::shared_ptr< ReadView const > const &ledger, std::shared_ptr< STTx const > const &transaction, TER result)=0
diff --git a/Subscribe__test_8cpp_source.html b/Subscribe__test_8cpp_source.html index 30a1823fbb..c3ba911acf 100644 --- a/Subscribe__test_8cpp_source.html +++ b/Subscribe__test_8cpp_source.html @@ -482,217 +482,217 @@ $(function() {
411  if (jv.isMember(jss::server_version) != isFlagLedger)
412  return false;
413 
-
414  bool xrpFees = env.closed()->rules().enabled(featureXRPFees);
-
415  if ((!xrpFees &&
-
416  jv.isMember(jss::reserve_base) != isFlagLedger) ||
-
417  (xrpFees && jv.isMember(jss::reserve_base)))
+
414  if (jv.isMember(jss::reserve_base) != isFlagLedger)
+
415  return false;
+
416 
+
417  if (jv.isMember(jss::reserve_inc) != isFlagLedger)
418  return false;
419 
-
420  if ((!xrpFees &&
-
421  jv.isMember(jss::reserve_inc) != isFlagLedger) ||
-
422  (xrpFees && jv.isMember(jss::reserve_inc)))
-
423  return false;
-
424 
-
425  if ((xrpFees &&
-
426  jv.isMember(jss::reserve_base_drops) != isFlagLedger) ||
-
427  (!xrpFees && jv.isMember(jss::reserve_base_drops)))
-
428  return false;
-
429 
-
430  if ((xrpFees &&
-
431  jv.isMember(jss::reserve_inc_drops) != isFlagLedger) ||
-
432  (!xrpFees && jv.isMember(jss::reserve_inc_drops)))
-
433  return false;
-
434 
-
435  return true;
-
436  };
-
437 
-
438  // Check stream update. Look at enough stream entries so we see
-
439  // at least one flag ledger.
-
440  while (env.closed()->info().seq < 300)
-
441  {
-
442  env.close();
-
443  using namespace std::chrono_literals;
-
444  BEAST_EXPECT(wsc->findMsg(5s, validValidationFields));
-
445  }
-
446  }
-
447 
-
448  // RPC unsubscribe
-
449  auto jv = wsc->invoke("unsubscribe", stream);
-
450  if (wsc->version() == 2)
-
451  {
-
452  BEAST_EXPECT(
-
453  jv.isMember(jss::jsonrpc) && jv[jss::jsonrpc] == "2.0");
-
454  BEAST_EXPECT(
-
455  jv.isMember(jss::ripplerpc) && jv[jss::ripplerpc] == "2.0");
-
456  BEAST_EXPECT(jv.isMember(jss::id) && jv[jss::id] == 5);
-
457  }
-
458  BEAST_EXPECT(jv[jss::status] == "success");
-
459  }
-
460 
-
461  void
-
462  testSubByUrl()
-
463  {
-
464  using namespace jtx;
-
465  testcase("Subscribe by url");
-
466  Env env{*this};
-
467 
-
468  Json::Value jv;
-
469  jv[jss::url] = "http://localhost/events";
-
470  jv[jss::url_username] = "admin";
-
471  jv[jss::url_password] = "password";
-
472  jv[jss::streams] = Json::arrayValue;
-
473  jv[jss::streams][0u] = "validations";
-
474  auto jr = env.rpc("json", "subscribe", to_string(jv))[jss::result];
-
475  BEAST_EXPECT(jr[jss::status] == "success");
-
476 
-
477  jv[jss::streams][0u] = "ledger";
-
478  jr = env.rpc("json", "subscribe", to_string(jv))[jss::result];
-
479  BEAST_EXPECT(jr[jss::status] == "success");
+
420  return true;
+
421  };
+
422 
+
423  // Check stream update. Look at enough stream entries so we see
+
424  // at least one flag ledger.
+
425  while (env.closed()->info().seq < 300)
+
426  {
+
427  env.close();
+
428  using namespace std::chrono_literals;
+
429  BEAST_EXPECT(wsc->findMsg(5s, validValidationFields));
+
430  }
+
431  }
+
432 
+
433  // RPC unsubscribe
+
434  auto jv = wsc->invoke("unsubscribe", stream);
+
435  if (wsc->version() == 2)
+
436  {
+
437  BEAST_EXPECT(
+
438  jv.isMember(jss::jsonrpc) && jv[jss::jsonrpc] == "2.0");
+
439  BEAST_EXPECT(
+
440  jv.isMember(jss::ripplerpc) && jv[jss::ripplerpc] == "2.0");
+
441  BEAST_EXPECT(jv.isMember(jss::id) && jv[jss::id] == 5);
+
442  }
+
443  BEAST_EXPECT(jv[jss::status] == "success");
+
444  }
+
445 
+
446  void
+
447  testSubByUrl()
+
448  {
+
449  using namespace jtx;
+
450  testcase("Subscribe by url");
+
451  Env env{*this};
+
452 
+
453  Json::Value jv;
+
454  jv[jss::url] = "http://localhost/events";
+
455  jv[jss::url_username] = "admin";
+
456  jv[jss::url_password] = "password";
+
457  jv[jss::streams] = Json::arrayValue;
+
458  jv[jss::streams][0u] = "validations";
+
459  auto jr = env.rpc("json", "subscribe", to_string(jv))[jss::result];
+
460  BEAST_EXPECT(jr[jss::status] == "success");
+
461 
+
462  jv[jss::streams][0u] = "ledger";
+
463  jr = env.rpc("json", "subscribe", to_string(jv))[jss::result];
+
464  BEAST_EXPECT(jr[jss::status] == "success");
+
465 
+
466  jr = env.rpc("json", "unsubscribe", to_string(jv))[jss::result];
+
467  BEAST_EXPECT(jr[jss::status] == "success");
+
468 
+
469  jv[jss::streams][0u] = "validations";
+
470  jr = env.rpc("json", "unsubscribe", to_string(jv))[jss::result];
+
471  BEAST_EXPECT(jr[jss::status] == "success");
+
472  }
+
473 
+
474  void
+
475  testSubErrors(bool subscribe)
+
476  {
+
477  using namespace jtx;
+
478  auto const method = subscribe ? "subscribe" : "unsubscribe";
+
479  testcase << "Error cases for " << method;
480 
-
481  jr = env.rpc("json", "unsubscribe", to_string(jv))[jss::result];
-
482  BEAST_EXPECT(jr[jss::status] == "success");
+
481  Env env{*this};
+
482  auto wsc = makeWSClient(env.app().config());
483 
-
484  jv[jss::streams][0u] = "validations";
-
485  jr = env.rpc("json", "unsubscribe", to_string(jv))[jss::result];
-
486  BEAST_EXPECT(jr[jss::status] == "success");
-
487  }
-
488 
-
489  void
-
490  testSubErrors(bool subscribe)
-
491  {
-
492  using namespace jtx;
-
493  auto const method = subscribe ? "subscribe" : "unsubscribe";
-
494  testcase << "Error cases for " << method;
-
495 
-
496  Env env{*this};
-
497  auto wsc = makeWSClient(env.app().config());
-
498 
-
499  {
-
500  auto jr = env.rpc("json", method, "{}")[jss::result];
-
501  BEAST_EXPECT(jr[jss::error] == "invalidParams");
-
502  BEAST_EXPECT(jr[jss::error_message] == "Invalid parameters.");
+
484  {
+
485  auto jr = env.rpc("json", method, "{}")[jss::result];
+
486  BEAST_EXPECT(jr[jss::error] == "invalidParams");
+
487  BEAST_EXPECT(jr[jss::error_message] == "Invalid parameters.");
+
488  }
+
489 
+
490  {
+
491  Json::Value jv;
+
492  jv[jss::url] = "not-a-url";
+
493  jv[jss::username] = "admin";
+
494  jv[jss::password] = "password";
+
495  auto jr = env.rpc("json", method, to_string(jv))[jss::result];
+
496  if (subscribe)
+
497  {
+
498  BEAST_EXPECT(jr[jss::error] == "invalidParams");
+
499  BEAST_EXPECT(jr[jss::error_message] == "Failed to parse url.");
+
500  }
+
501  // else TODO: why isn't this an error for unsubscribe ?
+
502  // (findRpcSub returns null)
503  }
504 
505  {
506  Json::Value jv;
-
507  jv[jss::url] = "not-a-url";
-
508  jv[jss::username] = "admin";
-
509  jv[jss::password] = "password";
-
510  auto jr = env.rpc("json", method, to_string(jv))[jss::result];
-
511  if (subscribe)
-
512  {
-
513  BEAST_EXPECT(jr[jss::error] == "invalidParams");
-
514  BEAST_EXPECT(jr[jss::error_message] == "Failed to parse url.");
+
507  jv[jss::url] = "ftp://scheme.not.supported.tld";
+
508  auto jr = env.rpc("json", method, to_string(jv))[jss::result];
+
509  if (subscribe)
+
510  {
+
511  BEAST_EXPECT(jr[jss::error] == "invalidParams");
+
512  BEAST_EXPECT(
+
513  jr[jss::error_message] ==
+
514  "Only http and https is supported.");
515  }
-
516  // else TODO: why isn't this an error for unsubscribe ?
-
517  // (findRpcSub returns null)
-
518  }
-
519 
-
520  {
-
521  Json::Value jv;
-
522  jv[jss::url] = "ftp://scheme.not.supported.tld";
-
523  auto jr = env.rpc("json", method, to_string(jv))[jss::result];
-
524  if (subscribe)
-
525  {
-
526  BEAST_EXPECT(jr[jss::error] == "invalidParams");
-
527  BEAST_EXPECT(
-
528  jr[jss::error_message] ==
-
529  "Only http and https is supported.");
-
530  }
-
531  }
-
532 
-
533  {
-
534  Env env_nonadmin{*this, no_admin(envconfig(port_increment, 3))};
-
535  Json::Value jv;
-
536  jv[jss::url] = "no-url";
-
537  auto jr =
-
538  env_nonadmin.rpc("json", method, to_string(jv))[jss::result];
-
539  BEAST_EXPECT(jr[jss::error] == "noPermission");
-
540  BEAST_EXPECT(
-
541  jr[jss::error_message] ==
-
542  "You don't have permission for this command.");
-
543  }
-
544 
-
545  std::initializer_list<Json::Value> const nonArrays{
-
546  Json::nullValue,
-
547  Json::intValue,
-
548  Json::uintValue,
-
549  Json::realValue,
-
550  "",
-
551  Json::booleanValue,
-
552  Json::objectValue};
-
553 
-
554  for (auto const& f : {jss::accounts_proposed, jss::accounts})
-
555  {
-
556  for (auto const& nonArray : nonArrays)
-
557  {
-
558  Json::Value jv;
-
559  jv[f] = nonArray;
-
560  auto jr = wsc->invoke(method, jv)[jss::result];
-
561  BEAST_EXPECT(jr[jss::error] == "invalidParams");
-
562  BEAST_EXPECT(jr[jss::error_message] == "Invalid parameters.");
-
563  }
-
564 
-
565  {
-
566  Json::Value jv;
-
567  jv[f] = Json::arrayValue;
-
568  auto jr = wsc->invoke(method, jv)[jss::result];
-
569  BEAST_EXPECT(jr[jss::error] == "actMalformed");
-
570  BEAST_EXPECT(jr[jss::error_message] == "Account malformed.");
-
571  }
-
572  }
-
573 
-
574  for (auto const& nonArray : nonArrays)
-
575  {
-
576  Json::Value jv;
-
577  jv[jss::books] = nonArray;
-
578  auto jr = wsc->invoke(method, jv)[jss::result];
-
579  BEAST_EXPECT(jr[jss::error] == "invalidParams");
-
580  BEAST_EXPECT(jr[jss::error_message] == "Invalid parameters.");
-
581  }
-
582 
-
583  {
-
584  Json::Value jv;
-
585  jv[jss::books] = Json::arrayValue;
-
586  jv[jss::books][0u] = 1;
-
587  auto jr = wsc->invoke(method, jv)[jss::result];
-
588  BEAST_EXPECT(jr[jss::error] == "invalidParams");
-
589  BEAST_EXPECT(jr[jss::error_message] == "Invalid parameters.");
-
590  }
-
591 
-
592  {
-
593  Json::Value jv;
-
594  jv[jss::books] = Json::arrayValue;
-
595  jv[jss::books][0u] = Json::objectValue;
-
596  jv[jss::books][0u][jss::taker_gets] = Json::objectValue;
-
597  jv[jss::books][0u][jss::taker_pays] = Json::objectValue;
-
598  auto jr = wsc->invoke(method, jv)[jss::result];
-
599  BEAST_EXPECT(jr[jss::error] == "srcCurMalformed");
-
600  BEAST_EXPECT(
-
601  jr[jss::error_message] == "Source currency is malformed.");
-
602  }
-
603 
-
604  {
-
605  Json::Value jv;
-
606  jv[jss::books] = Json::arrayValue;
-
607  jv[jss::books][0u] = Json::objectValue;
-
608  jv[jss::books][0u][jss::taker_gets] = Json::objectValue;
-
609  jv[jss::books][0u][jss::taker_pays] = Json::objectValue;
-
610  jv[jss::books][0u][jss::taker_pays][jss::currency] = "ZZZZ";
-
611  auto jr = wsc->invoke(method, jv)[jss::result];
-
612  BEAST_EXPECT(jr[jss::error] == "srcCurMalformed");
-
613  BEAST_EXPECT(
-
614  jr[jss::error_message] == "Source currency is malformed.");
-
615  }
-
616 
-
617  {
-
618  Json::Value jv;
-
619  jv[jss::books] = Json::arrayValue;
-
620  jv[jss::books][0u] = Json::objectValue;
-
621  jv[jss::books][0u][jss::taker_gets] = Json::objectValue;
-
622  jv[jss::books][0u][jss::taker_pays] = Json::objectValue;
-
623  jv[jss::books][0u][jss::taker_pays][jss::currency] = "USD";
-
624  jv[jss::books][0u][jss::taker_pays][jss::issuer] = 1;
+
516  }
+
517 
+
518  {
+
519  Env env_nonadmin{*this, no_admin(envconfig(port_increment, 3))};
+
520  Json::Value jv;
+
521  jv[jss::url] = "no-url";
+
522  auto jr =
+
523  env_nonadmin.rpc("json", method, to_string(jv))[jss::result];
+
524  BEAST_EXPECT(jr[jss::error] == "noPermission");
+
525  BEAST_EXPECT(
+
526  jr[jss::error_message] ==
+
527  "You don't have permission for this command.");
+
528  }
+
529 
+
530  std::initializer_list<Json::Value> const nonArrays{
+
531  Json::nullValue,
+
532  Json::intValue,
+
533  Json::uintValue,
+
534  Json::realValue,
+
535  "",
+
536  Json::booleanValue,
+
537  Json::objectValue};
+
538 
+
539  for (auto const& f : {jss::accounts_proposed, jss::accounts})
+
540  {
+
541  for (auto const& nonArray : nonArrays)
+
542  {
+
543  Json::Value jv;
+
544  jv[f] = nonArray;
+
545  auto jr = wsc->invoke(method, jv)[jss::result];
+
546  BEAST_EXPECT(jr[jss::error] == "invalidParams");
+
547  BEAST_EXPECT(jr[jss::error_message] == "Invalid parameters.");
+
548  }
+
549 
+
550  {
+
551  Json::Value jv;
+
552  jv[f] = Json::arrayValue;
+
553  auto jr = wsc->invoke(method, jv)[jss::result];
+
554  BEAST_EXPECT(jr[jss::error] == "actMalformed");
+
555  BEAST_EXPECT(jr[jss::error_message] == "Account malformed.");
+
556  }
+
557  }
+
558 
+
559  for (auto const& nonArray : nonArrays)
+
560  {
+
561  Json::Value jv;
+
562  jv[jss::books] = nonArray;
+
563  auto jr = wsc->invoke(method, jv)[jss::result];
+
564  BEAST_EXPECT(jr[jss::error] == "invalidParams");
+
565  BEAST_EXPECT(jr[jss::error_message] == "Invalid parameters.");
+
566  }
+
567 
+
568  {
+
569  Json::Value jv;
+
570  jv[jss::books] = Json::arrayValue;
+
571  jv[jss::books][0u] = 1;
+
572  auto jr = wsc->invoke(method, jv)[jss::result];
+
573  BEAST_EXPECT(jr[jss::error] == "invalidParams");
+
574  BEAST_EXPECT(jr[jss::error_message] == "Invalid parameters.");
+
575  }
+
576 
+
577  {
+
578  Json::Value jv;
+
579  jv[jss::books] = Json::arrayValue;
+
580  jv[jss::books][0u] = Json::objectValue;
+
581  jv[jss::books][0u][jss::taker_gets] = Json::objectValue;
+
582  jv[jss::books][0u][jss::taker_pays] = Json::objectValue;
+
583  auto jr = wsc->invoke(method, jv)[jss::result];
+
584  BEAST_EXPECT(jr[jss::error] == "srcCurMalformed");
+
585  BEAST_EXPECT(
+
586  jr[jss::error_message] == "Source currency is malformed.");
+
587  }
+
588 
+
589  {
+
590  Json::Value jv;
+
591  jv[jss::books] = Json::arrayValue;
+
592  jv[jss::books][0u] = Json::objectValue;
+
593  jv[jss::books][0u][jss::taker_gets] = Json::objectValue;
+
594  jv[jss::books][0u][jss::taker_pays] = Json::objectValue;
+
595  jv[jss::books][0u][jss::taker_pays][jss::currency] = "ZZZZ";
+
596  auto jr = wsc->invoke(method, jv)[jss::result];
+
597  BEAST_EXPECT(jr[jss::error] == "srcCurMalformed");
+
598  BEAST_EXPECT(
+
599  jr[jss::error_message] == "Source currency is malformed.");
+
600  }
+
601 
+
602  {
+
603  Json::Value jv;
+
604  jv[jss::books] = Json::arrayValue;
+
605  jv[jss::books][0u] = Json::objectValue;
+
606  jv[jss::books][0u][jss::taker_gets] = Json::objectValue;
+
607  jv[jss::books][0u][jss::taker_pays] = Json::objectValue;
+
608  jv[jss::books][0u][jss::taker_pays][jss::currency] = "USD";
+
609  jv[jss::books][0u][jss::taker_pays][jss::issuer] = 1;
+
610  auto jr = wsc->invoke(method, jv)[jss::result];
+
611  BEAST_EXPECT(jr[jss::error] == "srcIsrMalformed");
+
612  BEAST_EXPECT(
+
613  jr[jss::error_message] == "Source issuer is malformed.");
+
614  }
+
615 
+
616  {
+
617  Json::Value jv;
+
618  jv[jss::books] = Json::arrayValue;
+
619  jv[jss::books][0u] = Json::objectValue;
+
620  jv[jss::books][0u][jss::taker_gets] = Json::objectValue;
+
621  jv[jss::books][0u][jss::taker_pays] = Json::objectValue;
+
622  jv[jss::books][0u][jss::taker_pays][jss::currency] = "USD";
+
623  jv[jss::books][0u][jss::taker_pays][jss::issuer] =
+
624  Account{"gateway"}.human() + "DEAD";
625  auto jr = wsc->invoke(method, jv)[jss::result];
626  BEAST_EXPECT(jr[jss::error] == "srcIsrMalformed");
627  BEAST_EXPECT(
@@ -703,49 +703,49 @@ $(function() {
632  Json::Value jv;
633  jv[jss::books] = Json::arrayValue;
634  jv[jss::books][0u] = Json::objectValue;
-
635  jv[jss::books][0u][jss::taker_gets] = Json::objectValue;
-
636  jv[jss::books][0u][jss::taker_pays] = Json::objectValue;
-
637  jv[jss::books][0u][jss::taker_pays][jss::currency] = "USD";
-
638  jv[jss::books][0u][jss::taker_pays][jss::issuer] =
-
639  Account{"gateway"}.human() + "DEAD";
-
640  auto jr = wsc->invoke(method, jv)[jss::result];
-
641  BEAST_EXPECT(jr[jss::error] == "srcIsrMalformed");
-
642  BEAST_EXPECT(
-
643  jr[jss::error_message] == "Source issuer is malformed.");
-
644  }
-
645 
-
646  {
-
647  Json::Value jv;
-
648  jv[jss::books] = Json::arrayValue;
-
649  jv[jss::books][0u] = Json::objectValue;
-
650  jv[jss::books][0u][jss::taker_pays] =
-
651  Account{"gateway"}["USD"](1).value().getJson(
-
652  JsonOptions::include_date);
-
653  jv[jss::books][0u][jss::taker_gets] = Json::objectValue;
-
654  auto jr = wsc->invoke(method, jv)[jss::result];
-
655  // NOTE: this error is slightly incongruous with the
-
656  // equivalent source currency error
-
657  BEAST_EXPECT(jr[jss::error] == "dstAmtMalformed");
-
658  BEAST_EXPECT(
-
659  jr[jss::error_message] ==
-
660  "Destination amount/currency/issuer is malformed.");
-
661  }
-
662 
-
663  {
-
664  Json::Value jv;
-
665  jv[jss::books] = Json::arrayValue;
-
666  jv[jss::books][0u] = Json::objectValue;
-
667  jv[jss::books][0u][jss::taker_pays] =
-
668  Account{"gateway"}["USD"](1).value().getJson(
-
669  JsonOptions::include_date);
-
670  jv[jss::books][0u][jss::taker_gets][jss::currency] = "ZZZZ";
-
671  auto jr = wsc->invoke(method, jv)[jss::result];
-
672  // NOTE: this error is slightly incongruous with the
-
673  // equivalent source currency error
-
674  BEAST_EXPECT(jr[jss::error] == "dstAmtMalformed");
-
675  BEAST_EXPECT(
-
676  jr[jss::error_message] ==
-
677  "Destination amount/currency/issuer is malformed.");
+
635  jv[jss::books][0u][jss::taker_pays] =
+
636  Account{"gateway"}["USD"](1).value().getJson(
+
637  JsonOptions::include_date);
+
638  jv[jss::books][0u][jss::taker_gets] = Json::objectValue;
+
639  auto jr = wsc->invoke(method, jv)[jss::result];
+
640  // NOTE: this error is slightly incongruous with the
+
641  // equivalent source currency error
+
642  BEAST_EXPECT(jr[jss::error] == "dstAmtMalformed");
+
643  BEAST_EXPECT(
+
644  jr[jss::error_message] ==
+
645  "Destination amount/currency/issuer is malformed.");
+
646  }
+
647 
+
648  {
+
649  Json::Value jv;
+
650  jv[jss::books] = Json::arrayValue;
+
651  jv[jss::books][0u] = Json::objectValue;
+
652  jv[jss::books][0u][jss::taker_pays] =
+
653  Account{"gateway"}["USD"](1).value().getJson(
+
654  JsonOptions::include_date);
+
655  jv[jss::books][0u][jss::taker_gets][jss::currency] = "ZZZZ";
+
656  auto jr = wsc->invoke(method, jv)[jss::result];
+
657  // NOTE: this error is slightly incongruous with the
+
658  // equivalent source currency error
+
659  BEAST_EXPECT(jr[jss::error] == "dstAmtMalformed");
+
660  BEAST_EXPECT(
+
661  jr[jss::error_message] ==
+
662  "Destination amount/currency/issuer is malformed.");
+
663  }
+
664 
+
665  {
+
666  Json::Value jv;
+
667  jv[jss::books] = Json::arrayValue;
+
668  jv[jss::books][0u] = Json::objectValue;
+
669  jv[jss::books][0u][jss::taker_pays] =
+
670  Account{"gateway"}["USD"](1).value().getJson(
+
671  JsonOptions::include_date);
+
672  jv[jss::books][0u][jss::taker_gets][jss::currency] = "USD";
+
673  jv[jss::books][0u][jss::taker_gets][jss::issuer] = 1;
+
674  auto jr = wsc->invoke(method, jv)[jss::result];
+
675  BEAST_EXPECT(jr[jss::error] == "dstIsrMalformed");
+
676  BEAST_EXPECT(
+
677  jr[jss::error_message] == "Destination issuer is malformed.");
678  }
679 
680  {
@@ -756,496 +756,481 @@ $(function() {
685  Account{"gateway"}["USD"](1).value().getJson(
686  JsonOptions::include_date);
687  jv[jss::books][0u][jss::taker_gets][jss::currency] = "USD";
-
688  jv[jss::books][0u][jss::taker_gets][jss::issuer] = 1;
-
689  auto jr = wsc->invoke(method, jv)[jss::result];
-
690  BEAST_EXPECT(jr[jss::error] == "dstIsrMalformed");
-
691  BEAST_EXPECT(
-
692  jr[jss::error_message] == "Destination issuer is malformed.");
-
693  }
-
694 
-
695  {
-
696  Json::Value jv;
-
697  jv[jss::books] = Json::arrayValue;
-
698  jv[jss::books][0u] = Json::objectValue;
-
699  jv[jss::books][0u][jss::taker_pays] =
-
700  Account{"gateway"}["USD"](1).value().getJson(
-
701  JsonOptions::include_date);
-
702  jv[jss::books][0u][jss::taker_gets][jss::currency] = "USD";
-
703  jv[jss::books][0u][jss::taker_gets][jss::issuer] =
-
704  Account{"gateway"}.human() + "DEAD";
-
705  auto jr = wsc->invoke(method, jv)[jss::result];
-
706  BEAST_EXPECT(jr[jss::error] == "dstIsrMalformed");
-
707  BEAST_EXPECT(
-
708  jr[jss::error_message] == "Destination issuer is malformed.");
+
688  jv[jss::books][0u][jss::taker_gets][jss::issuer] =
+
689  Account{"gateway"}.human() + "DEAD";
+
690  auto jr = wsc->invoke(method, jv)[jss::result];
+
691  BEAST_EXPECT(jr[jss::error] == "dstIsrMalformed");
+
692  BEAST_EXPECT(
+
693  jr[jss::error_message] == "Destination issuer is malformed.");
+
694  }
+
695 
+
696  {
+
697  Json::Value jv;
+
698  jv[jss::books] = Json::arrayValue;
+
699  jv[jss::books][0u] = Json::objectValue;
+
700  jv[jss::books][0u][jss::taker_pays] =
+
701  Account{"gateway"}["USD"](1).value().getJson(
+
702  JsonOptions::include_date);
+
703  jv[jss::books][0u][jss::taker_gets] =
+
704  Account{"gateway"}["USD"](1).value().getJson(
+
705  JsonOptions::include_date);
+
706  auto jr = wsc->invoke(method, jv)[jss::result];
+
707  BEAST_EXPECT(jr[jss::error] == "badMarket");
+
708  BEAST_EXPECT(jr[jss::error_message] == "No such market.");
709  }
710 
-
711  {
-
712  Json::Value jv;
-
713  jv[jss::books] = Json::arrayValue;
-
714  jv[jss::books][0u] = Json::objectValue;
-
715  jv[jss::books][0u][jss::taker_pays] =
-
716  Account{"gateway"}["USD"](1).value().getJson(
-
717  JsonOptions::include_date);
-
718  jv[jss::books][0u][jss::taker_gets] =
-
719  Account{"gateway"}["USD"](1).value().getJson(
-
720  JsonOptions::include_date);
-
721  auto jr = wsc->invoke(method, jv)[jss::result];
-
722  BEAST_EXPECT(jr[jss::error] == "badMarket");
-
723  BEAST_EXPECT(jr[jss::error_message] == "No such market.");
-
724  }
-
725 
-
726  for (auto const& nonArray : nonArrays)
-
727  {
-
728  Json::Value jv;
-
729  jv[jss::streams] = nonArray;
-
730  auto jr = wsc->invoke(method, jv)[jss::result];
-
731  BEAST_EXPECT(jr[jss::error] == "invalidParams");
-
732  BEAST_EXPECT(jr[jss::error_message] == "Invalid parameters.");
-
733  }
-
734 
-
735  {
-
736  Json::Value jv;
-
737  jv[jss::streams] = Json::arrayValue;
-
738  jv[jss::streams][0u] = 1;
-
739  auto jr = wsc->invoke(method, jv)[jss::result];
-
740  BEAST_EXPECT(jr[jss::error] == "malformedStream");
-
741  BEAST_EXPECT(jr[jss::error_message] == "Stream malformed.");
-
742  }
+
711  for (auto const& nonArray : nonArrays)
+
712  {
+
713  Json::Value jv;
+
714  jv[jss::streams] = nonArray;
+
715  auto jr = wsc->invoke(method, jv)[jss::result];
+
716  BEAST_EXPECT(jr[jss::error] == "invalidParams");
+
717  BEAST_EXPECT(jr[jss::error_message] == "Invalid parameters.");
+
718  }
+
719 
+
720  {
+
721  Json::Value jv;
+
722  jv[jss::streams] = Json::arrayValue;
+
723  jv[jss::streams][0u] = 1;
+
724  auto jr = wsc->invoke(method, jv)[jss::result];
+
725  BEAST_EXPECT(jr[jss::error] == "malformedStream");
+
726  BEAST_EXPECT(jr[jss::error_message] == "Stream malformed.");
+
727  }
+
728 
+
729  {
+
730  Json::Value jv;
+
731  jv[jss::streams] = Json::arrayValue;
+
732  jv[jss::streams][0u] = "not_a_stream";
+
733  auto jr = wsc->invoke(method, jv)[jss::result];
+
734  BEAST_EXPECT(jr[jss::error] == "malformedStream");
+
735  BEAST_EXPECT(jr[jss::error_message] == "Stream malformed.");
+
736  }
+
737  }
+
738 
+
739  void
+
740  testHistoryTxStream()
+
741  {
+
742  testcase("HistoryTxStream");
743 
-
744  {
-
745  Json::Value jv;
-
746  jv[jss::streams] = Json::arrayValue;
-
747  jv[jss::streams][0u] = "not_a_stream";
-
748  auto jr = wsc->invoke(method, jv)[jss::result];
-
749  BEAST_EXPECT(jr[jss::error] == "malformedStream");
-
750  BEAST_EXPECT(jr[jss::error_message] == "Stream malformed.");
-
751  }
-
752  }
+
744  using namespace std::chrono_literals;
+
745  using namespace jtx;
+
746  using IdxHashVec = std::vector<std::pair<int, std::string>>;
+
747 
+
748  Account alice("alice");
+
749  Account bob("bob");
+
750  Account carol("carol");
+
751  Account david("david");
753 
-
754  void
-
755  testHistoryTxStream()
-
756  {
-
757  testcase("HistoryTxStream");
-
758 
-
759  using namespace std::chrono_literals;
-
760  using namespace jtx;
-
761  using IdxHashVec = std::vector<std::pair<int, std::string>>;
+
754  /*
+
755  * return true if the subscribe or unsubscribe result is a success
+
756  */
+
757  auto goodSubRPC = [](Json::Value const& subReply) -> bool {
+
758  return subReply.isMember(jss::result) &&
+
759  subReply[jss::result].isMember(jss::status) &&
+
760  subReply[jss::result][jss::status] == jss::success;
+
761  };
762 
-
763  Account alice("alice");
-
764  Account bob("bob");
-
765  Account carol("carol");
-
766  Account david("david");
-
768 
-
769  /*
-
770  * return true if the subscribe or unsubscribe result is a success
-
771  */
-
772  auto goodSubRPC = [](Json::Value const& subReply) -> bool {
-
773  return subReply.isMember(jss::result) &&
-
774  subReply[jss::result].isMember(jss::status) &&
-
775  subReply[jss::result][jss::status] == jss::success;
-
776  };
-
777 
-
778  /*
-
779  * try to receive txns from the tx stream subscription via the WSClient.
-
780  * return {true, true} if received numReplies replies and also
-
781  * received a tx with the account_history_tx_first == true
-
782  */
-
783  auto getTxHash = [](WSClient& wsc,
-
784  IdxHashVec& v,
-
785  int numReplies) -> std::pair<bool, bool> {
-
786  bool first_flag = false;
-
787 
-
788  for (int i = 0; i < numReplies; ++i)
-
789  {
-
790  std::uint32_t idx{0};
-
791  auto reply = wsc.getMsg(100ms);
-
792  if (reply)
-
793  {
-
794  auto r = *reply;
-
795  if (r.isMember(jss::account_history_tx_index))
-
796  idx = r[jss::account_history_tx_index].asInt();
-
797  if (r.isMember(jss::account_history_tx_first))
-
798  first_flag = true;
-
799  if (r.isMember(jss::transaction) &&
-
800  r[jss::transaction].isMember(jss::hash))
-
801  {
-
802  v.emplace_back(
-
803  idx, r[jss::transaction][jss::hash].asString());
-
804  continue;
-
805  }
-
806  }
-
807  return {false, first_flag};
-
808  }
-
809 
-
810  return {true, first_flag};
-
811  };
-
812 
-
813  /*
-
814  * send payments between the two accounts a and b,
-
815  * and close ledgersToClose ledgers
-
816  */
-
817  auto sendPayments = [](Env& env,
-
818  Account const& a,
-
819  Account const& b,
-
820  int newTxns,
-
821  std::uint32_t ledgersToClose,
-
822  int numXRP = 10) {
-
823  env.memoize(a);
-
824  env.memoize(b);
-
825  for (int i = 0; i < newTxns; ++i)
-
826  {
-
827  auto& from = (i % 2 == 0) ? a : b;
-
828  auto& to = (i % 2 == 0) ? b : a;
-
829  env.apply(
-
830  pay(from, to, jtx::XRP(numXRP)),
-
831  jtx::seq(jtx::autofill),
-
832  jtx::fee(jtx::autofill),
-
833  jtx::sig(jtx::autofill));
-
834  }
-
835  for (int i = 0; i < ledgersToClose; ++i)
-
836  env.close();
-
837  return newTxns;
-
838  };
-
839 
-
840  /*
-
841  * Check if txHistoryVec has every item of accountVec,
-
842  * and in the same order.
-
843  * If sizeCompare is false, txHistoryVec is allowed to be larger.
-
844  */
-
845  auto hashCompare = [](IdxHashVec const& accountVec,
-
846  IdxHashVec const& txHistoryVec,
-
847  bool sizeCompare) -> bool {
-
848  if (accountVec.empty() || txHistoryVec.empty())
-
849  return false;
-
850  if (sizeCompare && accountVec.size() != (txHistoryVec.size()))
-
851  return false;
+
763  /*
+
764  * try to receive txns from the tx stream subscription via the WSClient.
+
765  * return {true, true} if received numReplies replies and also
+
766  * received a tx with the account_history_tx_first == true
+
767  */
+
768  auto getTxHash = [](WSClient& wsc,
+
769  IdxHashVec& v,
+
770  int numReplies) -> std::pair<bool, bool> {
+
771  bool first_flag = false;
+
772 
+
773  for (int i = 0; i < numReplies; ++i)
+
774  {
+
775  std::uint32_t idx{0};
+
776  auto reply = wsc.getMsg(100ms);
+
777  if (reply)
+
778  {
+
779  auto r = *reply;
+
780  if (r.isMember(jss::account_history_tx_index))
+
781  idx = r[jss::account_history_tx_index].asInt();
+
782  if (r.isMember(jss::account_history_tx_first))
+
783  first_flag = true;
+
784  if (r.isMember(jss::transaction) &&
+
785  r[jss::transaction].isMember(jss::hash))
+
786  {
+
787  v.emplace_back(
+
788  idx, r[jss::transaction][jss::hash].asString());
+
789  continue;
+
790  }
+
791  }
+
792  return {false, first_flag};
+
793  }
+
794 
+
795  return {true, first_flag};
+
796  };
+
797 
+
798  /*
+
799  * send payments between the two accounts a and b,
+
800  * and close ledgersToClose ledgers
+
801  */
+
802  auto sendPayments = [](Env& env,
+
803  Account const& a,
+
804  Account const& b,
+
805  int newTxns,
+
806  std::uint32_t ledgersToClose,
+
807  int numXRP = 10) {
+
808  env.memoize(a);
+
809  env.memoize(b);
+
810  for (int i = 0; i < newTxns; ++i)
+
811  {
+
812  auto& from = (i % 2 == 0) ? a : b;
+
813  auto& to = (i % 2 == 0) ? b : a;
+
814  env.apply(
+
815  pay(from, to, jtx::XRP(numXRP)),
+
816  jtx::seq(jtx::autofill),
+
817  jtx::fee(jtx::autofill),
+
818  jtx::sig(jtx::autofill));
+
819  }
+
820  for (int i = 0; i < ledgersToClose; ++i)
+
821  env.close();
+
822  return newTxns;
+
823  };
+
824 
+
825  /*
+
826  * Check if txHistoryVec has every item of accountVec,
+
827  * and in the same order.
+
828  * If sizeCompare is false, txHistoryVec is allowed to be larger.
+
829  */
+
830  auto hashCompare = [](IdxHashVec const& accountVec,
+
831  IdxHashVec const& txHistoryVec,
+
832  bool sizeCompare) -> bool {
+
833  if (accountVec.empty() || txHistoryVec.empty())
+
834  return false;
+
835  if (sizeCompare && accountVec.size() != (txHistoryVec.size()))
+
836  return false;
+
837 
+
838  hash_map<std::string, int> txHistoryMap;
+
839  for (auto const& tx : txHistoryVec)
+
840  {
+
841  txHistoryMap.emplace(tx.second, tx.first);
+
842  }
+
843 
+
844  auto getHistoryIndex = [&](std::size_t i) -> std::optional<int> {
+
845  if (i >= accountVec.size())
+
846  return {};
+
847  auto it = txHistoryMap.find(accountVec[i].second);
+
848  if (it == txHistoryMap.end())
+
849  return {};
+
850  return it->second;
+
851  };
852 
-
853  hash_map<std::string, int> txHistoryMap;
-
854  for (auto const& tx : txHistoryVec)
-
855  {
-
856  txHistoryMap.emplace(tx.second, tx.first);
-
857  }
-
858 
-
859  auto getHistoryIndex = [&](std::size_t i) -> std::optional<int> {
-
860  if (i >= accountVec.size())
-
861  return {};
-
862  auto it = txHistoryMap.find(accountVec[i].second);
-
863  if (it == txHistoryMap.end())
-
864  return {};
-
865  return it->second;
-
866  };
-
867 
-
868  auto firstHistoryIndex = getHistoryIndex(0);
-
869  if (!firstHistoryIndex)
-
870  return false;
-
871  for (std::size_t i = 1; i < accountVec.size(); ++i)
-
872  {
-
873  if (auto idx = getHistoryIndex(i);
-
874  !idx || *idx != *firstHistoryIndex + i)
-
875  return false;
-
876  }
-
877  return true;
-
878  };
-
879 
-
881 
-
882  {
-
883  /*
-
884  * subscribe to an account twice with same WS client,
-
885  * the second should fail
-
886  *
-
887  * also test subscribe to the account before it is created
+
853  auto firstHistoryIndex = getHistoryIndex(0);
+
854  if (!firstHistoryIndex)
+
855  return false;
+
856  for (std::size_t i = 1; i < accountVec.size(); ++i)
+
857  {
+
858  if (auto idx = getHistoryIndex(i);
+
859  !idx || *idx != *firstHistoryIndex + i)
+
860  return false;
+
861  }
+
862  return true;
+
863  };
+
864 
+
866 
+
867  {
+
868  /*
+
869  * subscribe to an account twice with same WS client,
+
870  * the second should fail
+
871  *
+
872  * also test subscribe to the account before it is created
+
873  */
+
874  Env env(*this);
+
875  auto wscTxHistory = makeWSClient(env.app().config());
+
876  Json::Value request;
+
877  request[jss::account_history_tx_stream] = Json::objectValue;
+
878  request[jss::account_history_tx_stream][jss::account] =
+
879  alice.human();
+
880  auto jv = wscTxHistory->invoke("subscribe", request);
+
881  if (!BEAST_EXPECT(goodSubRPC(jv)))
+
882  return;
+
883  jv = wscTxHistory->invoke("subscribe", request);
+
884  BEAST_EXPECT(!goodSubRPC(jv));
+
885 
+
886  /*
+
887  * unsubscribe history only, future txns should still be streamed
888  */
-
889  Env env(*this);
-
890  auto wscTxHistory = makeWSClient(env.app().config());
-
891  Json::Value request;
-
892  request[jss::account_history_tx_stream] = Json::objectValue;
-
893  request[jss::account_history_tx_stream][jss::account] =
-
894  alice.human();
-
895  auto jv = wscTxHistory->invoke("subscribe", request);
-
896  if (!BEAST_EXPECT(goodSubRPC(jv)))
-
897  return;
-
898  jv = wscTxHistory->invoke("subscribe", request);
-
899  BEAST_EXPECT(!goodSubRPC(jv));
-
900 
-
901  /*
-
902  * unsubscribe history only, future txns should still be streamed
-
903  */
-
904  request[jss::account_history_tx_stream][jss::stop_history_tx_only] =
-
905  true;
-
906  jv = wscTxHistory->invoke("unsubscribe", request);
-
907  if (!BEAST_EXPECT(goodSubRPC(jv)))
-
908  return;
+
889  request[jss::account_history_tx_stream][jss::stop_history_tx_only] =
+
890  true;
+
891  jv = wscTxHistory->invoke("unsubscribe", request);
+
892  if (!BEAST_EXPECT(goodSubRPC(jv)))
+
893  return;
+
894 
+
895  sendPayments(env, env.master, alice, 1, 1, 123456);
+
896 
+
897  IdxHashVec vec;
+
898  auto r = getTxHash(*wscTxHistory, vec, 1);
+
899  if (!BEAST_EXPECT(r.first && r.second))
+
900  return;
+
901 
+
902  /*
+
903  * unsubscribe, future txns should not be streamed
+
904  */
+
905  request[jss::account_history_tx_stream][jss::stop_history_tx_only] =
+
906  false;
+
907  jv = wscTxHistory->invoke("unsubscribe", request);
+
908  BEAST_EXPECT(goodSubRPC(jv));
909 
-
910  sendPayments(env, env.master, alice, 1, 1, 123456);
-
911 
-
912  IdxHashVec vec;
-
913  auto r = getTxHash(*wscTxHistory, vec, 1);
-
914  if (!BEAST_EXPECT(r.first && r.second))
-
915  return;
-
916 
-
917  /*
-
918  * unsubscribe, future txns should not be streamed
+
910  sendPayments(env, env.master, alice, 1, 1);
+
911  r = getTxHash(*wscTxHistory, vec, 1);
+
912  BEAST_EXPECT(!r.first);
+
913  }
+
914 
+
915  {
+
916  /*
+
917  * subscribe genesis account tx history without txns
+
918  * subscribe to bob's account after it is created
919  */
-
920  request[jss::account_history_tx_stream][jss::stop_history_tx_only] =
-
921  false;
-
922  jv = wscTxHistory->invoke("unsubscribe", request);
-
923  BEAST_EXPECT(goodSubRPC(jv));
-
924 
-
925  sendPayments(env, env.master, alice, 1, 1);
-
926  r = getTxHash(*wscTxHistory, vec, 1);
-
927  BEAST_EXPECT(!r.first);
-
928  }
-
929 
-
930  {
-
931  /*
-
932  * subscribe genesis account tx history without txns
-
933  * subscribe to bob's account after it is created
-
934  */
-
935  Env env(*this);
-
936  auto wscTxHistory = makeWSClient(env.app().config());
-
937  Json::Value request;
-
938  request[jss::account_history_tx_stream] = Json::objectValue;
-
939  request[jss::account_history_tx_stream][jss::account] =
-
940  "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
-
941  auto jv = wscTxHistory->invoke("subscribe", request);
-
942  if (!BEAST_EXPECT(goodSubRPC(jv)))
-
943  return;
-
944  IdxHashVec genesisFullHistoryVec;
-
945  if (!BEAST_EXPECT(
-
946  !getTxHash(*wscTxHistory, genesisFullHistoryVec, 1).first))
+
920  Env env(*this);
+
921  auto wscTxHistory = makeWSClient(env.app().config());
+
922  Json::Value request;
+
923  request[jss::account_history_tx_stream] = Json::objectValue;
+
924  request[jss::account_history_tx_stream][jss::account] =
+
925  "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
+
926  auto jv = wscTxHistory->invoke("subscribe", request);
+
927  if (!BEAST_EXPECT(goodSubRPC(jv)))
+
928  return;
+
929  IdxHashVec genesisFullHistoryVec;
+
930  if (!BEAST_EXPECT(
+
931  !getTxHash(*wscTxHistory, genesisFullHistoryVec, 1).first))
+
932  return;
+
933 
+
934  /*
+
935  * create bob's account with one tx
+
936  * the two subscriptions should both stream it
+
937  */
+
938  sendPayments(env, env.master, bob, 1, 1, 654321);
+
939 
+
940  auto r = getTxHash(*wscTxHistory, genesisFullHistoryVec, 1);
+
941  if (!BEAST_EXPECT(r.first && r.second))
+
942  return;
+
943 
+
944  request[jss::account_history_tx_stream][jss::account] = bob.human();
+
945  jv = wscTxHistory->invoke("subscribe", request);
+
946  if (!BEAST_EXPECT(goodSubRPC(jv)))
947  return;
-
948 
-
949  /*
-
950  * create bob's account with one tx
-
951  * the two subscriptions should both stream it
-
952  */
-
953  sendPayments(env, env.master, bob, 1, 1, 654321);
-
954 
-
955  auto r = getTxHash(*wscTxHistory, genesisFullHistoryVec, 1);
-
956  if (!BEAST_EXPECT(r.first && r.second))
-
957  return;
-
958 
-
959  request[jss::account_history_tx_stream][jss::account] = bob.human();
-
960  jv = wscTxHistory->invoke("subscribe", request);
-
961  if (!BEAST_EXPECT(goodSubRPC(jv)))
-
962  return;
-
963  IdxHashVec bobFullHistoryVec;
-
964  r = getTxHash(*wscTxHistory, bobFullHistoryVec, 1);
-
965  if (!BEAST_EXPECT(r.first && r.second))
-
966  return;
-
967  BEAST_EXPECT(
-
968  bobFullHistoryVec.back().second ==
-
969  genesisFullHistoryVec.back().second);
-
970 
-
971  /*
-
972  * unsubscribe to prepare next test
-
973  */
-
974  jv = wscTxHistory->invoke("unsubscribe", request);
-
975  if (!BEAST_EXPECT(goodSubRPC(jv)))
-
976  return;
-
977  request[jss::account_history_tx_stream][jss::account] =
-
978  "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
+
948  IdxHashVec bobFullHistoryVec;
+
949  r = getTxHash(*wscTxHistory, bobFullHistoryVec, 1);
+
950  if (!BEAST_EXPECT(r.first && r.second))
+
951  return;
+
952  BEAST_EXPECT(
+
953  bobFullHistoryVec.back().second ==
+
954  genesisFullHistoryVec.back().second);
+
955 
+
956  /*
+
957  * unsubscribe to prepare next test
+
958  */
+
959  jv = wscTxHistory->invoke("unsubscribe", request);
+
960  if (!BEAST_EXPECT(goodSubRPC(jv)))
+
961  return;
+
962  request[jss::account_history_tx_stream][jss::account] =
+
963  "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
+
964  jv = wscTxHistory->invoke("unsubscribe", request);
+
965  BEAST_EXPECT(goodSubRPC(jv));
+
966 
+
967  /*
+
968  * add more txns, then subscribe bob tx history and
+
969  * genesis account tx history. Their earliest txns should match.
+
970  */
+
971  sendPayments(env, env.master, bob, 30, 300);
+
972  wscTxHistory = makeWSClient(env.app().config());
+
973  request[jss::account_history_tx_stream][jss::account] = bob.human();
+
974  jv = wscTxHistory->invoke("subscribe", request);
+
975 
+
976  bobFullHistoryVec.clear();
+
977  BEAST_EXPECT(
+
978  getTxHash(*wscTxHistory, bobFullHistoryVec, 31).second);
979  jv = wscTxHistory->invoke("unsubscribe", request);
-
980  BEAST_EXPECT(goodSubRPC(jv));
-
981 
-
982  /*
-
983  * add more txns, then subscribe bob tx history and
-
984  * genesis account tx history. Their earliest txns should match.
-
985  */
-
986  sendPayments(env, env.master, bob, 30, 300);
-
987  wscTxHistory = makeWSClient(env.app().config());
-
988  request[jss::account_history_tx_stream][jss::account] = bob.human();
-
989  jv = wscTxHistory->invoke("subscribe", request);
-
990 
-
991  bobFullHistoryVec.clear();
-
992  BEAST_EXPECT(
-
993  getTxHash(*wscTxHistory, bobFullHistoryVec, 31).second);
-
994  jv = wscTxHistory->invoke("unsubscribe", request);
-
995 
-
996  request[jss::account_history_tx_stream][jss::account] =
-
997  "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
-
998  jv = wscTxHistory->invoke("subscribe", request);
-
999  genesisFullHistoryVec.clear();
-
1000  BEAST_EXPECT(
-
1001  getTxHash(*wscTxHistory, genesisFullHistoryVec, 31).second);
-
1002  jv = wscTxHistory->invoke("unsubscribe", request);
-
1003 
-
1004  BEAST_EXPECT(
-
1005  bobFullHistoryVec.back().second ==
-
1006  genesisFullHistoryVec.back().second);
-
1007  }
-
1008 
-
1009  {
-
1010  /*
-
1011  * subscribe account and subscribe account tx history
-
1012  * and compare txns streamed
-
1013  */
-
1014  Env env(*this);
-
1015  auto wscAccount = makeWSClient(env.app().config());
-
1016  auto wscTxHistory = makeWSClient(env.app().config());
-
1017 
-
1018  std::array<Account, 2> accounts = {alice, bob};
-
1019  env.fund(XRP(222222), accounts);
-
1020  env.close();
-
1021 
-
1022  // subscribe account
-
1023  Json::Value stream = Json::objectValue;
-
1024  stream[jss::accounts] = Json::arrayValue;
-
1025  stream[jss::accounts].append(alice.human());
-
1026  auto jv = wscAccount->invoke("subscribe", stream);
-
1027 
-
1028  sendPayments(env, alice, bob, 5, 1);
-
1029  sendPayments(env, alice, bob, 5, 1);
-
1030  IdxHashVec accountVec;
-
1031  if (!BEAST_EXPECT(getTxHash(*wscAccount, accountVec, 10).first))
-
1032  return;
-
1033 
-
1034  // subscribe account tx history
-
1035  Json::Value request;
-
1036  request[jss::account_history_tx_stream] = Json::objectValue;
-
1037  request[jss::account_history_tx_stream][jss::account] =
-
1038  alice.human();
-
1039  jv = wscTxHistory->invoke("subscribe", request);
+
980 
+
981  request[jss::account_history_tx_stream][jss::account] =
+
982  "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
+
983  jv = wscTxHistory->invoke("subscribe", request);
+
984  genesisFullHistoryVec.clear();
+
985  BEAST_EXPECT(
+
986  getTxHash(*wscTxHistory, genesisFullHistoryVec, 31).second);
+
987  jv = wscTxHistory->invoke("unsubscribe", request);
+
988 
+
989  BEAST_EXPECT(
+
990  bobFullHistoryVec.back().second ==
+
991  genesisFullHistoryVec.back().second);
+
992  }
+
993 
+
994  {
+
995  /*
+
996  * subscribe account and subscribe account tx history
+
997  * and compare txns streamed
+
998  */
+
999  Env env(*this);
+
1000  auto wscAccount = makeWSClient(env.app().config());
+
1001  auto wscTxHistory = makeWSClient(env.app().config());
+
1002 
+
1003  std::array<Account, 2> accounts = {alice, bob};
+
1004  env.fund(XRP(222222), accounts);
+
1005  env.close();
+
1006 
+
1007  // subscribe account
+
1008  Json::Value stream = Json::objectValue;
+
1009  stream[jss::accounts] = Json::arrayValue;
+
1010  stream[jss::accounts].append(alice.human());
+
1011  auto jv = wscAccount->invoke("subscribe", stream);
+
1012 
+
1013  sendPayments(env, alice, bob, 5, 1);
+
1014  sendPayments(env, alice, bob, 5, 1);
+
1015  IdxHashVec accountVec;
+
1016  if (!BEAST_EXPECT(getTxHash(*wscAccount, accountVec, 10).first))
+
1017  return;
+
1018 
+
1019  // subscribe account tx history
+
1020  Json::Value request;
+
1021  request[jss::account_history_tx_stream] = Json::objectValue;
+
1022  request[jss::account_history_tx_stream][jss::account] =
+
1023  alice.human();
+
1024  jv = wscTxHistory->invoke("subscribe", request);
+
1025 
+
1026  // compare historical txns
+
1027  IdxHashVec txHistoryVec;
+
1028  if (!BEAST_EXPECT(getTxHash(*wscTxHistory, txHistoryVec, 10).first))
+
1029  return;
+
1030  if (!BEAST_EXPECT(hashCompare(accountVec, txHistoryVec, true)))
+
1031  return;
+
1032 
+
1033  {
+
1034  // take out all history txns from stream to prepare next test
+
1035  IdxHashVec initFundTxns;
+
1036  if (!BEAST_EXPECT(
+
1037  getTxHash(*wscTxHistory, initFundTxns, 10).second))
+
1038  return;
+
1039  }
1040 
-
1041  // compare historical txns
-
1042  IdxHashVec txHistoryVec;
-
1043  if (!BEAST_EXPECT(getTxHash(*wscTxHistory, txHistoryVec, 10).first))
+
1041  // compare future txns
+
1042  sendPayments(env, alice, bob, 10, 1);
+
1043  if (!BEAST_EXPECT(getTxHash(*wscAccount, accountVec, 10).first))
1044  return;
-
1045  if (!BEAST_EXPECT(hashCompare(accountVec, txHistoryVec, true)))
+
1045  if (!BEAST_EXPECT(getTxHash(*wscTxHistory, txHistoryVec, 10).first))
1046  return;
-
1047 
-
1048  {
-
1049  // take out all history txns from stream to prepare next test
-
1050  IdxHashVec initFundTxns;
-
1051  if (!BEAST_EXPECT(
-
1052  getTxHash(*wscTxHistory, initFundTxns, 10).second))
-
1053  return;
-
1054  }
-
1055 
-
1056  // compare future txns
-
1057  sendPayments(env, alice, bob, 10, 1);
-
1058  if (!BEAST_EXPECT(getTxHash(*wscAccount, accountVec, 10).first))
-
1059  return;
-
1060  if (!BEAST_EXPECT(getTxHash(*wscTxHistory, txHistoryVec, 10).first))
-
1061  return;
-
1062  if (!BEAST_EXPECT(hashCompare(accountVec, txHistoryVec, true)))
-
1063  return;
-
1064  wscTxHistory->invoke("unsubscribe", request);
-
1065  wscAccount->invoke("unsubscribe", stream);
-
1066  }
-
1067 
-
1068  {
-
1069  /*
-
1070  * alice issues USD to carol
-
1071  * mix USD and XRP payments
-
1072  */
-
1073  Env env(*this);
-
1074  auto const USD_a = alice["USD"];
-
1075 
-
1076  std::array<Account, 2> accounts = {alice, carol};
-
1077  env.fund(XRP(333333), accounts);
-
1078  env.trust(USD_a(20000), carol);
-
1079  env.close();
-
1080 
-
1081  auto mixedPayments = [&]() -> int {
-
1082  sendPayments(env, alice, carol, 1, 0);
-
1083  env(pay(alice, carol, USD_a(100)));
-
1084  env.close();
-
1085  return 2;
-
1086  };
-
1087 
-
1088  // subscribe
-
1089  Json::Value request;
-
1090  request[jss::account_history_tx_stream] = Json::objectValue;
-
1091  request[jss::account_history_tx_stream][jss::account] =
-
1092  carol.human();
-
1093  auto ws = makeWSClient(env.app().config());
-
1094  auto jv = ws->invoke("subscribe", request);
-
1095  {
-
1096  // take out existing txns from the stream
-
1097  IdxHashVec tempVec;
-
1098  getTxHash(*ws, tempVec, 100);
-
1099  }
-
1100 
-
1101  auto count = mixedPayments();
-
1102  IdxHashVec vec1;
-
1103  if (!BEAST_EXPECT(getTxHash(*ws, vec1, count).first))
-
1104  return;
-
1105  ws->invoke("unsubscribe", request);
-
1106  }
-
1107 
-
1108  {
-
1109  /*
-
1110  * long transaction history
-
1111  */
-
1112  Env env(*this);
-
1113  std::array<Account, 2> accounts = {alice, carol};
-
1114  env.fund(XRP(444444), accounts);
-
1115  env.close();
-
1116 
-
1117  // many payments, and close lots of ledgers
-
1118  auto oneRound = [&](int numPayments) {
-
1119  return sendPayments(env, alice, carol, numPayments, 300);
-
1120  };
-
1121 
-
1122  // subscribe
-
1123  Json::Value request;
-
1124  request[jss::account_history_tx_stream] = Json::objectValue;
-
1125  request[jss::account_history_tx_stream][jss::account] =
-
1126  carol.human();
-
1127  auto wscLong = makeWSClient(env.app().config());
-
1128  auto jv = wscLong->invoke("subscribe", request);
-
1129  {
-
1130  // take out existing txns from the stream
-
1131  IdxHashVec tempVec;
-
1132  getTxHash(*wscLong, tempVec, 100);
-
1133  }
-
1134 
-
1135  // repeat the payments many rounds
-
1136  for (int kk = 2; kk < 10; ++kk)
-
1137  {
-
1138  auto count = oneRound(kk);
-
1139  IdxHashVec vec1;
-
1140  if (!BEAST_EXPECT(getTxHash(*wscLong, vec1, count).first))
-
1141  return;
-
1142 
-
1143  // another subscribe, only for this round
-
1144  auto wscShort = makeWSClient(env.app().config());
-
1145  auto jv = wscShort->invoke("subscribe", request);
-
1146  IdxHashVec vec2;
-
1147  if (!BEAST_EXPECT(getTxHash(*wscShort, vec2, count).first))
-
1148  return;
-
1149  if (!BEAST_EXPECT(hashCompare(vec1, vec2, true)))
-
1150  return;
-
1151  wscShort->invoke("unsubscribe", request);
-
1152  }
-
1153  }
-
1154  }
-
1155 
-
1156  void
-
1157  run() override
-
1158  {
-
1159  using namespace test::jtx;
-
1160  FeatureBitset const all{supported_amendments()};
-
1161  FeatureBitset const xrpFees{featureXRPFees};
+
1047  if (!BEAST_EXPECT(hashCompare(accountVec, txHistoryVec, true)))
+
1048  return;
+
1049  wscTxHistory->invoke("unsubscribe", request);
+
1050  wscAccount->invoke("unsubscribe", stream);
+
1051  }
+
1052 
+
1053  {
+
1054  /*
+
1055  * alice issues USD to carol
+
1056  * mix USD and XRP payments
+
1057  */
+
1058  Env env(*this);
+
1059  auto const USD_a = alice["USD"];
+
1060 
+
1061  std::array<Account, 2> accounts = {alice, carol};
+
1062  env.fund(XRP(333333), accounts);
+
1063  env.trust(USD_a(20000), carol);
+
1064  env.close();
+
1065 
+
1066  auto mixedPayments = [&]() -> int {
+
1067  sendPayments(env, alice, carol, 1, 0);
+
1068  env(pay(alice, carol, USD_a(100)));
+
1069  env.close();
+
1070  return 2;
+
1071  };
+
1072 
+
1073  // subscribe
+
1074  Json::Value request;
+
1075  request[jss::account_history_tx_stream] = Json::objectValue;
+
1076  request[jss::account_history_tx_stream][jss::account] =
+
1077  carol.human();
+
1078  auto ws = makeWSClient(env.app().config());
+
1079  auto jv = ws->invoke("subscribe", request);
+
1080  {
+
1081  // take out existing txns from the stream
+
1082  IdxHashVec tempVec;
+
1083  getTxHash(*ws, tempVec, 100);
+
1084  }
+
1085 
+
1086  auto count = mixedPayments();
+
1087  IdxHashVec vec1;
+
1088  if (!BEAST_EXPECT(getTxHash(*ws, vec1, count).first))
+
1089  return;
+
1090  ws->invoke("unsubscribe", request);
+
1091  }
+
1092 
+
1093  {
+
1094  /*
+
1095  * long transaction history
+
1096  */
+
1097  Env env(*this);
+
1098  std::array<Account, 2> accounts = {alice, carol};
+
1099  env.fund(XRP(444444), accounts);
+
1100  env.close();
+
1101 
+
1102  // many payments, and close lots of ledgers
+
1103  auto oneRound = [&](int numPayments) {
+
1104  return sendPayments(env, alice, carol, numPayments, 300);
+
1105  };
+
1106 
+
1107  // subscribe
+
1108  Json::Value request;
+
1109  request[jss::account_history_tx_stream] = Json::objectValue;
+
1110  request[jss::account_history_tx_stream][jss::account] =
+
1111  carol.human();
+
1112  auto wscLong = makeWSClient(env.app().config());
+
1113  auto jv = wscLong->invoke("subscribe", request);
+
1114  {
+
1115  // take out existing txns from the stream
+
1116  IdxHashVec tempVec;
+
1117  getTxHash(*wscLong, tempVec, 100);
+
1118  }
+
1119 
+
1120  // repeat the payments many rounds
+
1121  for (int kk = 2; kk < 10; ++kk)
+
1122  {
+
1123  auto count = oneRound(kk);
+
1124  IdxHashVec vec1;
+
1125  if (!BEAST_EXPECT(getTxHash(*wscLong, vec1, count).first))
+
1126  return;
+
1127 
+
1128  // another subscribe, only for this round
+
1129  auto wscShort = makeWSClient(env.app().config());
+
1130  auto jv = wscShort->invoke("subscribe", request);
+
1131  IdxHashVec vec2;
+
1132  if (!BEAST_EXPECT(getTxHash(*wscShort, vec2, count).first))
+
1133  return;
+
1134  if (!BEAST_EXPECT(hashCompare(vec1, vec2, true)))
+
1135  return;
+
1136  wscShort->invoke("unsubscribe", request);
+
1137  }
+
1138  }
+
1139  }
+
1140 
+
1141  void
+
1142  run() override
+
1143  {
+
1144  using namespace test::jtx;
+
1145  FeatureBitset const all{supported_amendments()};
+
1146  FeatureBitset const xrpFees{featureXRPFees};
+
1147 
+
1148  testServer();
+
1149  testLedger();
+
1150  testTransactions();
+
1151  testManifests();
+
1152  testValidations(all - xrpFees);
+
1153  testValidations(all);
+
1154  testSubErrors(true);
+
1155  testSubErrors(false);
+
1156  testSubByUrl();
+
1157  testHistoryTxStream();
+
1158  }
+
1159 };
+
1160 
+
1161 BEAST_DEFINE_TESTSUITE(Subscribe, app, ripple);
1162 
-
1163  testServer();
-
1164  testLedger();
-
1165  testTransactions();
-
1166  testManifests();
-
1167  testValidations(all - xrpFees);
-
1168  testValidations(all);
-
1169  testSubErrors(true);
-
1170  testSubErrors(false);
-
1171  testSubByUrl();
-
1172  testHistoryTxStream();
-
1173  }
-
1174 };
-
1175 
-
1176 BEAST_DEFINE_TESTSUITE(Subscribe, app, ripple);
-
1177 
-
1178 } // namespace test
-
1179 } // namespace ripple
+
1163 } // namespace test
+
1164 } // namespace ripple
@ include_date
bool isFlagLedger(LedgerIndex seq)
Returns true if the given ledgerIndex is a flag ledgerIndex.
Definition: Ledger.cpp:940
@@ -1258,7 +1243,7 @@ $(function() {
@ booleanValue
bool value
Definition: json_value.h:41
@ all
-
void testHistoryTxStream()
+
void testHistoryTxStream()
std::unique_ptr< Config > validator(std::unique_ptr< Config >, std::string const &)
adjust configuration with params needed to be a validator
Definition: envconfig.cpp:107
STL class.
T find(T... args)
@@ -1291,7 +1276,7 @@ $(function() {
SecretKey generateSecretKey(KeyType type, Seed const &seed)
Generate a new secret key deterministically.
Definition: SecretKey.cpp:291
FeatureBitset supported_amendments()
Definition: Env.h:70
-
void run() override
+
void run() override
Set the regular signature on a JTx.
Definition: sig.h:34
Set the fee on a JTx.
Definition: fee.h:35
@ secp256k1
@@ -1312,14 +1297,14 @@ $(function() {
std::unique_ptr< WSClient > makeWSClient(Config const &cfg, bool v2, unsigned rpc_version, std::unordered_map< std::string, std::string > const &headers)
Returns a client operating through WebSockets/S.
Definition: WSClient.cpp:300
@ NodePublic
-
void testSubByUrl()
+
void testSubByUrl()
std::string to_string(Manifest const &m)
Format the specified manifest to a string for debugging purposes.
Immutable cryptographic account descriptor.
Definition: Account.h:37
void testValidations(FeatureBitset features)
T end(T... args)
constexpr std::uint32_t vfFullValidation
Definition: STValidation.h:39
-
void testSubErrors(bool subscribe)
+
void testSubErrors(bool subscribe)
void memoize(Account const &account)
Associate AccountID with account.
Definition: Env.cpp:156
STL class.
A transaction testing environment.
Definition: Env.h:116
diff --git a/classripple_1_1NetworkOPsImp.html b/classripple_1_1NetworkOPsImp.html index c3413db2d7..2c514cf982 100644 --- a/classripple_1_1NetworkOPsImp.html +++ b/classripple_1_1NetworkOPsImp.html @@ -1280,7 +1280,7 @@ Static Private Attributes

Implements ripple::NetworkOPs.

-

Definition at line 4155 of file NetworkOPs.cpp.

+

Definition at line 4154 of file NetworkOPs.cpp.

@@ -1350,7 +1350,7 @@ Static Private Attributes

Implements ripple::NetworkOPs.

-

Definition at line 2273 of file NetworkOPs.cpp.

+

Definition at line 2272 of file NetworkOPs.cpp.

@@ -1722,7 +1722,7 @@ Static Private Attributes

Implements ripple::NetworkOPs.

-

Definition at line 2244 of file NetworkOPs.cpp.

+

Definition at line 2243 of file NetworkOPs.cpp.

@@ -2041,7 +2041,7 @@ Static Private Attributes

Implements ripple::NetworkOPs.

-

Definition at line 2290 of file NetworkOPs.cpp.

+

Definition at line 2289 of file NetworkOPs.cpp.

@@ -2087,7 +2087,7 @@ Static Private Attributes

Implements ripple::NetworkOPs.

-

Definition at line 2296 of file NetworkOPs.cpp.

+

Definition at line 2295 of file NetworkOPs.cpp.

@@ -2116,7 +2116,7 @@ Static Private Attributes

Implements ripple::NetworkOPs.

-

Definition at line 2668 of file NetworkOPs.cpp.

+

Definition at line 2667 of file NetworkOPs.cpp.

@@ -2145,7 +2145,7 @@ Static Private Attributes

Implements ripple::NetworkOPs.

-

Definition at line 2674 of file NetworkOPs.cpp.

+

Definition at line 2673 of file NetworkOPs.cpp.

@@ -2178,7 +2178,7 @@ Static Private Attributes

Implements ripple::NetworkOPs.

-

Definition at line 3880 of file NetworkOPs.cpp.

+

Definition at line 3879 of file NetworkOPs.cpp.

@@ -2207,7 +2207,7 @@ Static Private Attributes

Implements ripple::NetworkOPs.

-

Definition at line 2980 of file NetworkOPs.cpp.

+

Definition at line 2979 of file NetworkOPs.cpp.

@@ -2227,7 +2227,7 @@ Static Private Attributes
-

Definition at line 3000 of file NetworkOPs.cpp.

+

Definition at line 2999 of file NetworkOPs.cpp.

@@ -2257,7 +2257,7 @@ Static Private Attributes

Implements ripple::NetworkOPs.

-

Definition at line 3009 of file NetworkOPs.cpp.

+

Definition at line 3008 of file NetworkOPs.cpp.

@@ -2286,7 +2286,7 @@ Static Private Attributes

Implements ripple::NetworkOPs.

-

Definition at line 3014 of file NetworkOPs.cpp.

+

Definition at line 3013 of file NetworkOPs.cpp.

@@ -2316,7 +2316,7 @@ Static Private Attributes

Implements ripple::NetworkOPs.

-

Definition at line 2868 of file NetworkOPs.cpp.

+

Definition at line 2867 of file NetworkOPs.cpp.

@@ -2362,7 +2362,7 @@ Static Private Attributes

Implements ripple::NetworkOPs.

-

Definition at line 2680 of file NetworkOPs.cpp.

+

Definition at line 2679 of file NetworkOPs.cpp.

@@ -2422,7 +2422,7 @@ Static Private Attributes

Implements ripple::NetworkOPs.

-

Definition at line 2742 of file NetworkOPs.cpp.

+

Definition at line 2741 of file NetworkOPs.cpp.

@@ -2452,7 +2452,7 @@ Static Private Attributes

Implements ripple::NetworkOPs.

-

Definition at line 2762 of file NetworkOPs.cpp.

+

Definition at line 2761 of file NetworkOPs.cpp.

@@ -2482,7 +2482,7 @@ Static Private Attributes

Implements ripple::NetworkOPs.

-

Definition at line 2711 of file NetworkOPs.cpp.

+

Definition at line 2710 of file NetworkOPs.cpp.

@@ -2512,7 +2512,7 @@ Static Private Attributes

Implements ripple::NetworkOPs.

-

Definition at line 2800 of file NetworkOPs.cpp.

+

Definition at line 2799 of file NetworkOPs.cpp.

@@ -2558,7 +2558,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 3328 of file NetworkOPs.cpp.

+

Definition at line 3327 of file NetworkOPs.cpp.

@@ -2604,7 +2604,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 3365 of file NetworkOPs.cpp.

+

Definition at line 3364 of file NetworkOPs.cpp.

@@ -2650,7 +2650,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 3381 of file NetworkOPs.cpp.

+

Definition at line 3380 of file NetworkOPs.cpp.

@@ -2693,7 +2693,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 3773 of file NetworkOPs.cpp.

+

Definition at line 3772 of file NetworkOPs.cpp.

@@ -2748,7 +2748,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 3819 of file NetworkOPs.cpp.

+

Definition at line 3818 of file NetworkOPs.cpp.

@@ -2794,7 +2794,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 3830 of file NetworkOPs.cpp.

+

Definition at line 3829 of file NetworkOPs.cpp.

@@ -2834,7 +2834,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 3900 of file NetworkOPs.cpp.

+

Definition at line 3899 of file NetworkOPs.cpp.

@@ -2864,7 +2864,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 3940 of file NetworkOPs.cpp.

+

Definition at line 3939 of file NetworkOPs.cpp.

@@ -2894,7 +2894,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 3930 of file NetworkOPs.cpp.

+

Definition at line 3929 of file NetworkOPs.cpp.

@@ -2924,7 +2924,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 3948 of file NetworkOPs.cpp.

+

Definition at line 3947 of file NetworkOPs.cpp.

@@ -2970,7 +2970,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 3974 of file NetworkOPs.cpp.

+

Definition at line 3973 of file NetworkOPs.cpp.

@@ -3000,7 +3000,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 4004 of file NetworkOPs.cpp.

+

Definition at line 4003 of file NetworkOPs.cpp.

@@ -3040,7 +3040,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 3861 of file NetworkOPs.cpp.

+

Definition at line 3860 of file NetworkOPs.cpp.

@@ -3080,7 +3080,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 3871 of file NetworkOPs.cpp.

+

Definition at line 3870 of file NetworkOPs.cpp.

@@ -3110,7 +3110,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 3956 of file NetworkOPs.cpp.

+

Definition at line 3955 of file NetworkOPs.cpp.

@@ -3140,7 +3140,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 3966 of file NetworkOPs.cpp.

+

Definition at line 3965 of file NetworkOPs.cpp.

@@ -3200,7 +3200,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 4012 of file NetworkOPs.cpp.

+

Definition at line 4011 of file NetworkOPs.cpp.

@@ -3230,7 +3230,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 4022 of file NetworkOPs.cpp.

+

Definition at line 4021 of file NetworkOPs.cpp.

@@ -3260,7 +3260,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 4030 of file NetworkOPs.cpp.

+

Definition at line 4029 of file NetworkOPs.cpp.

@@ -3290,7 +3290,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 4040 of file NetworkOPs.cpp.

+

Definition at line 4039 of file NetworkOPs.cpp.

@@ -3320,7 +3320,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 4048 of file NetworkOPs.cpp.

+

Definition at line 4047 of file NetworkOPs.cpp.

@@ -3350,7 +3350,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 4064 of file NetworkOPs.cpp.

+

Definition at line 4063 of file NetworkOPs.cpp.

@@ -3380,7 +3380,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 4072 of file NetworkOPs.cpp.

+

Definition at line 4071 of file NetworkOPs.cpp.

@@ -3410,7 +3410,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 4082 of file NetworkOPs.cpp.

+

Definition at line 4081 of file NetworkOPs.cpp.

@@ -3440,7 +3440,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 2215 of file NetworkOPs.cpp.

+

Definition at line 2214 of file NetworkOPs.cpp.

@@ -3470,7 +3470,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 4090 of file NetworkOPs.cpp.

+

Definition at line 4089 of file NetworkOPs.cpp.

@@ -3500,7 +3500,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 4100 of file NetworkOPs.cpp.

+

Definition at line 4099 of file NetworkOPs.cpp.

@@ -3530,7 +3530,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 4107 of file NetworkOPs.cpp.

+

Definition at line 4106 of file NetworkOPs.cpp.

@@ -3570,7 +3570,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 4120 of file NetworkOPs.cpp.

+

Definition at line 4119 of file NetworkOPs.cpp.

@@ -3600,7 +3600,7 @@ Static Private Attributes

Implements ripple::InfoSub::Source.

-

Definition at line 4130 of file NetworkOPs.cpp.

+

Definition at line 4129 of file NetworkOPs.cpp.

@@ -3659,7 +3659,7 @@ Static Private Attributes

Implements ripple::NetworkOPs.

-

Definition at line 4057 of file NetworkOPs.cpp.

+

Definition at line 4056 of file NetworkOPs.cpp.

@@ -3867,7 +3867,7 @@ Static Private Attributes
-

Definition at line 3022 of file NetworkOPs.cpp.

+

Definition at line 3021 of file NetworkOPs.cpp.

@@ -3905,7 +3905,7 @@ Static Private Attributes
-

Definition at line 3080 of file NetworkOPs.cpp.

+

Definition at line 3079 of file NetworkOPs.cpp.

@@ -3943,7 +3943,7 @@ Static Private Attributes
-

Definition at line 3135 of file NetworkOPs.cpp.

+

Definition at line 3134 of file NetworkOPs.cpp.

@@ -3987,7 +3987,7 @@ Static Private Attributes
-

Definition at line 3258 of file NetworkOPs.cpp.

+

Definition at line 3257 of file NetworkOPs.cpp.

@@ -4109,7 +4109,7 @@ Static Private Attributes
Note
called while holding mSubLock
-

Definition at line 3729 of file NetworkOPs.cpp.

+

Definition at line 3728 of file NetworkOPs.cpp.

@@ -4137,7 +4137,7 @@ Static Private Attributes
-

Definition at line 3409 of file NetworkOPs.cpp.

+

Definition at line 3408 of file NetworkOPs.cpp.

@@ -4192,7 +4192,7 @@ Static Private Attributes
-

Definition at line 4495 of file NetworkOPs.cpp.

+

Definition at line 4494 of file NetworkOPs.cpp.

diff --git a/classripple_1_1NetworkOPsImp_1_1StateAccounting.html b/classripple_1_1NetworkOPsImp_1_1StateAccounting.html index ddebebfb1e..182a281f19 100644 --- a/classripple_1_1NetworkOPsImp_1_1StateAccounting.html +++ b/classripple_1_1NetworkOPsImp_1_1StateAccounting.html @@ -195,7 +195,7 @@ Static Private Attributes -

Definition at line 4533 of file NetworkOPs.cpp.

+

Definition at line 4532 of file NetworkOPs.cpp.

@@ -218,7 +218,7 @@ Static Private Attributes

Output state counters in JSON format.

@obj Json object to which to add state accounting data.

-

Definition at line 4554 of file NetworkOPs.cpp.

+

Definition at line 4553 of file NetworkOPs.cpp.

diff --git a/classripple_1_1test_1_1Subscribe__test.html b/classripple_1_1test_1_1Subscribe__test.html index 6978dbad30..aaaf4bade3 100644 --- a/classripple_1_1test_1_1Subscribe__test.html +++ b/classripple_1_1test_1_1Subscribe__test.html @@ -227,7 +227,7 @@ Public Member Functions
-

Definition at line 462 of file Subscribe_test.cpp.

+

Definition at line 447 of file Subscribe_test.cpp.

@@ -247,7 +247,7 @@ Public Member Functions
-

Definition at line 490 of file Subscribe_test.cpp.

+

Definition at line 475 of file Subscribe_test.cpp.

@@ -266,7 +266,7 @@ Public Member Functions
-

Definition at line 755 of file Subscribe_test.cpp.

+

Definition at line 740 of file Subscribe_test.cpp.

@@ -293,7 +293,7 @@ Public Member Functions
-

Definition at line 1157 of file Subscribe_test.cpp.

+

Definition at line 1142 of file Subscribe_test.cpp.

diff --git a/jss_8h_source.html b/jss_8h_source.html index 33fcf75fa2..4f5580e259 100644 --- a/jss_8h_source.html +++ b/jss_8h_source.html @@ -222,517 +222,514 @@ $(function() {
151 JSS(balances); // out: GatewayBalances
152 JSS(base); // out: LogLevel
153 JSS(base_fee); // out: NetworkOPs
-
154 JSS(base_fee_drops); // out: NetworkOPs
-
155 JSS(base_fee_xrp); // out: NetworkOPs
-
156 JSS(bids); // out: Subscribe
-
157 JSS(binary); // in: AccountTX, LedgerEntry,
-
158  // AccountTxOld, Tx LedgerData
-
159 JSS(blob); // out: ValidatorList
-
160 JSS(blobs_v2); // out: ValidatorList
-
161  // in: UNL
-
162 JSS(books); // in: Subscribe, Unsubscribe
-
163 JSS(both); // in: Subscribe, Unsubscribe
-
164 JSS(both_sides); // in: Subscribe, Unsubscribe
-
165 JSS(broadcast); // out: SubmitTransaction
-
166 JSS(build_path); // in: TransactionSign
-
167 JSS(build_version); // out: NetworkOPs
-
168 JSS(cancel_after); // out: AccountChannels
-
169 JSS(can_delete); // out: CanDelete
-
170 JSS(changes); // out: BookChanges
-
171 JSS(channel_id); // out: AccountChannels
-
172 JSS(channels); // out: AccountChannels
-
173 JSS(check); // in: AccountObjects
-
174 JSS(check_nodes); // in: LedgerCleaner
-
175 JSS(clear); // in/out: FetchInfo
-
176 JSS(close); // out: BookChanges
-
177 JSS(close_flags); // out: LedgerToJson
-
178 JSS(close_time); // in: Application, out: NetworkOPs,
-
179  // RCLCxPeerPos, LedgerToJson
-
180 JSS(close_time_estimated); // in: Application, out: LedgerToJson
-
181 JSS(close_time_human); // out: LedgerToJson
-
182 JSS(close_time_offset); // out: NetworkOPs
-
183 JSS(close_time_resolution); // in: Application; out: LedgerToJson
-
184 JSS(closed); // out: NetworkOPs, LedgerToJson,
-
185  // handlers/Ledger
-
186 JSS(closed_ledger); // out: NetworkOPs
-
187 JSS(cluster); // out: PeerImp
-
188 JSS(code); // out: errors
-
189 JSS(command); // in: RPCHandler
-
190 JSS(complete); // out: NetworkOPs, InboundLedger
-
191 JSS(complete_ledgers); // out: NetworkOPs, PeerImp
-
192 JSS(complete_shards); // out: OverlayImpl, PeerImp
-
193 JSS(consensus); // out: NetworkOPs, LedgerConsensus
-
194 JSS(converge_time); // out: NetworkOPs
-
195 JSS(converge_time_s); // out: NetworkOPs
-
196 JSS(cookie); // out: NetworkOPs
-
197 JSS(count); // in: AccountTx*, ValidatorList
-
198 JSS(counters); // in/out: retrieve counters
-
199 JSS(currency_a); // out: BookChanges
-
200 JSS(currency_b); // out: BookChanges
-
201 JSS(currentShard); // out: NodeToShardStatus
-
202 JSS(currentShardIndex); // out: NodeToShardStatus
-
203 JSS(currency); // in: paths/PathRequest, STAmount
-
204  // out: STPathSet, STAmount,
-
205  // AccountLines
-
206 JSS(current); // out: OwnerInfo
-
207 JSS(current_activities);
-
208 JSS(current_ledger_size); // out: TxQ
-
209 JSS(current_queue_size); // out: TxQ
-
210 JSS(data); // out: LedgerData
-
211 JSS(date); // out: tx/Transaction, NetworkOPs
-
212 JSS(dbKBLedger); // out: getCounts
-
213 JSS(dbKBTotal); // out: getCounts
-
214 JSS(dbKBTransaction); // out: getCounts
-
215 JSS(debug_signing); // in: TransactionSign
-
216 JSS(deletion_blockers_only); // in: AccountObjects
-
217 JSS(delivered_amount); // out: insertDeliveredAmount
-
218 JSS(deposit_authorized); // out: deposit_authorized
-
219 JSS(deposit_preauth); // in: AccountObjects, LedgerData
-
220 JSS(deprecated); // out
-
221 JSS(descending); // in: AccountTx*
-
222 JSS(description); // in/out: Reservations
-
223 JSS(destination); // in: nft_buy_offers, nft_sell_offers
-
224 JSS(destination_account); // in: PathRequest, RipplePathFind, account_lines
-
225  // out: AccountChannels
-
226 JSS(destination_amount); // in: PathRequest, RipplePathFind
-
227 JSS(destination_currencies); // in: PathRequest, RipplePathFind
-
228 JSS(destination_tag); // in: PathRequest
-
229  // out: AccountChannels
-
230 JSS(details); // out: Manifest, server_info
-
231 JSS(dir_entry); // out: DirectoryEntryIterator
-
232 JSS(dir_index); // out: DirectoryEntryIterator
-
233 JSS(dir_root); // out: DirectoryEntryIterator
-
234 JSS(directory); // in: LedgerEntry
-
235 JSS(domain); // out: ValidatorInfo, Manifest
-
236 JSS(drops); // out: TxQ
-
237 JSS(duration_us); // out: NetworkOPs
-
238 JSS(effective); // out: ValidatorList
-
239  // in: UNL
-
240 JSS(enabled); // out: AmendmentTable
-
241 JSS(engine_result); // out: NetworkOPs, TransactionSign, Submit
-
242 JSS(engine_result_code); // out: NetworkOPs, TransactionSign, Submit
-
243 JSS(engine_result_message); // out: NetworkOPs, TransactionSign, Submit
-
244 JSS(ephemeral_key); // out: ValidatorInfo
-
245  // in/out: Manifest
-
246 JSS(error); // out: error
-
247 JSS(errored);
-
248 JSS(error_code); // out: error
-
249 JSS(error_exception); // out: Submit
-
250 JSS(error_message); // out: error
-
251 JSS(escrow); // in: LedgerEntry
-
252 JSS(expand); // in: handler/Ledger
-
253 JSS(expected_date); // out: any (warnings)
-
254 JSS(expected_date_UTC); // out: any (warnings)
-
255 JSS(expected_ledger_size); // out: TxQ
-
256 JSS(expiration); // out: AccountOffers, AccountChannels,
-
257  // ValidatorList
-
258 JSS(fail_hard); // in: Sign, Submit
-
259 JSS(failed); // out: InboundLedger
-
260 JSS(feature); // in: Feature
-
261 JSS(features); // out: Feature
-
262 JSS(fee); // out: NetworkOPs, Peers
-
263 JSS(fee_base); // out: NetworkOPs
-
264 JSS(fee_div_max); // in: TransactionSign
-
265 JSS(fee_level); // out: AccountInfo
-
266 JSS(fee_mult_max); // in: TransactionSign
-
267 JSS(fee_ref); // out: NetworkOPs
-
268 JSS(fetch_pack); // out: NetworkOPs
-
269 JSS(first); // out: rpc/Version
-
270 JSS(firstSequence); // out: NodeToShardStatus
-
271 JSS(firstShardIndex); // out: NodeToShardStatus
-
272 JSS(finished);
-
273 JSS(fix_txns); // in: LedgerCleaner
-
274 JSS(flags); // out: AccountOffers,
-
275  // NetworkOPs
-
276 JSS(forward); // in: AccountTx
-
277 JSS(freeze); // out: AccountLines
-
278 JSS(freeze_peer); // out: AccountLines
-
279 JSS(frozen_balances); // out: GatewayBalances
-
280 JSS(full); // in: LedgerClearer, handlers/Ledger
-
281 JSS(full_reply); // out: PathFind
-
282 JSS(fullbelow_size); // out: GetCounts
-
283 JSS(good); // out: RPCVersion
-
284 JSS(hash); // out: NetworkOPs, InboundLedger,
-
285  // LedgerToJson, STTx; field
-
286 JSS(hashes); // in: AccountObjects
-
287 JSS(have_header); // out: InboundLedger
-
288 JSS(have_state); // out: InboundLedger
-
289 JSS(have_transactions); // out: InboundLedger
-
290 JSS(high); // out: BookChanges
-
291 JSS(highest_sequence); // out: AccountInfo
-
292 JSS(highest_ticket); // out: AccountInfo
-
293 JSS(historical_perminute); // historical_perminute.
-
294 JSS(hostid); // out: NetworkOPs
-
295 JSS(hotwallet); // in: GatewayBalances
-
296 JSS(id); // websocket.
-
297 JSS(ident); // in: AccountCurrencies, AccountInfo,
-
298  // OwnerInfo
-
299 JSS(ignore_default); // in: AccountLines
-
300 JSS(inLedger); // out: tx/Transaction
-
301 JSS(inbound); // out: PeerImp
-
302 JSS(index); // in: LedgerEntry, DownloadShard
-
303  // out: STLedgerEntry,
-
304  // LedgerEntry, TxHistory, LedgerData
-
305 JSS(info); // out: ServerInfo, ConsensusInfo, FetchInfo
-
306 JSS(initial_sync_duration_us);
-
307 JSS(internal_command); // in: Internal
-
308 JSS(invalid_API_version); // out: Many, when a request has an invalid
-
309  // version
-
310 JSS(io_latency_ms); // out: NetworkOPs
-
311 JSS(ip); // in: Connect, out: OverlayImpl
-
312 JSS(issuer); // in: RipplePathFind, Subscribe,
-
313  // Unsubscribe, BookOffers
-
314  // out: STPathSet, STAmount
-
315 JSS(job);
-
316 JSS(job_queue);
-
317 JSS(jobs);
-
318 JSS(jsonrpc); // json version
-
319 JSS(jq_trans_overflow); // JobQueue transaction limit overflow.
-
320 JSS(kept); // out: SubmitTransaction
-
321 JSS(key); // out
-
322 JSS(key_type); // in/out: WalletPropose, TransactionSign
-
323 JSS(latency); // out: PeerImp
-
324 JSS(last); // out: RPCVersion
-
325 JSS(lastSequence); // out: NodeToShardStatus
-
326 JSS(lastShardIndex); // out: NodeToShardStatus
-
327 JSS(last_close); // out: NetworkOPs
-
328 JSS(last_refresh_time); // out: ValidatorSite
-
329 JSS(last_refresh_status); // out: ValidatorSite
-
330 JSS(last_refresh_message); // out: ValidatorSite
-
331 JSS(ledger); // in: NetworkOPs, LedgerCleaner,
-
332  // RPCHelpers
-
333  // out: NetworkOPs, PeerImp
-
334 JSS(ledger_current_index); // out: NetworkOPs, RPCHelpers,
-
335  // LedgerCurrent, LedgerAccept,
-
336  // AccountLines
-
337 JSS(ledger_data); // out: LedgerHeader
-
338 JSS(ledger_hash); // in: RPCHelpers, LedgerRequest,
-
339  // RipplePathFind, TransactionEntry,
-
340  // handlers/Ledger
-
341  // out: NetworkOPs, RPCHelpers,
-
342  // LedgerClosed, LedgerData,
-
343  // AccountLines
-
344 JSS(ledger_hit_rate); // out: GetCounts
-
345 JSS(ledger_index); // in/out: many
-
346 JSS(ledger_index_max); // in, out: AccountTx*
-
347 JSS(ledger_index_min); // in, out: AccountTx*
-
348 JSS(ledger_max); // in, out: AccountTx*
-
349 JSS(ledger_min); // in, out: AccountTx*
-
350 JSS(ledger_time); // out: NetworkOPs
-
351 JSS(levels); // LogLevels
-
352 JSS(limit); // in/out: AccountTx*, AccountOffers,
-
353  // AccountLines, AccountObjects
-
354  // in: LedgerData, BookOffers
-
355 JSS(limit_peer); // out: AccountLines
-
356 JSS(lines); // out: AccountLines
-
357 JSS(list); // out: ValidatorList
-
358 JSS(load); // out: NetworkOPs, PeerImp
-
359 JSS(load_base); // out: NetworkOPs
-
360 JSS(load_factor); // out: NetworkOPs
-
361 JSS(load_factor_cluster); // out: NetworkOPs
-
362 JSS(load_factor_fee_escalation); // out: NetworkOPs
-
363 JSS(load_factor_fee_queue); // out: NetworkOPs
-
364 JSS(load_factor_fee_reference); // out: NetworkOPs
-
365 JSS(load_factor_local); // out: NetworkOPs
-
366 JSS(load_factor_net); // out: NetworkOPs
-
367 JSS(load_factor_server); // out: NetworkOPs
-
368 JSS(load_fee); // out: LoadFeeTrackImp, NetworkOPs
-
369 JSS(local); // out: resource/Logic.h
-
370 JSS(local_txs); // out: GetCounts
-
371 JSS(local_static_keys); // out: ValidatorList
-
372 JSS(low); // out: BookChanges
-
373 JSS(lowest_sequence); // out: AccountInfo
-
374 JSS(lowest_ticket); // out: AccountInfo
-
375 JSS(majority); // out: RPC feature
-
376 JSS(manifest); // out: ValidatorInfo, Manifest
-
377 JSS(marker); // in/out: AccountTx, AccountOffers,
-
378  // AccountLines, AccountObjects,
-
379  // LedgerData
-
380  // in: BookOffers
-
381 JSS(master_key); // out: WalletPropose, NetworkOPs,
-
382  // ValidatorInfo
-
383  // in/out: Manifest
-
384 JSS(master_seed); // out: WalletPropose
-
385 JSS(master_seed_hex); // out: WalletPropose
-
386 JSS(master_signature); // out: pubManifest
-
387 JSS(max_ledger); // in/out: LedgerCleaner
-
388 JSS(max_queue_size); // out: TxQ
-
389 JSS(max_spend_drops); // out: AccountInfo
-
390 JSS(max_spend_drops_total); // out: AccountInfo
-
391 JSS(median_fee); // out: TxQ
-
392 JSS(median_level); // out: TxQ
-
393 JSS(message); // error.
-
394 JSS(meta); // out: NetworkOPs, AccountTx*, Tx
-
395 JSS(metaData);
-
396 JSS(metadata); // out: TransactionEntry
-
397 JSS(method); // RPC
-
398 JSS(methods);
-
399 JSS(metrics); // out: Peers
-
400 JSS(min_count); // in: GetCounts
-
401 JSS(min_ledger); // in: LedgerCleaner
-
402 JSS(minimum_fee); // out: TxQ
-
403 JSS(minimum_level); // out: TxQ
-
404 JSS(missingCommand); // error
-
405 JSS(name); // out: AmendmentTableImpl, PeerImp
-
406 JSS(needed_state_hashes); // out: InboundLedger
-
407 JSS(needed_transaction_hashes); // out: InboundLedger
-
408 JSS(network_id); // out: NetworkOPs
-
409 JSS(network_ledger); // out: NetworkOPs
-
410 JSS(next_refresh_time); // out: ValidatorSite
-
411 JSS(nft_id); // in: nft_sell_offers, nft_buy_offers
-
412 JSS(nft_offer); // in: LedgerEntry
-
413 JSS(nft_offer_index); // out nft_buy_offers, nft_sell_offers
-
414 JSS(nft_page); // in: LedgerEntry
-
415 JSS(nft_serial); // out: account_nfts
-
416 JSS(no_ripple); // out: AccountLines
-
417 JSS(no_ripple_peer); // out: AccountLines
-
418 JSS(node); // out: LedgerEntry
-
419 JSS(node_binary); // out: LedgerEntry
-
420 JSS(node_read_bytes); // out: GetCounts
-
421 JSS(node_read_errors); // out: GetCounts
-
422 JSS(node_read_retries); // out: GetCounts
-
423 JSS(node_reads_hit); // out: GetCounts
-
424 JSS(node_reads_total); // out: GetCounts
-
425 JSS(node_reads_duration_us); // out: GetCounts
-
426 JSS(node_size); // out: server_info
-
427 JSS(nodestore); // out: GetCounts
-
428 JSS(node_writes); // out: GetCounts
-
429 JSS(node_written_bytes); // out: GetCounts
-
430 JSS(node_writes_duration_us); // out: GetCounts
-
431 JSS(node_write_retries); // out: GetCounts
-
432 JSS(node_writes_delayed); // out::GetCounts
-
433 JSS(obligations); // out: GatewayBalances
-
434 JSS(offer); // in: LedgerEntry
-
435 JSS(offers); // out: NetworkOPs, AccountOffers, Subscribe
-
436 JSS(offline); // in: TransactionSign
-
437 JSS(offset); // in/out: AccountTxOld
-
438 JSS(open); // out: handlers/Ledger
-
439 JSS(open_ledger_cost); // out: SubmitTransaction
-
440 JSS(open_ledger_fee); // out: TxQ
-
441 JSS(open_ledger_level); // out: TxQ
-
442 JSS(owner); // in: LedgerEntry, out: NetworkOPs
-
443 JSS(owner_funds); // in/out: Ledger, NetworkOPs, AcceptedLedgerTx
-
444 JSS(page_index);
-
445 JSS(params); // RPC
-
446 JSS(parent_close_time); // out: LedgerToJson
-
447 JSS(parent_hash); // out: LedgerToJson
-
448 JSS(partition); // in: LogLevel
-
449 JSS(passphrase); // in: WalletPropose
-
450 JSS(password); // in: Subscribe
-
451 JSS(paths); // in: RipplePathFind
-
452 JSS(paths_canonical); // out: RipplePathFind
-
453 JSS(paths_computed); // out: PathRequest, RipplePathFind
-
454 JSS(payment_channel); // in: LedgerEntry
-
455 JSS(peer); // in: AccountLines
-
456 JSS(peer_authorized); // out: AccountLines
-
457 JSS(peer_id); // out: RCLCxPeerPos
-
458 JSS(peers); // out: InboundLedger, handlers/Peers, Overlay
-
459 JSS(peer_disconnects); // Severed peer connection counter.
-
460 JSS(peer_disconnects_resources); // Severed peer connections because of
-
461  // excess resource consumption.
-
462 JSS(port); // in: Connect
-
463 JSS(previous); // out: Reservations
-
464 JSS(previous_ledger); // out: LedgerPropose
-
465 JSS(proof); // in: BookOffers
-
466 JSS(propose_seq); // out: LedgerPropose
-
467 JSS(proposers); // out: NetworkOPs, LedgerConsensus
-
468 JSS(protocol); // out: PeerImp
-
469 JSS(proxied); // out: RPC ping
-
470 JSS(pubkey_node); // out: NetworkOPs
-
471 JSS(pubkey_publisher); // out: ValidatorList
-
472 JSS(pubkey_validator); // out: NetworkOPs, ValidatorList
-
473 JSS(public_key); // out: OverlayImpl, PeerImp, WalletPropose,
-
474  // ValidatorInfo
-
475  // in/out: Manifest
-
476 JSS(public_key_hex); // out: WalletPropose
-
477 JSS(published_ledger); // out: NetworkOPs
-
478 JSS(publisher_lists); // out: ValidatorList
-
479 JSS(quality); // out: NetworkOPs
-
480 JSS(quality_in); // out: AccountLines
-
481 JSS(quality_out); // out: AccountLines
-
482 JSS(queue); // in: AccountInfo
-
483 JSS(queue_data); // out: AccountInfo
-
484 JSS(queued); // out: SubmitTransaction
-
485 JSS(queued_duration_us);
-
486 JSS(random); // out: Random
-
487 JSS(raw_meta); // out: AcceptedLedgerTx
-
488 JSS(receive_currencies); // out: AccountCurrencies
-
489 JSS(reference_level); // out: TxQ
-
490 JSS(refresh_interval); // in: UNL
-
491 JSS(refresh_interval_min); // out: ValidatorSites
-
492 JSS(regular_seed); // in/out: LedgerEntry
-
493 JSS(remaining); // out: ValidatorList
-
494 JSS(remote); // out: Logic.h
-
495 JSS(request); // RPC
-
496 JSS(requested); // out: Manifest
-
497 JSS(reservations); // out: Reservations
-
498 JSS(reserve_base); // out: NetworkOPs
-
499 JSS(reserve_base_drops); // out: NetworkOPs
-
500 JSS(reserve_base_xrp); // out: NetworkOPs
-
501 JSS(reserve_inc); // out: NetworkOPs
-
502 JSS(reserve_inc_drops); // out: NetworkOPs
-
503 JSS(reserve_inc_xrp); // out: NetworkOPs
-
504 JSS(response); // websocket
-
505 JSS(result); // RPC
-
506 JSS(ripple_lines); // out: NetworkOPs
-
507 JSS(ripple_state); // in: LedgerEntr
-
508 JSS(ripplerpc); // ripple RPC version
-
509 JSS(role); // out: Ping.cpp
-
510 JSS(rpc);
-
511 JSS(rt_accounts); // in: Subscribe, Unsubscribe
-
512 JSS(running_duration_us);
-
513 JSS(search_depth); // in: RipplePathFind
-
514 JSS(searched_all); // out: Tx
-
515 JSS(secret); // in: TransactionSign,
-
516  // ValidationCreate, ValidationSeed,
-
517  // channel_authorize
-
518 JSS(seed); //
-
519 JSS(seed_hex); // in: WalletPropose, TransactionSign
-
520 JSS(send_currencies); // out: AccountCurrencies
-
521 JSS(send_max); // in: PathRequest, RipplePathFind
-
522 JSS(seq); // in: LedgerEntry;
-
523  // out: NetworkOPs, RPCSub, AccountOffers,
-
524  // ValidatorList, ValidatorInfo, Manifest
-
525 JSS(seqNum); // out: LedgerToJson
-
526 JSS(sequence); // in: UNL
-
527 JSS(sequence_count); // out: AccountInfo
-
528 JSS(server_domain); // out: NetworkOPs
-
529 JSS(server_state); // out: NetworkOPs
-
530 JSS(server_state_duration_us); // out: NetworkOPs
-
531 JSS(server_status); // out: NetworkOPs
-
532 JSS(server_version); // out: NetworkOPs
-
533 JSS(settle_delay); // out: AccountChannels
-
534 JSS(severity); // in: LogLevel
-
535 JSS(shards); // in/out: GetCounts, DownloadShard
-
536 JSS(signature); // out: NetworkOPs, ChannelAuthorize
-
537 JSS(signature_verified); // out: ChannelVerify
-
538 JSS(signing_key); // out: NetworkOPs
-
539 JSS(signing_keys); // out: ValidatorList
-
540 JSS(signing_time); // out: NetworkOPs
-
541 JSS(signer_list); // in: AccountObjects
-
542 JSS(signer_lists); // in/out: AccountInfo
-
543 JSS(snapshot); // in: Subscribe
-
544 JSS(source_account); // in: PathRequest, RipplePathFind
-
545 JSS(source_amount); // in: PathRequest, RipplePathFind
-
546 JSS(source_currencies); // in: PathRequest, RipplePathFind
-
547 JSS(source_tag); // out: AccountChannels
-
548 JSS(stand_alone); // out: NetworkOPs
-
549 JSS(start); // in: TxHistory
-
550 JSS(started);
-
551 JSS(state); // out: Logic.h, ServerState, LedgerData
-
552 JSS(state_accounting); // out: NetworkOPs
-
553 JSS(state_now); // in: Subscribe
-
554 JSS(status); // error
-
555 JSS(stop); // in: LedgerCleaner
-
556 JSS(stop_history_tx_only); // in: Unsubscribe, stop history tx stream
-
557 JSS(storedSeqs); // out: NodeToShardStatus
-
558 JSS(streams); // in: Subscribe, Unsubscribe
-
559 JSS(strict); // in: AccountCurrencies, AccountInfo
-
560 JSS(sub_index); // in: LedgerEntry
-
561 JSS(subcommand); // in: PathFind
-
562 JSS(success); // rpc
-
563 JSS(supported); // out: AmendmentTableImpl
-
564 JSS(system_time_offset); // out: NetworkOPs
-
565 JSS(tag); // out: Peers
-
566 JSS(taker); // in: Subscribe, BookOffers
-
567 JSS(taker_gets); // in: Subscribe, Unsubscribe, BookOffers
-
568 JSS(taker_gets_funded); // out: NetworkOPs
-
569 JSS(taker_pays); // in: Subscribe, Unsubscribe, BookOffers
-
570 JSS(taker_pays_funded); // out: NetworkOPs
-
571 JSS(threshold); // in: Blacklist
-
572 JSS(ticket); // in: AccountObjects
-
573 JSS(ticket_count); // out: AccountInfo
-
574 JSS(ticket_seq); // in: LedgerEntry
-
575 JSS(time);
-
576 JSS(timeouts); // out: InboundLedger
-
577 JSS(track); // out: PeerImp
-
578 JSS(traffic); // out: Overlay
-
579 JSS(total); // out: counters
-
580 JSS(totalCoins); // out: LedgerToJson
-
581 JSS(total_bytes_recv); // out: Peers
-
582 JSS(total_bytes_sent); // out: Peers
-
583 JSS(total_coins); // out: LedgerToJson
-
584 JSS(transTreeHash); // out: ledger/Ledger.cpp
-
585 JSS(transaction); // in: Tx
-
586  // out: NetworkOPs, AcceptedLedgerTx,
-
587 JSS(transaction_hash); // out: RCLCxPeerPos, LedgerToJson
-
588 JSS(transactions); // out: LedgerToJson,
-
589  // in: AccountTx*, Unsubscribe
-
590 JSS(transitions); // out: NetworkOPs
-
591 JSS(treenode_cache_size); // out: GetCounts
-
592 JSS(treenode_track_size); // out: GetCounts
-
593 JSS(trusted); // out: UnlList
-
594 JSS(trusted_validator_keys); // out: ValidatorList
-
595 JSS(tx); // out: STTx, AccountTx*
-
596 JSS(tx_blob); // in/out: Submit,
-
597  // in: TransactionSign, AccountTx*
-
598 JSS(tx_hash); // in: TransactionEntry
-
599 JSS(tx_json); // in/out: TransactionSign
-
600  // out: TransactionEntry
-
601 JSS(tx_signing_hash); // out: TransactionSign
-
602 JSS(tx_unsigned); // out: TransactionSign
-
603 JSS(txn_count); // out: NetworkOPs
-
604 JSS(txr_tx_cnt); // out: protocol message tx's count
-
605 JSS(txr_tx_sz); // out: protocol message tx's size
-
606 JSS(txr_have_txs_cnt); // out: protocol message have tx count
-
607 JSS(txr_have_txs_sz); // out: protocol message have tx size
-
608 JSS(txr_get_ledger_cnt); // out: protocol message get ledger count
-
609 JSS(txr_get_ledger_sz); // out: protocol message get ledger size
-
610 JSS(txr_ledger_data_cnt); // out: protocol message ledger data count
-
611 JSS(txr_ledger_data_sz); // out: protocol message ledger data size
-
612 JSS(txr_transactions_cnt); // out: protocol message get object count
-
613 JSS(txr_transactions_sz); // out: protocol message get object size
-
614 JSS(txr_selected_cnt); // out: selected peers count
-
615 JSS(txr_suppressed_cnt); // out: suppressed peers count
-
616 JSS(txr_not_enabled_cnt); // out: peers with tx reduce-relay disabled count
-
617 JSS(txr_missing_tx_freq); // out: missing tx frequency average
-
618 JSS(txs); // out: TxHistory
-
619 JSS(type); // in: AccountObjects
-
620  // out: NetworkOPs
-
621  // OverlayImpl, Logic
-
622 JSS(type_hex); // out: STPathSet
-
623 JSS(unl); // out: UnlList
-
624 JSS(unlimited); // out: Connection.h
-
625 JSS(uptime); // out: GetCounts
-
626 JSS(uri); // out: ValidatorSites
-
627 JSS(url); // in/out: Subscribe, Unsubscribe
-
628 JSS(url_password); // in: Subscribe
-
629 JSS(url_username); // in: Subscribe
-
630 JSS(urlgravatar); //
-
631 JSS(username); // in: Subscribe
-
632 JSS(validated); // out: NetworkOPs, RPCHelpers, AccountTx*
-
633  // Tx
-
634 JSS(validator_list_expires); // out: NetworkOps, ValidatorList
-
635 JSS(validator_list); // out: NetworkOps, ValidatorList
-
636 JSS(validators);
-
637 JSS(validated_hash); // out: NetworkOPs
-
638 JSS(validated_ledger); // out: NetworkOPs
-
639 JSS(validated_ledger_index); // out: SubmitTransaction
-
640 JSS(validated_ledgers); // out: NetworkOPs
-
641 JSS(validation_key); // out: ValidationCreate, ValidationSeed
-
642 JSS(validation_private_key); // out: ValidationCreate
-
643 JSS(validation_public_key); // out: ValidationCreate, ValidationSeed
-
644 JSS(validation_quorum); // out: NetworkOPs
-
645 JSS(validation_seed); // out: ValidationCreate, ValidationSeed
-
646 JSS(validations); // out: AmendmentTableImpl
-
647 JSS(validator_sites); // out: ValidatorSites
-
648 JSS(value); // out: STAmount
-
649 JSS(version); // out: RPCVersion
-
650 JSS(vetoed); // out: AmendmentTableImpl
-
651 JSS(volume_a); // out: BookChanges
-
652 JSS(volume_b); // out: BookChanges
-
653 JSS(vote); // in: Feature
-
654 JSS(warning); // rpc:
-
655 JSS(warnings); // out: server_info, server_state
-
656 JSS(workers);
-
657 JSS(write_load); // out: GetCounts
-
658 JSS(NegativeUNL); // out: ValidatorList; ledger type
-
659 #undef JSS
+
154 JSS(base_fee_xrp); // out: NetworkOPs
+
155 JSS(bids); // out: Subscribe
+
156 JSS(binary); // in: AccountTX, LedgerEntry,
+
157  // AccountTxOld, Tx LedgerData
+
158 JSS(blob); // out: ValidatorList
+
159 JSS(blobs_v2); // out: ValidatorList
+
160  // in: UNL
+
161 JSS(books); // in: Subscribe, Unsubscribe
+
162 JSS(both); // in: Subscribe, Unsubscribe
+
163 JSS(both_sides); // in: Subscribe, Unsubscribe
+
164 JSS(broadcast); // out: SubmitTransaction
+
165 JSS(build_path); // in: TransactionSign
+
166 JSS(build_version); // out: NetworkOPs
+
167 JSS(cancel_after); // out: AccountChannels
+
168 JSS(can_delete); // out: CanDelete
+
169 JSS(changes); // out: BookChanges
+
170 JSS(channel_id); // out: AccountChannels
+
171 JSS(channels); // out: AccountChannels
+
172 JSS(check); // in: AccountObjects
+
173 JSS(check_nodes); // in: LedgerCleaner
+
174 JSS(clear); // in/out: FetchInfo
+
175 JSS(close); // out: BookChanges
+
176 JSS(close_flags); // out: LedgerToJson
+
177 JSS(close_time); // in: Application, out: NetworkOPs,
+
178  // RCLCxPeerPos, LedgerToJson
+
179 JSS(close_time_estimated); // in: Application, out: LedgerToJson
+
180 JSS(close_time_human); // out: LedgerToJson
+
181 JSS(close_time_offset); // out: NetworkOPs
+
182 JSS(close_time_resolution); // in: Application; out: LedgerToJson
+
183 JSS(closed); // out: NetworkOPs, LedgerToJson,
+
184  // handlers/Ledger
+
185 JSS(closed_ledger); // out: NetworkOPs
+
186 JSS(cluster); // out: PeerImp
+
187 JSS(code); // out: errors
+
188 JSS(command); // in: RPCHandler
+
189 JSS(complete); // out: NetworkOPs, InboundLedger
+
190 JSS(complete_ledgers); // out: NetworkOPs, PeerImp
+
191 JSS(complete_shards); // out: OverlayImpl, PeerImp
+
192 JSS(consensus); // out: NetworkOPs, LedgerConsensus
+
193 JSS(converge_time); // out: NetworkOPs
+
194 JSS(converge_time_s); // out: NetworkOPs
+
195 JSS(cookie); // out: NetworkOPs
+
196 JSS(count); // in: AccountTx*, ValidatorList
+
197 JSS(counters); // in/out: retrieve counters
+
198 JSS(currency_a); // out: BookChanges
+
199 JSS(currency_b); // out: BookChanges
+
200 JSS(currentShard); // out: NodeToShardStatus
+
201 JSS(currentShardIndex); // out: NodeToShardStatus
+
202 JSS(currency); // in: paths/PathRequest, STAmount
+
203  // out: STPathSet, STAmount,
+
204  // AccountLines
+
205 JSS(current); // out: OwnerInfo
+
206 JSS(current_activities);
+
207 JSS(current_ledger_size); // out: TxQ
+
208 JSS(current_queue_size); // out: TxQ
+
209 JSS(data); // out: LedgerData
+
210 JSS(date); // out: tx/Transaction, NetworkOPs
+
211 JSS(dbKBLedger); // out: getCounts
+
212 JSS(dbKBTotal); // out: getCounts
+
213 JSS(dbKBTransaction); // out: getCounts
+
214 JSS(debug_signing); // in: TransactionSign
+
215 JSS(deletion_blockers_only); // in: AccountObjects
+
216 JSS(delivered_amount); // out: insertDeliveredAmount
+
217 JSS(deposit_authorized); // out: deposit_authorized
+
218 JSS(deposit_preauth); // in: AccountObjects, LedgerData
+
219 JSS(deprecated); // out
+
220 JSS(descending); // in: AccountTx*
+
221 JSS(description); // in/out: Reservations
+
222 JSS(destination); // in: nft_buy_offers, nft_sell_offers
+
223 JSS(destination_account); // in: PathRequest, RipplePathFind, account_lines
+
224  // out: AccountChannels
+
225 JSS(destination_amount); // in: PathRequest, RipplePathFind
+
226 JSS(destination_currencies); // in: PathRequest, RipplePathFind
+
227 JSS(destination_tag); // in: PathRequest
+
228  // out: AccountChannels
+
229 JSS(details); // out: Manifest, server_info
+
230 JSS(dir_entry); // out: DirectoryEntryIterator
+
231 JSS(dir_index); // out: DirectoryEntryIterator
+
232 JSS(dir_root); // out: DirectoryEntryIterator
+
233 JSS(directory); // in: LedgerEntry
+
234 JSS(domain); // out: ValidatorInfo, Manifest
+
235 JSS(drops); // out: TxQ
+
236 JSS(duration_us); // out: NetworkOPs
+
237 JSS(effective); // out: ValidatorList
+
238  // in: UNL
+
239 JSS(enabled); // out: AmendmentTable
+
240 JSS(engine_result); // out: NetworkOPs, TransactionSign, Submit
+
241 JSS(engine_result_code); // out: NetworkOPs, TransactionSign, Submit
+
242 JSS(engine_result_message); // out: NetworkOPs, TransactionSign, Submit
+
243 JSS(ephemeral_key); // out: ValidatorInfo
+
244  // in/out: Manifest
+
245 JSS(error); // out: error
+
246 JSS(errored);
+
247 JSS(error_code); // out: error
+
248 JSS(error_exception); // out: Submit
+
249 JSS(error_message); // out: error
+
250 JSS(escrow); // in: LedgerEntry
+
251 JSS(expand); // in: handler/Ledger
+
252 JSS(expected_date); // out: any (warnings)
+
253 JSS(expected_date_UTC); // out: any (warnings)
+
254 JSS(expected_ledger_size); // out: TxQ
+
255 JSS(expiration); // out: AccountOffers, AccountChannels,
+
256  // ValidatorList
+
257 JSS(fail_hard); // in: Sign, Submit
+
258 JSS(failed); // out: InboundLedger
+
259 JSS(feature); // in: Feature
+
260 JSS(features); // out: Feature
+
261 JSS(fee); // out: NetworkOPs, Peers
+
262 JSS(fee_base); // out: NetworkOPs
+
263 JSS(fee_div_max); // in: TransactionSign
+
264 JSS(fee_level); // out: AccountInfo
+
265 JSS(fee_mult_max); // in: TransactionSign
+
266 JSS(fee_ref); // out: NetworkOPs
+
267 JSS(fetch_pack); // out: NetworkOPs
+
268 JSS(first); // out: rpc/Version
+
269 JSS(firstSequence); // out: NodeToShardStatus
+
270 JSS(firstShardIndex); // out: NodeToShardStatus
+
271 JSS(finished);
+
272 JSS(fix_txns); // in: LedgerCleaner
+
273 JSS(flags); // out: AccountOffers,
+
274  // NetworkOPs
+
275 JSS(forward); // in: AccountTx
+
276 JSS(freeze); // out: AccountLines
+
277 JSS(freeze_peer); // out: AccountLines
+
278 JSS(frozen_balances); // out: GatewayBalances
+
279 JSS(full); // in: LedgerClearer, handlers/Ledger
+
280 JSS(full_reply); // out: PathFind
+
281 JSS(fullbelow_size); // out: GetCounts
+
282 JSS(good); // out: RPCVersion
+
283 JSS(hash); // out: NetworkOPs, InboundLedger,
+
284  // LedgerToJson, STTx; field
+
285 JSS(hashes); // in: AccountObjects
+
286 JSS(have_header); // out: InboundLedger
+
287 JSS(have_state); // out: InboundLedger
+
288 JSS(have_transactions); // out: InboundLedger
+
289 JSS(high); // out: BookChanges
+
290 JSS(highest_sequence); // out: AccountInfo
+
291 JSS(highest_ticket); // out: AccountInfo
+
292 JSS(historical_perminute); // historical_perminute.
+
293 JSS(hostid); // out: NetworkOPs
+
294 JSS(hotwallet); // in: GatewayBalances
+
295 JSS(id); // websocket.
+
296 JSS(ident); // in: AccountCurrencies, AccountInfo,
+
297  // OwnerInfo
+
298 JSS(ignore_default); // in: AccountLines
+
299 JSS(inLedger); // out: tx/Transaction
+
300 JSS(inbound); // out: PeerImp
+
301 JSS(index); // in: LedgerEntry, DownloadShard
+
302  // out: STLedgerEntry,
+
303  // LedgerEntry, TxHistory, LedgerData
+
304 JSS(info); // out: ServerInfo, ConsensusInfo, FetchInfo
+
305 JSS(initial_sync_duration_us);
+
306 JSS(internal_command); // in: Internal
+
307 JSS(invalid_API_version); // out: Many, when a request has an invalid
+
308  // version
+
309 JSS(io_latency_ms); // out: NetworkOPs
+
310 JSS(ip); // in: Connect, out: OverlayImpl
+
311 JSS(issuer); // in: RipplePathFind, Subscribe,
+
312  // Unsubscribe, BookOffers
+
313  // out: STPathSet, STAmount
+
314 JSS(job);
+
315 JSS(job_queue);
+
316 JSS(jobs);
+
317 JSS(jsonrpc); // json version
+
318 JSS(jq_trans_overflow); // JobQueue transaction limit overflow.
+
319 JSS(kept); // out: SubmitTransaction
+
320 JSS(key); // out
+
321 JSS(key_type); // in/out: WalletPropose, TransactionSign
+
322 JSS(latency); // out: PeerImp
+
323 JSS(last); // out: RPCVersion
+
324 JSS(lastSequence); // out: NodeToShardStatus
+
325 JSS(lastShardIndex); // out: NodeToShardStatus
+
326 JSS(last_close); // out: NetworkOPs
+
327 JSS(last_refresh_time); // out: ValidatorSite
+
328 JSS(last_refresh_status); // out: ValidatorSite
+
329 JSS(last_refresh_message); // out: ValidatorSite
+
330 JSS(ledger); // in: NetworkOPs, LedgerCleaner,
+
331  // RPCHelpers
+
332  // out: NetworkOPs, PeerImp
+
333 JSS(ledger_current_index); // out: NetworkOPs, RPCHelpers,
+
334  // LedgerCurrent, LedgerAccept,
+
335  // AccountLines
+
336 JSS(ledger_data); // out: LedgerHeader
+
337 JSS(ledger_hash); // in: RPCHelpers, LedgerRequest,
+
338  // RipplePathFind, TransactionEntry,
+
339  // handlers/Ledger
+
340  // out: NetworkOPs, RPCHelpers,
+
341  // LedgerClosed, LedgerData,
+
342  // AccountLines
+
343 JSS(ledger_hit_rate); // out: GetCounts
+
344 JSS(ledger_index); // in/out: many
+
345 JSS(ledger_index_max); // in, out: AccountTx*
+
346 JSS(ledger_index_min); // in, out: AccountTx*
+
347 JSS(ledger_max); // in, out: AccountTx*
+
348 JSS(ledger_min); // in, out: AccountTx*
+
349 JSS(ledger_time); // out: NetworkOPs
+
350 JSS(levels); // LogLevels
+
351 JSS(limit); // in/out: AccountTx*, AccountOffers,
+
352  // AccountLines, AccountObjects
+
353  // in: LedgerData, BookOffers
+
354 JSS(limit_peer); // out: AccountLines
+
355 JSS(lines); // out: AccountLines
+
356 JSS(list); // out: ValidatorList
+
357 JSS(load); // out: NetworkOPs, PeerImp
+
358 JSS(load_base); // out: NetworkOPs
+
359 JSS(load_factor); // out: NetworkOPs
+
360 JSS(load_factor_cluster); // out: NetworkOPs
+
361 JSS(load_factor_fee_escalation); // out: NetworkOPs
+
362 JSS(load_factor_fee_queue); // out: NetworkOPs
+
363 JSS(load_factor_fee_reference); // out: NetworkOPs
+
364 JSS(load_factor_local); // out: NetworkOPs
+
365 JSS(load_factor_net); // out: NetworkOPs
+
366 JSS(load_factor_server); // out: NetworkOPs
+
367 JSS(load_fee); // out: LoadFeeTrackImp, NetworkOPs
+
368 JSS(local); // out: resource/Logic.h
+
369 JSS(local_txs); // out: GetCounts
+
370 JSS(local_static_keys); // out: ValidatorList
+
371 JSS(low); // out: BookChanges
+
372 JSS(lowest_sequence); // out: AccountInfo
+
373 JSS(lowest_ticket); // out: AccountInfo
+
374 JSS(majority); // out: RPC feature
+
375 JSS(manifest); // out: ValidatorInfo, Manifest
+
376 JSS(marker); // in/out: AccountTx, AccountOffers,
+
377  // AccountLines, AccountObjects,
+
378  // LedgerData
+
379  // in: BookOffers
+
380 JSS(master_key); // out: WalletPropose, NetworkOPs,
+
381  // ValidatorInfo
+
382  // in/out: Manifest
+
383 JSS(master_seed); // out: WalletPropose
+
384 JSS(master_seed_hex); // out: WalletPropose
+
385 JSS(master_signature); // out: pubManifest
+
386 JSS(max_ledger); // in/out: LedgerCleaner
+
387 JSS(max_queue_size); // out: TxQ
+
388 JSS(max_spend_drops); // out: AccountInfo
+
389 JSS(max_spend_drops_total); // out: AccountInfo
+
390 JSS(median_fee); // out: TxQ
+
391 JSS(median_level); // out: TxQ
+
392 JSS(message); // error.
+
393 JSS(meta); // out: NetworkOPs, AccountTx*, Tx
+
394 JSS(metaData);
+
395 JSS(metadata); // out: TransactionEntry
+
396 JSS(method); // RPC
+
397 JSS(methods);
+
398 JSS(metrics); // out: Peers
+
399 JSS(min_count); // in: GetCounts
+
400 JSS(min_ledger); // in: LedgerCleaner
+
401 JSS(minimum_fee); // out: TxQ
+
402 JSS(minimum_level); // out: TxQ
+
403 JSS(missingCommand); // error
+
404 JSS(name); // out: AmendmentTableImpl, PeerImp
+
405 JSS(needed_state_hashes); // out: InboundLedger
+
406 JSS(needed_transaction_hashes); // out: InboundLedger
+
407 JSS(network_id); // out: NetworkOPs
+
408 JSS(network_ledger); // out: NetworkOPs
+
409 JSS(next_refresh_time); // out: ValidatorSite
+
410 JSS(nft_id); // in: nft_sell_offers, nft_buy_offers
+
411 JSS(nft_offer); // in: LedgerEntry
+
412 JSS(nft_offer_index); // out nft_buy_offers, nft_sell_offers
+
413 JSS(nft_page); // in: LedgerEntry
+
414 JSS(nft_serial); // out: account_nfts
+
415 JSS(no_ripple); // out: AccountLines
+
416 JSS(no_ripple_peer); // out: AccountLines
+
417 JSS(node); // out: LedgerEntry
+
418 JSS(node_binary); // out: LedgerEntry
+
419 JSS(node_read_bytes); // out: GetCounts
+
420 JSS(node_read_errors); // out: GetCounts
+
421 JSS(node_read_retries); // out: GetCounts
+
422 JSS(node_reads_hit); // out: GetCounts
+
423 JSS(node_reads_total); // out: GetCounts
+
424 JSS(node_reads_duration_us); // out: GetCounts
+
425 JSS(node_size); // out: server_info
+
426 JSS(nodestore); // out: GetCounts
+
427 JSS(node_writes); // out: GetCounts
+
428 JSS(node_written_bytes); // out: GetCounts
+
429 JSS(node_writes_duration_us); // out: GetCounts
+
430 JSS(node_write_retries); // out: GetCounts
+
431 JSS(node_writes_delayed); // out::GetCounts
+
432 JSS(obligations); // out: GatewayBalances
+
433 JSS(offer); // in: LedgerEntry
+
434 JSS(offers); // out: NetworkOPs, AccountOffers, Subscribe
+
435 JSS(offline); // in: TransactionSign
+
436 JSS(offset); // in/out: AccountTxOld
+
437 JSS(open); // out: handlers/Ledger
+
438 JSS(open_ledger_cost); // out: SubmitTransaction
+
439 JSS(open_ledger_fee); // out: TxQ
+
440 JSS(open_ledger_level); // out: TxQ
+
441 JSS(owner); // in: LedgerEntry, out: NetworkOPs
+
442 JSS(owner_funds); // in/out: Ledger, NetworkOPs, AcceptedLedgerTx
+
443 JSS(page_index);
+
444 JSS(params); // RPC
+
445 JSS(parent_close_time); // out: LedgerToJson
+
446 JSS(parent_hash); // out: LedgerToJson
+
447 JSS(partition); // in: LogLevel
+
448 JSS(passphrase); // in: WalletPropose
+
449 JSS(password); // in: Subscribe
+
450 JSS(paths); // in: RipplePathFind
+
451 JSS(paths_canonical); // out: RipplePathFind
+
452 JSS(paths_computed); // out: PathRequest, RipplePathFind
+
453 JSS(payment_channel); // in: LedgerEntry
+
454 JSS(peer); // in: AccountLines
+
455 JSS(peer_authorized); // out: AccountLines
+
456 JSS(peer_id); // out: RCLCxPeerPos
+
457 JSS(peers); // out: InboundLedger, handlers/Peers, Overlay
+
458 JSS(peer_disconnects); // Severed peer connection counter.
+
459 JSS(peer_disconnects_resources); // Severed peer connections because of
+
460  // excess resource consumption.
+
461 JSS(port); // in: Connect
+
462 JSS(previous); // out: Reservations
+
463 JSS(previous_ledger); // out: LedgerPropose
+
464 JSS(proof); // in: BookOffers
+
465 JSS(propose_seq); // out: LedgerPropose
+
466 JSS(proposers); // out: NetworkOPs, LedgerConsensus
+
467 JSS(protocol); // out: PeerImp
+
468 JSS(proxied); // out: RPC ping
+
469 JSS(pubkey_node); // out: NetworkOPs
+
470 JSS(pubkey_publisher); // out: ValidatorList
+
471 JSS(pubkey_validator); // out: NetworkOPs, ValidatorList
+
472 JSS(public_key); // out: OverlayImpl, PeerImp, WalletPropose,
+
473  // ValidatorInfo
+
474  // in/out: Manifest
+
475 JSS(public_key_hex); // out: WalletPropose
+
476 JSS(published_ledger); // out: NetworkOPs
+
477 JSS(publisher_lists); // out: ValidatorList
+
478 JSS(quality); // out: NetworkOPs
+
479 JSS(quality_in); // out: AccountLines
+
480 JSS(quality_out); // out: AccountLines
+
481 JSS(queue); // in: AccountInfo
+
482 JSS(queue_data); // out: AccountInfo
+
483 JSS(queued); // out: SubmitTransaction
+
484 JSS(queued_duration_us);
+
485 JSS(random); // out: Random
+
486 JSS(raw_meta); // out: AcceptedLedgerTx
+
487 JSS(receive_currencies); // out: AccountCurrencies
+
488 JSS(reference_level); // out: TxQ
+
489 JSS(refresh_interval); // in: UNL
+
490 JSS(refresh_interval_min); // out: ValidatorSites
+
491 JSS(regular_seed); // in/out: LedgerEntry
+
492 JSS(remaining); // out: ValidatorList
+
493 JSS(remote); // out: Logic.h
+
494 JSS(request); // RPC
+
495 JSS(requested); // out: Manifest
+
496 JSS(reservations); // out: Reservations
+
497 JSS(reserve_base); // out: NetworkOPs
+
498 JSS(reserve_base_xrp); // out: NetworkOPs
+
499 JSS(reserve_inc); // out: NetworkOPs
+
500 JSS(reserve_inc_xrp); // out: NetworkOPs
+
501 JSS(response); // websocket
+
502 JSS(result); // RPC
+
503 JSS(ripple_lines); // out: NetworkOPs
+
504 JSS(ripple_state); // in: LedgerEntr
+
505 JSS(ripplerpc); // ripple RPC version
+
506 JSS(role); // out: Ping.cpp
+
507 JSS(rpc);
+
508 JSS(rt_accounts); // in: Subscribe, Unsubscribe
+
509 JSS(running_duration_us);
+
510 JSS(search_depth); // in: RipplePathFind
+
511 JSS(searched_all); // out: Tx
+
512 JSS(secret); // in: TransactionSign,
+
513  // ValidationCreate, ValidationSeed,
+
514  // channel_authorize
+
515 JSS(seed); //
+
516 JSS(seed_hex); // in: WalletPropose, TransactionSign
+
517 JSS(send_currencies); // out: AccountCurrencies
+
518 JSS(send_max); // in: PathRequest, RipplePathFind
+
519 JSS(seq); // in: LedgerEntry;
+
520  // out: NetworkOPs, RPCSub, AccountOffers,
+
521  // ValidatorList, ValidatorInfo, Manifest
+
522 JSS(seqNum); // out: LedgerToJson
+
523 JSS(sequence); // in: UNL
+
524 JSS(sequence_count); // out: AccountInfo
+
525 JSS(server_domain); // out: NetworkOPs
+
526 JSS(server_state); // out: NetworkOPs
+
527 JSS(server_state_duration_us); // out: NetworkOPs
+
528 JSS(server_status); // out: NetworkOPs
+
529 JSS(server_version); // out: NetworkOPs
+
530 JSS(settle_delay); // out: AccountChannels
+
531 JSS(severity); // in: LogLevel
+
532 JSS(shards); // in/out: GetCounts, DownloadShard
+
533 JSS(signature); // out: NetworkOPs, ChannelAuthorize
+
534 JSS(signature_verified); // out: ChannelVerify
+
535 JSS(signing_key); // out: NetworkOPs
+
536 JSS(signing_keys); // out: ValidatorList
+
537 JSS(signing_time); // out: NetworkOPs
+
538 JSS(signer_list); // in: AccountObjects
+
539 JSS(signer_lists); // in/out: AccountInfo
+
540 JSS(snapshot); // in: Subscribe
+
541 JSS(source_account); // in: PathRequest, RipplePathFind
+
542 JSS(source_amount); // in: PathRequest, RipplePathFind
+
543 JSS(source_currencies); // in: PathRequest, RipplePathFind
+
544 JSS(source_tag); // out: AccountChannels
+
545 JSS(stand_alone); // out: NetworkOPs
+
546 JSS(start); // in: TxHistory
+
547 JSS(started);
+
548 JSS(state); // out: Logic.h, ServerState, LedgerData
+
549 JSS(state_accounting); // out: NetworkOPs
+
550 JSS(state_now); // in: Subscribe
+
551 JSS(status); // error
+
552 JSS(stop); // in: LedgerCleaner
+
553 JSS(stop_history_tx_only); // in: Unsubscribe, stop history tx stream
+
554 JSS(storedSeqs); // out: NodeToShardStatus
+
555 JSS(streams); // in: Subscribe, Unsubscribe
+
556 JSS(strict); // in: AccountCurrencies, AccountInfo
+
557 JSS(sub_index); // in: LedgerEntry
+
558 JSS(subcommand); // in: PathFind
+
559 JSS(success); // rpc
+
560 JSS(supported); // out: AmendmentTableImpl
+
561 JSS(system_time_offset); // out: NetworkOPs
+
562 JSS(tag); // out: Peers
+
563 JSS(taker); // in: Subscribe, BookOffers
+
564 JSS(taker_gets); // in: Subscribe, Unsubscribe, BookOffers
+
565 JSS(taker_gets_funded); // out: NetworkOPs
+
566 JSS(taker_pays); // in: Subscribe, Unsubscribe, BookOffers
+
567 JSS(taker_pays_funded); // out: NetworkOPs
+
568 JSS(threshold); // in: Blacklist
+
569 JSS(ticket); // in: AccountObjects
+
570 JSS(ticket_count); // out: AccountInfo
+
571 JSS(ticket_seq); // in: LedgerEntry
+
572 JSS(time);
+
573 JSS(timeouts); // out: InboundLedger
+
574 JSS(track); // out: PeerImp
+
575 JSS(traffic); // out: Overlay
+
576 JSS(total); // out: counters
+
577 JSS(totalCoins); // out: LedgerToJson
+
578 JSS(total_bytes_recv); // out: Peers
+
579 JSS(total_bytes_sent); // out: Peers
+
580 JSS(total_coins); // out: LedgerToJson
+
581 JSS(transTreeHash); // out: ledger/Ledger.cpp
+
582 JSS(transaction); // in: Tx
+
583  // out: NetworkOPs, AcceptedLedgerTx,
+
584 JSS(transaction_hash); // out: RCLCxPeerPos, LedgerToJson
+
585 JSS(transactions); // out: LedgerToJson,
+
586  // in: AccountTx*, Unsubscribe
+
587 JSS(transitions); // out: NetworkOPs
+
588 JSS(treenode_cache_size); // out: GetCounts
+
589 JSS(treenode_track_size); // out: GetCounts
+
590 JSS(trusted); // out: UnlList
+
591 JSS(trusted_validator_keys); // out: ValidatorList
+
592 JSS(tx); // out: STTx, AccountTx*
+
593 JSS(tx_blob); // in/out: Submit,
+
594  // in: TransactionSign, AccountTx*
+
595 JSS(tx_hash); // in: TransactionEntry
+
596 JSS(tx_json); // in/out: TransactionSign
+
597  // out: TransactionEntry
+
598 JSS(tx_signing_hash); // out: TransactionSign
+
599 JSS(tx_unsigned); // out: TransactionSign
+
600 JSS(txn_count); // out: NetworkOPs
+
601 JSS(txr_tx_cnt); // out: protocol message tx's count
+
602 JSS(txr_tx_sz); // out: protocol message tx's size
+
603 JSS(txr_have_txs_cnt); // out: protocol message have tx count
+
604 JSS(txr_have_txs_sz); // out: protocol message have tx size
+
605 JSS(txr_get_ledger_cnt); // out: protocol message get ledger count
+
606 JSS(txr_get_ledger_sz); // out: protocol message get ledger size
+
607 JSS(txr_ledger_data_cnt); // out: protocol message ledger data count
+
608 JSS(txr_ledger_data_sz); // out: protocol message ledger data size
+
609 JSS(txr_transactions_cnt); // out: protocol message get object count
+
610 JSS(txr_transactions_sz); // out: protocol message get object size
+
611 JSS(txr_selected_cnt); // out: selected peers count
+
612 JSS(txr_suppressed_cnt); // out: suppressed peers count
+
613 JSS(txr_not_enabled_cnt); // out: peers with tx reduce-relay disabled count
+
614 JSS(txr_missing_tx_freq); // out: missing tx frequency average
+
615 JSS(txs); // out: TxHistory
+
616 JSS(type); // in: AccountObjects
+
617  // out: NetworkOPs
+
618  // OverlayImpl, Logic
+
619 JSS(type_hex); // out: STPathSet
+
620 JSS(unl); // out: UnlList
+
621 JSS(unlimited); // out: Connection.h
+
622 JSS(uptime); // out: GetCounts
+
623 JSS(uri); // out: ValidatorSites
+
624 JSS(url); // in/out: Subscribe, Unsubscribe
+
625 JSS(url_password); // in: Subscribe
+
626 JSS(url_username); // in: Subscribe
+
627 JSS(urlgravatar); //
+
628 JSS(username); // in: Subscribe
+
629 JSS(validated); // out: NetworkOPs, RPCHelpers, AccountTx*
+
630  // Tx
+
631 JSS(validator_list_expires); // out: NetworkOps, ValidatorList
+
632 JSS(validator_list); // out: NetworkOps, ValidatorList
+
633 JSS(validators);
+
634 JSS(validated_hash); // out: NetworkOPs
+
635 JSS(validated_ledger); // out: NetworkOPs
+
636 JSS(validated_ledger_index); // out: SubmitTransaction
+
637 JSS(validated_ledgers); // out: NetworkOPs
+
638 JSS(validation_key); // out: ValidationCreate, ValidationSeed
+
639 JSS(validation_private_key); // out: ValidationCreate
+
640 JSS(validation_public_key); // out: ValidationCreate, ValidationSeed
+
641 JSS(validation_quorum); // out: NetworkOPs
+
642 JSS(validation_seed); // out: ValidationCreate, ValidationSeed
+
643 JSS(validations); // out: AmendmentTableImpl
+
644 JSS(validator_sites); // out: ValidatorSites
+
645 JSS(value); // out: STAmount
+
646 JSS(version); // out: RPCVersion
+
647 JSS(vetoed); // out: AmendmentTableImpl
+
648 JSS(volume_a); // out: BookChanges
+
649 JSS(volume_b); // out: BookChanges
+
650 JSS(vote); // in: Feature
+
651 JSS(warning); // rpc:
+
652 JSS(warnings); // out: server_info, server_state
+
653 JSS(workers);
+
654 JSS(write_load); // out: GetCounts
+
655 JSS(NegativeUNL); // out: ValidatorList; ledger type
+
656 #undef JSS
+
657 
+
658 } // namespace jss
+
659 } // namespace ripple
660 
-
661 } // namespace jss
-
662 } // namespace ripple
-
663 
-
664 #endif
+
661 #endif
Definition: NFTokenMint.h:28
@ complete
diff --git a/namespaceripple.html b/namespaceripple.html index 02755f7ef9..3158ca99be 100644 --- a/namespaceripple.html +++ b/namespaceripple.html @@ -12048,7 +12048,7 @@ template<class T , class = std::enable_if_t< std::is_same<T, ch
-

Definition at line 2782 of file NetworkOPs.cpp.

+

Definition at line 2781 of file NetworkOPs.cpp.

@@ -12132,7 +12132,7 @@ template<class T , class = std::enable_if_t< std::is_same<T, ch
-

Definition at line 4579 of file NetworkOPs.cpp.

+

Definition at line 4578 of file NetworkOPs.cpp.

diff --git a/namespaceripple_1_1jss.html b/namespaceripple_1_1jss.html index 2f19fa387a..0764d976d4 100644 --- a/namespaceripple_1_1jss.html +++ b/namespaceripple_1_1jss.html @@ -292,8 +292,6 @@ Functions    JSS (base_fee)   - JSS (base_fee_drops) -   JSS (base_fee_xrp)    JSS (bids) @@ -906,14 +904,10 @@ Functions    JSS (reserve_base)   - JSS (reserve_base_drops) -   JSS (reserve_base_xrp)    JSS (reserve_inc)   - JSS (reserve_inc_drops) -   JSS (reserve_inc_xrp)    JSS (response) @@ -1207,7 +1201,7 @@ Functions

Function Documentation

-

◆ JSS() [1/565]

+

◆ JSS() [1/562]

@@ -1225,7 +1219,7 @@ Functions
-

◆ JSS() [2/565]

+

◆ JSS() [2/562]

@@ -1243,7 +1237,7 @@ Functions
-

◆ JSS() [3/565]

+

◆ JSS() [3/562]

@@ -1261,7 +1255,7 @@ Functions
-

◆ JSS() [4/565]

+

◆ JSS() [4/562]

@@ -1279,7 +1273,7 @@ Functions
-

◆ JSS() [5/565]

+

◆ JSS() [5/562]

@@ -1297,7 +1291,7 @@ Functions
-

◆ JSS() [6/565]

+

◆ JSS() [6/562]

@@ -1315,7 +1309,7 @@ Functions
-

◆ JSS() [7/565]

+

◆ JSS() [7/562]

@@ -1333,7 +1327,7 @@ Functions
-

◆ JSS() [8/565]

+

◆ JSS() [8/562]

@@ -1351,7 +1345,7 @@ Functions
-

◆ JSS() [9/565]

+

◆ JSS() [9/562]

@@ -1369,7 +1363,7 @@ Functions
-

◆ JSS() [10/565]

+

◆ JSS() [10/562]

@@ -1387,7 +1381,7 @@ Functions
-

◆ JSS() [11/565]

+

◆ JSS() [11/562]

@@ -1405,7 +1399,7 @@ Functions
-

◆ JSS() [12/565]

+

◆ JSS() [12/562]

@@ -1423,7 +1417,7 @@ Functions
-

◆ JSS() [13/565]

+

◆ JSS() [13/562]

@@ -1441,7 +1435,7 @@ Functions
-

◆ JSS() [14/565]

+

◆ JSS() [14/562]

@@ -1459,7 +1453,7 @@ Functions
-

◆ JSS() [15/565]

+

◆ JSS() [15/562]

@@ -1477,7 +1471,7 @@ Functions
-

◆ JSS() [16/565]

+

◆ JSS() [16/562]

@@ -1495,7 +1489,7 @@ Functions
-

◆ JSS() [17/565]

+

◆ JSS() [17/562]

@@ -1513,7 +1507,7 @@ Functions
-

◆ JSS() [18/565]

+

◆ JSS() [18/562]

@@ -1531,7 +1525,7 @@ Functions
-

◆ JSS() [19/565]

+

◆ JSS() [19/562]

@@ -1549,7 +1543,7 @@ Functions
-

◆ JSS() [20/565]

+

◆ JSS() [20/562]

@@ -1567,7 +1561,7 @@ Functions
-

◆ JSS() [21/565]

+

◆ JSS() [21/562]

@@ -1585,7 +1579,7 @@ Functions
-

◆ JSS() [22/565]

+

◆ JSS() [22/562]

@@ -1603,7 +1597,7 @@ Functions
-

◆ JSS() [23/565]

+

◆ JSS() [23/562]

@@ -1621,7 +1615,7 @@ Functions
-

◆ JSS() [24/565]

+

◆ JSS() [24/562]

@@ -1639,7 +1633,7 @@ Functions
-

◆ JSS() [25/565]

+

◆ JSS() [25/562]

@@ -1657,7 +1651,7 @@ Functions
-

◆ JSS() [26/565]

+

◆ JSS() [26/562]

@@ -1675,7 +1669,7 @@ Functions
-

◆ JSS() [27/565]

+

◆ JSS() [27/562]

@@ -1693,7 +1687,7 @@ Functions
-

◆ JSS() [28/565]

+

◆ JSS() [28/562]

@@ -1711,7 +1705,7 @@ Functions
-

◆ JSS() [29/565]

+

◆ JSS() [29/562]

@@ -1729,7 +1723,7 @@ Functions
-

◆ JSS() [30/565]

+

◆ JSS() [30/562]

@@ -1747,7 +1741,7 @@ Functions
-

◆ JSS() [31/565]

+

◆ JSS() [31/562]

@@ -1765,7 +1759,7 @@ Functions
-

◆ JSS() [32/565]

+

◆ JSS() [32/562]

@@ -1783,7 +1777,7 @@ Functions
-

◆ JSS() [33/565]

+

◆ JSS() [33/562]

@@ -1801,7 +1795,7 @@ Functions
-

◆ JSS() [34/565]

+

◆ JSS() [34/562]

@@ -1819,7 +1813,7 @@ Functions
-

◆ JSS() [35/565]

+

◆ JSS() [35/562]

@@ -1837,7 +1831,7 @@ Functions
-

◆ JSS() [36/565]

+

◆ JSS() [36/562]

@@ -1855,7 +1849,7 @@ Functions
-

◆ JSS() [37/565]

+

◆ JSS() [37/562]

@@ -1873,7 +1867,7 @@ Functions
-

◆ JSS() [38/565]

+

◆ JSS() [38/562]

@@ -1891,7 +1885,7 @@ Functions
-

◆ JSS() [39/565]

+

◆ JSS() [39/562]

@@ -1909,7 +1903,7 @@ Functions
-

◆ JSS() [40/565]

+

◆ JSS() [40/562]

@@ -1927,7 +1921,7 @@ Functions
-

◆ JSS() [41/565]

+

◆ JSS() [41/562]

@@ -1945,7 +1939,7 @@ Functions
-

◆ JSS() [42/565]

+

◆ JSS() [42/562]

@@ -1963,7 +1957,7 @@ Functions
-

◆ JSS() [43/565]

+

◆ JSS() [43/562]

@@ -1981,7 +1975,7 @@ Functions
-

◆ JSS() [44/565]

+

◆ JSS() [44/562]

@@ -1999,7 +1993,7 @@ Functions
-

◆ JSS() [45/565]

+

◆ JSS() [45/562]

@@ -2017,7 +2011,7 @@ Functions
-

◆ JSS() [46/565]

+

◆ JSS() [46/562]

@@ -2035,7 +2029,7 @@ Functions
-

◆ JSS() [47/565]

+

◆ JSS() [47/562]

@@ -2053,7 +2047,7 @@ Functions
-

◆ JSS() [48/565]

+

◆ JSS() [48/562]

@@ -2071,7 +2065,7 @@ Functions
-

◆ JSS() [49/565]

+

◆ JSS() [49/562]

@@ -2089,7 +2083,7 @@ Functions
-

◆ JSS() [50/565]

+

◆ JSS() [50/562]

@@ -2107,7 +2101,7 @@ Functions
-

◆ JSS() [51/565]

+

◆ JSS() [51/562]

@@ -2125,7 +2119,7 @@ Functions
-

◆ JSS() [52/565]

+

◆ JSS() [52/562]

@@ -2143,7 +2137,7 @@ Functions
-

◆ JSS() [53/565]

+

◆ JSS() [53/562]

@@ -2161,7 +2155,7 @@ Functions
-

◆ JSS() [54/565]

+

◆ JSS() [54/562]

@@ -2179,7 +2173,7 @@ Functions
-

◆ JSS() [55/565]

+

◆ JSS() [55/562]

@@ -2197,7 +2191,7 @@ Functions
-

◆ JSS() [56/565]

+

◆ JSS() [56/562]

@@ -2215,7 +2209,7 @@ Functions
-

◆ JSS() [57/565]

+

◆ JSS() [57/562]

@@ -2233,7 +2227,7 @@ Functions
-

◆ JSS() [58/565]

+

◆ JSS() [58/562]

@@ -2251,7 +2245,7 @@ Functions
-

◆ JSS() [59/565]

+

◆ JSS() [59/562]

@@ -2269,7 +2263,7 @@ Functions
-

◆ JSS() [60/565]

+

◆ JSS() [60/562]

@@ -2287,7 +2281,7 @@ Functions
-

◆ JSS() [61/565]

+

◆ JSS() [61/562]

@@ -2305,7 +2299,7 @@ Functions
-

◆ JSS() [62/565]

+

◆ JSS() [62/562]

@@ -2323,7 +2317,7 @@ Functions
-

◆ JSS() [63/565]

+

◆ JSS() [63/562]

@@ -2341,7 +2335,7 @@ Functions
-

◆ JSS() [64/565]

+

◆ JSS() [64/562]

@@ -2359,7 +2353,7 @@ Functions
-

◆ JSS() [65/565]

+

◆ JSS() [65/562]

@@ -2377,7 +2371,7 @@ Functions
-

◆ JSS() [66/565]

+

◆ JSS() [66/562]

@@ -2395,7 +2389,7 @@ Functions
-

◆ JSS() [67/565]

+

◆ JSS() [67/562]

@@ -2413,7 +2407,7 @@ Functions
-

◆ JSS() [68/565]

+

◆ JSS() [68/562]

@@ -2431,7 +2425,7 @@ Functions
-

◆ JSS() [69/565]

+

◆ JSS() [69/562]

@@ -2449,7 +2443,7 @@ Functions
-

◆ JSS() [70/565]

+

◆ JSS() [70/562]

@@ -2467,7 +2461,7 @@ Functions
-

◆ JSS() [71/565]

+

◆ JSS() [71/562]

@@ -2485,7 +2479,7 @@ Functions
-

◆ JSS() [72/565]

+

◆ JSS() [72/562]

@@ -2503,7 +2497,7 @@ Functions
-

◆ JSS() [73/565]

+

◆ JSS() [73/562]

@@ -2521,7 +2515,7 @@ Functions
-

◆ JSS() [74/565]

+

◆ JSS() [74/562]

@@ -2539,7 +2533,7 @@ Functions
-

◆ JSS() [75/565]

+

◆ JSS() [75/562]

@@ -2557,7 +2551,7 @@ Functions
-

◆ JSS() [76/565]

+

◆ JSS() [76/562]

@@ -2575,7 +2569,7 @@ Functions
-

◆ JSS() [77/565]

+

◆ JSS() [77/562]

@@ -2593,7 +2587,7 @@ Functions
-

◆ JSS() [78/565]

+

◆ JSS() [78/562]

@@ -2611,7 +2605,7 @@ Functions
-

◆ JSS() [79/565]

+

◆ JSS() [79/562]

@@ -2629,7 +2623,7 @@ Functions
-

◆ JSS() [80/565]

+

◆ JSS() [80/562]

@@ -2647,7 +2641,7 @@ Functions
-

◆ JSS() [81/565]

+

◆ JSS() [81/562]

@@ -2665,7 +2659,7 @@ Functions
-

◆ JSS() [82/565]

+

◆ JSS() [82/562]

@@ -2683,7 +2677,7 @@ Functions
-

◆ JSS() [83/565]

+

◆ JSS() [83/562]

@@ -2701,7 +2695,7 @@ Functions
-

◆ JSS() [84/565]

+

◆ JSS() [84/562]

@@ -2719,7 +2713,7 @@ Functions
-

◆ JSS() [85/565]

+

◆ JSS() [85/562]

@@ -2737,7 +2731,7 @@ Functions
-

◆ JSS() [86/565]

+

◆ JSS() [86/562]

@@ -2755,7 +2749,7 @@ Functions
-

◆ JSS() [87/565]

+

◆ JSS() [87/562]

@@ -2773,7 +2767,7 @@ Functions
-

◆ JSS() [88/565]

+

◆ JSS() [88/562]

@@ -2791,7 +2785,7 @@ Functions
-

◆ JSS() [89/565]

+

◆ JSS() [89/562]

@@ -2809,7 +2803,7 @@ Functions
-

◆ JSS() [90/565]

+

◆ JSS() [90/562]

@@ -2827,7 +2821,7 @@ Functions
-

◆ JSS() [91/565]

+

◆ JSS() [91/562]

@@ -2845,7 +2839,7 @@ Functions
-

◆ JSS() [92/565]

+

◆ JSS() [92/562]

@@ -2863,7 +2857,7 @@ Functions
-

◆ JSS() [93/565]

+

◆ JSS() [93/562]

@@ -2881,7 +2875,7 @@ Functions
-

◆ JSS() [94/565]

+

◆ JSS() [94/562]

@@ -2899,7 +2893,7 @@ Functions
-

◆ JSS() [95/565]

+

◆ JSS() [95/562]

@@ -2917,7 +2911,7 @@ Functions
-

◆ JSS() [96/565]

+

◆ JSS() [96/562]

@@ -2935,7 +2929,7 @@ Functions
-

◆ JSS() [97/565]

+

◆ JSS() [97/562]

@@ -2953,7 +2947,7 @@ Functions
-

◆ JSS() [98/565]

+

◆ JSS() [98/562]

@@ -2971,7 +2965,7 @@ Functions
-

◆ JSS() [99/565]

+

◆ JSS() [99/562]

@@ -2989,7 +2983,7 @@ Functions
-

◆ JSS() [100/565]

+

◆ JSS() [100/562]

@@ -3007,7 +3001,7 @@ Functions
-

◆ JSS() [101/565]

+

◆ JSS() [101/562]

@@ -3025,7 +3019,7 @@ Functions
-

◆ JSS() [102/565]

+

◆ JSS() [102/562]

@@ -3043,7 +3037,7 @@ Functions
-

◆ JSS() [103/565]

+

◆ JSS() [103/562]

@@ -3061,7 +3055,7 @@ Functions
-

◆ JSS() [104/565]

+

◆ JSS() [104/562]

@@ -3079,7 +3073,7 @@ Functions
-

◆ JSS() [105/565]

+

◆ JSS() [105/562]

@@ -3097,7 +3091,7 @@ Functions
-

◆ JSS() [106/565]

+

◆ JSS() [106/562]

@@ -3115,7 +3109,7 @@ Functions
-

◆ JSS() [107/565]

+

◆ JSS() [107/562]

@@ -3133,7 +3127,7 @@ Functions
-

◆ JSS() [108/565]

+

◆ JSS() [108/562]

@@ -3151,7 +3145,7 @@ Functions
-

◆ JSS() [109/565]

+

◆ JSS() [109/562]

@@ -3166,28 +3160,10 @@ Functions
-
-
- -

◆ JSS() [110/565]

- -
-
- - - - - - - - -
ripple::jss::JSS (base_fee_drops )
-
-
-

◆ JSS() [111/565]

+

◆ JSS() [110/562]

@@ -3205,7 +3181,7 @@ Functions
-

◆ JSS() [112/565]

+

◆ JSS() [111/562]

@@ -3223,7 +3199,7 @@ Functions
-

◆ JSS() [113/565]

+

◆ JSS() [112/562]

@@ -3241,7 +3217,7 @@ Functions
-

◆ JSS() [114/565]

+

◆ JSS() [113/562]

@@ -3259,7 +3235,7 @@ Functions
-

◆ JSS() [115/565]

+

◆ JSS() [114/562]

@@ -3277,7 +3253,7 @@ Functions
-

◆ JSS() [116/565]

+

◆ JSS() [115/562]

@@ -3295,7 +3271,7 @@ Functions
-

◆ JSS() [117/565]

+

◆ JSS() [116/562]

@@ -3313,7 +3289,7 @@ Functions
-

◆ JSS() [118/565]

+

◆ JSS() [117/562]

@@ -3331,7 +3307,7 @@ Functions
-

◆ JSS() [119/565]

+

◆ JSS() [118/562]

@@ -3349,7 +3325,7 @@ Functions
-

◆ JSS() [120/565]

+

◆ JSS() [119/562]

@@ -3367,7 +3343,7 @@ Functions
-

◆ JSS() [121/565]

+

◆ JSS() [120/562]

@@ -3385,7 +3361,7 @@ Functions
-

◆ JSS() [122/565]

+

◆ JSS() [121/562]

@@ -3403,7 +3379,7 @@ Functions
-

◆ JSS() [123/565]

+

◆ JSS() [122/562]

@@ -3421,7 +3397,7 @@ Functions
-

◆ JSS() [124/565]

+

◆ JSS() [123/562]

@@ -3439,7 +3415,7 @@ Functions
-

◆ JSS() [125/565]

+

◆ JSS() [124/562]

@@ -3457,7 +3433,7 @@ Functions
-

◆ JSS() [126/565]

+

◆ JSS() [125/562]

@@ -3475,7 +3451,7 @@ Functions
-

◆ JSS() [127/565]

+

◆ JSS() [126/562]

@@ -3493,7 +3469,7 @@ Functions
-

◆ JSS() [128/565]

+

◆ JSS() [127/562]

@@ -3511,7 +3487,7 @@ Functions
-

◆ JSS() [129/565]

+

◆ JSS() [128/562]

@@ -3529,7 +3505,7 @@ Functions
-

◆ JSS() [130/565]

+

◆ JSS() [129/562]

@@ -3547,7 +3523,7 @@ Functions
-

◆ JSS() [131/565]

+

◆ JSS() [130/562]

@@ -3565,7 +3541,7 @@ Functions
-

◆ JSS() [132/565]

+

◆ JSS() [131/562]

@@ -3583,7 +3559,7 @@ Functions
-

◆ JSS() [133/565]

+

◆ JSS() [132/562]

@@ -3601,7 +3577,7 @@ Functions
-

◆ JSS() [134/565]

+

◆ JSS() [133/562]

@@ -3619,7 +3595,7 @@ Functions
-

◆ JSS() [135/565]

+

◆ JSS() [134/562]

@@ -3637,7 +3613,7 @@ Functions
-

◆ JSS() [136/565]

+

◆ JSS() [135/562]

@@ -3655,7 +3631,7 @@ Functions
-

◆ JSS() [137/565]

+

◆ JSS() [136/562]

@@ -3673,7 +3649,7 @@ Functions
-

◆ JSS() [138/565]

+

◆ JSS() [137/562]

@@ -3691,7 +3667,7 @@ Functions
-

◆ JSS() [139/565]

+

◆ JSS() [138/562]

@@ -3709,7 +3685,7 @@ Functions
-

◆ JSS() [140/565]

+

◆ JSS() [139/562]

@@ -3727,7 +3703,7 @@ Functions
-

◆ JSS() [141/565]

+

◆ JSS() [140/562]

@@ -3745,7 +3721,7 @@ Functions
-

◆ JSS() [142/565]

+

◆ JSS() [141/562]

@@ -3763,7 +3739,7 @@ Functions
-

◆ JSS() [143/565]

+

◆ JSS() [142/562]

@@ -3781,7 +3757,7 @@ Functions
-

◆ JSS() [144/565]

+

◆ JSS() [143/562]

@@ -3799,7 +3775,7 @@ Functions
-

◆ JSS() [145/565]

+

◆ JSS() [144/562]

@@ -3817,7 +3793,7 @@ Functions
-

◆ JSS() [146/565]

+

◆ JSS() [145/562]

@@ -3835,7 +3811,7 @@ Functions
-

◆ JSS() [147/565]

+

◆ JSS() [146/562]

@@ -3853,7 +3829,7 @@ Functions
-

◆ JSS() [148/565]

+

◆ JSS() [147/562]

@@ -3871,7 +3847,7 @@ Functions
-

◆ JSS() [149/565]

+

◆ JSS() [148/562]

@@ -3889,7 +3865,7 @@ Functions
-

◆ JSS() [150/565]

+

◆ JSS() [149/562]

@@ -3907,7 +3883,7 @@ Functions
-

◆ JSS() [151/565]

+

◆ JSS() [150/562]

@@ -3925,7 +3901,7 @@ Functions
-

◆ JSS() [152/565]

+

◆ JSS() [151/562]

@@ -3943,7 +3919,7 @@ Functions
-

◆ JSS() [153/565]

+

◆ JSS() [152/562]

@@ -3961,7 +3937,7 @@ Functions
-

◆ JSS() [154/565]

+

◆ JSS() [153/562]

@@ -3979,7 +3955,7 @@ Functions
-

◆ JSS() [155/565]

+

◆ JSS() [154/562]

@@ -3997,7 +3973,7 @@ Functions
-

◆ JSS() [156/565]

+

◆ JSS() [155/562]

@@ -4015,7 +3991,7 @@ Functions
-

◆ JSS() [157/565]

+

◆ JSS() [156/562]

@@ -4033,7 +4009,7 @@ Functions
-

◆ JSS() [158/565]

+

◆ JSS() [157/562]

@@ -4051,7 +4027,7 @@ Functions
-

◆ JSS() [159/565]

+

◆ JSS() [158/562]

@@ -4069,7 +4045,7 @@ Functions
-

◆ JSS() [160/565]

+

◆ JSS() [159/562]

@@ -4087,7 +4063,7 @@ Functions
-

◆ JSS() [161/565]

+

◆ JSS() [160/562]

@@ -4105,7 +4081,7 @@ Functions
-

◆ JSS() [162/565]

+

◆ JSS() [161/562]

@@ -4123,7 +4099,7 @@ Functions
-

◆ JSS() [163/565]

+

◆ JSS() [162/562]

@@ -4141,7 +4117,7 @@ Functions
-

◆ JSS() [164/565]

+

◆ JSS() [163/562]

@@ -4159,7 +4135,7 @@ Functions
-

◆ JSS() [165/565]

+

◆ JSS() [164/562]

@@ -4177,7 +4153,7 @@ Functions
-

◆ JSS() [166/565]

+

◆ JSS() [165/562]

@@ -4195,7 +4171,7 @@ Functions
-

◆ JSS() [167/565]

+

◆ JSS() [166/562]

@@ -4213,7 +4189,7 @@ Functions
-

◆ JSS() [168/565]

+

◆ JSS() [167/562]

@@ -4231,7 +4207,7 @@ Functions
-

◆ JSS() [169/565]

+

◆ JSS() [168/562]

@@ -4249,7 +4225,7 @@ Functions
-

◆ JSS() [170/565]

+

◆ JSS() [169/562]

@@ -4267,7 +4243,7 @@ Functions
-

◆ JSS() [171/565]

+

◆ JSS() [170/562]

@@ -4285,7 +4261,7 @@ Functions
-

◆ JSS() [172/565]

+

◆ JSS() [171/562]

@@ -4303,7 +4279,7 @@ Functions
-

◆ JSS() [173/565]

+

◆ JSS() [172/562]

@@ -4321,7 +4297,7 @@ Functions
-

◆ JSS() [174/565]

+

◆ JSS() [173/562]

@@ -4339,7 +4315,7 @@ Functions
-

◆ JSS() [175/565]

+

◆ JSS() [174/562]

@@ -4357,7 +4333,7 @@ Functions
-

◆ JSS() [176/565]

+

◆ JSS() [175/562]

@@ -4375,7 +4351,7 @@ Functions
-

◆ JSS() [177/565]

+

◆ JSS() [176/562]

@@ -4393,7 +4369,7 @@ Functions
-

◆ JSS() [178/565]

+

◆ JSS() [177/562]

@@ -4411,7 +4387,7 @@ Functions
-

◆ JSS() [179/565]

+

◆ JSS() [178/562]

@@ -4429,7 +4405,7 @@ Functions
-

◆ JSS() [180/565]

+

◆ JSS() [179/562]

@@ -4447,7 +4423,7 @@ Functions
-

◆ JSS() [181/565]

+

◆ JSS() [180/562]

@@ -4465,7 +4441,7 @@ Functions
-

◆ JSS() [182/565]

+

◆ JSS() [181/562]

@@ -4483,7 +4459,7 @@ Functions
-

◆ JSS() [183/565]

+

◆ JSS() [182/562]

@@ -4501,7 +4477,7 @@ Functions
-

◆ JSS() [184/565]

+

◆ JSS() [183/562]

@@ -4519,7 +4495,7 @@ Functions
-

◆ JSS() [185/565]

+

◆ JSS() [184/562]

@@ -4537,7 +4513,7 @@ Functions
-

◆ JSS() [186/565]

+

◆ JSS() [185/562]

@@ -4555,7 +4531,7 @@ Functions
-

◆ JSS() [187/565]

+

◆ JSS() [186/562]

@@ -4573,7 +4549,7 @@ Functions
-

◆ JSS() [188/565]

+

◆ JSS() [187/562]

@@ -4591,7 +4567,7 @@ Functions
-

◆ JSS() [189/565]

+

◆ JSS() [188/562]

@@ -4609,7 +4585,7 @@ Functions
-

◆ JSS() [190/565]

+

◆ JSS() [189/562]

@@ -4627,7 +4603,7 @@ Functions
-

◆ JSS() [191/565]

+

◆ JSS() [190/562]

@@ -4645,7 +4621,7 @@ Functions
-

◆ JSS() [192/565]

+

◆ JSS() [191/562]

@@ -4663,7 +4639,7 @@ Functions
-

◆ JSS() [193/565]

+

◆ JSS() [192/562]

@@ -4681,7 +4657,7 @@ Functions
-

◆ JSS() [194/565]

+

◆ JSS() [193/562]

@@ -4699,7 +4675,7 @@ Functions
-

◆ JSS() [195/565]

+

◆ JSS() [194/562]

@@ -4717,7 +4693,7 @@ Functions
-

◆ JSS() [196/565]

+

◆ JSS() [195/562]

@@ -4735,7 +4711,7 @@ Functions
-

◆ JSS() [197/565]

+

◆ JSS() [196/562]

@@ -4753,7 +4729,7 @@ Functions
-

◆ JSS() [198/565]

+

◆ JSS() [197/562]

@@ -4771,7 +4747,7 @@ Functions
-

◆ JSS() [199/565]

+

◆ JSS() [198/562]

@@ -4789,7 +4765,7 @@ Functions
-

◆ JSS() [200/565]

+

◆ JSS() [199/562]

@@ -4807,7 +4783,7 @@ Functions
-

◆ JSS() [201/565]

+

◆ JSS() [200/562]

@@ -4825,7 +4801,7 @@ Functions
-

◆ JSS() [202/565]

+

◆ JSS() [201/562]

@@ -4843,7 +4819,7 @@ Functions
-

◆ JSS() [203/565]

+

◆ JSS() [202/562]

@@ -4861,7 +4837,7 @@ Functions
-

◆ JSS() [204/565]

+

◆ JSS() [203/562]

@@ -4879,7 +4855,7 @@ Functions
-

◆ JSS() [205/565]

+

◆ JSS() [204/562]

@@ -4897,7 +4873,7 @@ Functions
-

◆ JSS() [206/565]

+

◆ JSS() [205/562]

@@ -4915,7 +4891,7 @@ Functions
-

◆ JSS() [207/565]

+

◆ JSS() [206/562]

@@ -4933,7 +4909,7 @@ Functions
-

◆ JSS() [208/565]

+

◆ JSS() [207/562]

@@ -4951,7 +4927,7 @@ Functions
-

◆ JSS() [209/565]

+

◆ JSS() [208/562]

@@ -4969,7 +4945,7 @@ Functions
-

◆ JSS() [210/565]

+

◆ JSS() [209/562]

@@ -4987,7 +4963,7 @@ Functions
-

◆ JSS() [211/565]

+

◆ JSS() [210/562]

@@ -5005,7 +4981,7 @@ Functions
-

◆ JSS() [212/565]

+

◆ JSS() [211/562]

@@ -5023,7 +4999,7 @@ Functions
-

◆ JSS() [213/565]

+

◆ JSS() [212/562]

@@ -5041,7 +5017,7 @@ Functions
-

◆ JSS() [214/565]

+

◆ JSS() [213/562]

@@ -5059,7 +5035,7 @@ Functions
-

◆ JSS() [215/565]

+

◆ JSS() [214/562]

@@ -5077,7 +5053,7 @@ Functions
-

◆ JSS() [216/565]

+

◆ JSS() [215/562]

@@ -5095,7 +5071,7 @@ Functions
-

◆ JSS() [217/565]

+

◆ JSS() [216/562]

@@ -5113,7 +5089,7 @@ Functions
-

◆ JSS() [218/565]

+

◆ JSS() [217/562]

@@ -5131,7 +5107,7 @@ Functions
-

◆ JSS() [219/565]

+

◆ JSS() [218/562]

@@ -5149,7 +5125,7 @@ Functions
-

◆ JSS() [220/565]

+

◆ JSS() [219/562]

@@ -5167,7 +5143,7 @@ Functions
-

◆ JSS() [221/565]

+

◆ JSS() [220/562]

@@ -5185,7 +5161,7 @@ Functions
-

◆ JSS() [222/565]

+

◆ JSS() [221/562]

@@ -5203,7 +5179,7 @@ Functions
-

◆ JSS() [223/565]

+

◆ JSS() [222/562]

@@ -5221,7 +5197,7 @@ Functions
-

◆ JSS() [224/565]

+

◆ JSS() [223/562]

@@ -5239,7 +5215,7 @@ Functions
-

◆ JSS() [225/565]

+

◆ JSS() [224/562]

@@ -5257,7 +5233,7 @@ Functions
-

◆ JSS() [226/565]

+

◆ JSS() [225/562]

@@ -5275,7 +5251,7 @@ Functions
-

◆ JSS() [227/565]

+

◆ JSS() [226/562]

@@ -5293,7 +5269,7 @@ Functions
-

◆ JSS() [228/565]

+

◆ JSS() [227/562]

@@ -5311,7 +5287,7 @@ Functions
-

◆ JSS() [229/565]

+

◆ JSS() [228/562]

@@ -5329,7 +5305,7 @@ Functions
-

◆ JSS() [230/565]

+

◆ JSS() [229/562]

@@ -5347,7 +5323,7 @@ Functions
-

◆ JSS() [231/565]

+

◆ JSS() [230/562]

@@ -5365,7 +5341,7 @@ Functions
-

◆ JSS() [232/565]

+

◆ JSS() [231/562]

@@ -5383,7 +5359,7 @@ Functions
-

◆ JSS() [233/565]

+

◆ JSS() [232/562]

@@ -5401,7 +5377,7 @@ Functions
-

◆ JSS() [234/565]

+

◆ JSS() [233/562]

@@ -5419,7 +5395,7 @@ Functions
-

◆ JSS() [235/565]

+

◆ JSS() [234/562]

@@ -5437,7 +5413,7 @@ Functions
-

◆ JSS() [236/565]

+

◆ JSS() [235/562]

@@ -5455,7 +5431,7 @@ Functions
-

◆ JSS() [237/565]

+

◆ JSS() [236/562]

@@ -5473,7 +5449,7 @@ Functions
-

◆ JSS() [238/565]

+

◆ JSS() [237/562]

@@ -5491,7 +5467,7 @@ Functions
-

◆ JSS() [239/565]

+

◆ JSS() [238/562]

@@ -5509,7 +5485,7 @@ Functions
-

◆ JSS() [240/565]

+

◆ JSS() [239/562]

@@ -5527,7 +5503,7 @@ Functions
-

◆ JSS() [241/565]

+

◆ JSS() [240/562]

@@ -5545,7 +5521,7 @@ Functions
-

◆ JSS() [242/565]

+

◆ JSS() [241/562]

@@ -5563,7 +5539,7 @@ Functions
-

◆ JSS() [243/565]

+

◆ JSS() [242/562]

@@ -5581,7 +5557,7 @@ Functions
-

◆ JSS() [244/565]

+

◆ JSS() [243/562]

@@ -5599,7 +5575,7 @@ Functions
-

◆ JSS() [245/565]

+

◆ JSS() [244/562]

@@ -5617,7 +5593,7 @@ Functions
-

◆ JSS() [246/565]

+

◆ JSS() [245/562]

@@ -5635,7 +5611,7 @@ Functions
-

◆ JSS() [247/565]

+

◆ JSS() [246/562]

@@ -5653,7 +5629,7 @@ Functions
-

◆ JSS() [248/565]

+

◆ JSS() [247/562]

@@ -5671,7 +5647,7 @@ Functions
-

◆ JSS() [249/565]

+

◆ JSS() [248/562]

@@ -5689,7 +5665,7 @@ Functions
-

◆ JSS() [250/565]

+

◆ JSS() [249/562]

@@ -5707,7 +5683,7 @@ Functions
-

◆ JSS() [251/565]

+

◆ JSS() [250/562]

@@ -5725,7 +5701,7 @@ Functions
-

◆ JSS() [252/565]

+

◆ JSS() [251/562]

@@ -5743,7 +5719,7 @@ Functions
-

◆ JSS() [253/565]

+

◆ JSS() [252/562]

@@ -5761,7 +5737,7 @@ Functions
-

◆ JSS() [254/565]

+

◆ JSS() [253/562]

@@ -5779,7 +5755,7 @@ Functions
-

◆ JSS() [255/565]

+

◆ JSS() [254/562]

@@ -5797,7 +5773,7 @@ Functions
-

◆ JSS() [256/565]

+

◆ JSS() [255/562]

@@ -5815,7 +5791,7 @@ Functions
-

◆ JSS() [257/565]

+

◆ JSS() [256/562]

@@ -5833,7 +5809,7 @@ Functions
-

◆ JSS() [258/565]

+

◆ JSS() [257/562]

@@ -5851,7 +5827,7 @@ Functions
-

◆ JSS() [259/565]

+

◆ JSS() [258/562]

@@ -5869,7 +5845,7 @@ Functions
-

◆ JSS() [260/565]

+

◆ JSS() [259/562]

@@ -5887,7 +5863,7 @@ Functions
-

◆ JSS() [261/565]

+

◆ JSS() [260/562]

@@ -5905,7 +5881,7 @@ Functions
-

◆ JSS() [262/565]

+

◆ JSS() [261/562]

@@ -5923,7 +5899,7 @@ Functions
-

◆ JSS() [263/565]

+

◆ JSS() [262/562]

@@ -5941,7 +5917,7 @@ Functions
-

◆ JSS() [264/565]

+

◆ JSS() [263/562]

@@ -5959,7 +5935,7 @@ Functions
-

◆ JSS() [265/565]

+

◆ JSS() [264/562]

@@ -5977,7 +5953,7 @@ Functions
-

◆ JSS() [266/565]

+

◆ JSS() [265/562]

@@ -5995,7 +5971,7 @@ Functions
-

◆ JSS() [267/565]

+

◆ JSS() [266/562]

@@ -6013,7 +5989,7 @@ Functions
-

◆ JSS() [268/565]

+

◆ JSS() [267/562]

@@ -6031,7 +6007,7 @@ Functions
-

◆ JSS() [269/565]

+

◆ JSS() [268/562]

@@ -6049,7 +6025,7 @@ Functions
-

◆ JSS() [270/565]

+

◆ JSS() [269/562]

@@ -6067,7 +6043,7 @@ Functions
-

◆ JSS() [271/565]

+

◆ JSS() [270/562]

@@ -6085,7 +6061,7 @@ Functions
-

◆ JSS() [272/565]

+

◆ JSS() [271/562]

@@ -6103,7 +6079,7 @@ Functions
-

◆ JSS() [273/565]

+

◆ JSS() [272/562]

@@ -6121,7 +6097,7 @@ Functions
-

◆ JSS() [274/565]

+

◆ JSS() [273/562]

@@ -6139,7 +6115,7 @@ Functions
-

◆ JSS() [275/565]

+

◆ JSS() [274/562]

@@ -6157,7 +6133,7 @@ Functions
-

◆ JSS() [276/565]

+

◆ JSS() [275/562]

@@ -6175,7 +6151,7 @@ Functions
-

◆ JSS() [277/565]

+

◆ JSS() [276/562]

@@ -6193,7 +6169,7 @@ Functions
-

◆ JSS() [278/565]

+

◆ JSS() [277/562]

@@ -6211,7 +6187,7 @@ Functions
-

◆ JSS() [279/565]

+

◆ JSS() [278/562]

@@ -6229,7 +6205,7 @@ Functions
-

◆ JSS() [280/565]

+

◆ JSS() [279/562]

@@ -6247,7 +6223,7 @@ Functions
-

◆ JSS() [281/565]

+

◆ JSS() [280/562]

@@ -6265,7 +6241,7 @@ Functions
-

◆ JSS() [282/565]

+

◆ JSS() [281/562]

@@ -6283,7 +6259,7 @@ Functions
-

◆ JSS() [283/565]

+

◆ JSS() [282/562]

@@ -6301,7 +6277,7 @@ Functions
-

◆ JSS() [284/565]

+

◆ JSS() [283/562]

@@ -6319,7 +6295,7 @@ Functions
-

◆ JSS() [285/565]

+

◆ JSS() [284/562]

@@ -6337,7 +6313,7 @@ Functions
-

◆ JSS() [286/565]

+

◆ JSS() [285/562]

@@ -6355,7 +6331,7 @@ Functions
-

◆ JSS() [287/565]

+

◆ JSS() [286/562]

@@ -6373,7 +6349,7 @@ Functions
-

◆ JSS() [288/565]

+

◆ JSS() [287/562]

@@ -6391,7 +6367,7 @@ Functions
-

◆ JSS() [289/565]

+

◆ JSS() [288/562]

@@ -6409,7 +6385,7 @@ Functions
-

◆ JSS() [290/565]

+

◆ JSS() [289/562]

@@ -6427,7 +6403,7 @@ Functions
-

◆ JSS() [291/565]

+

◆ JSS() [290/562]

@@ -6445,7 +6421,7 @@ Functions
-

◆ JSS() [292/565]

+

◆ JSS() [291/562]

@@ -6463,7 +6439,7 @@ Functions
-

◆ JSS() [293/565]

+

◆ JSS() [292/562]

@@ -6481,7 +6457,7 @@ Functions
-

◆ JSS() [294/565]

+

◆ JSS() [293/562]

@@ -6499,7 +6475,7 @@ Functions
-

◆ JSS() [295/565]

+

◆ JSS() [294/562]

@@ -6517,7 +6493,7 @@ Functions
-

◆ JSS() [296/565]

+

◆ JSS() [295/562]

@@ -6535,7 +6511,7 @@ Functions
-

◆ JSS() [297/565]

+

◆ JSS() [296/562]

@@ -6553,7 +6529,7 @@ Functions
-

◆ JSS() [298/565]

+

◆ JSS() [297/562]

@@ -6571,7 +6547,7 @@ Functions
-

◆ JSS() [299/565]

+

◆ JSS() [298/562]

@@ -6589,7 +6565,7 @@ Functions
-

◆ JSS() [300/565]

+

◆ JSS() [299/562]

@@ -6607,7 +6583,7 @@ Functions
-

◆ JSS() [301/565]

+

◆ JSS() [300/562]

@@ -6625,7 +6601,7 @@ Functions
-

◆ JSS() [302/565]

+

◆ JSS() [301/562]

@@ -6643,7 +6619,7 @@ Functions
-

◆ JSS() [303/565]

+

◆ JSS() [302/562]

@@ -6661,7 +6637,7 @@ Functions
-

◆ JSS() [304/565]

+

◆ JSS() [303/562]

@@ -6679,7 +6655,7 @@ Functions
-

◆ JSS() [305/565]

+

◆ JSS() [304/562]

@@ -6697,7 +6673,7 @@ Functions
-

◆ JSS() [306/565]

+

◆ JSS() [305/562]

@@ -6715,7 +6691,7 @@ Functions
-

◆ JSS() [307/565]

+

◆ JSS() [306/562]

@@ -6733,7 +6709,7 @@ Functions
-

◆ JSS() [308/565]

+

◆ JSS() [307/562]

@@ -6751,7 +6727,7 @@ Functions
-

◆ JSS() [309/565]

+

◆ JSS() [308/562]

@@ -6769,7 +6745,7 @@ Functions
-

◆ JSS() [310/565]

+

◆ JSS() [309/562]

@@ -6787,7 +6763,7 @@ Functions
-

◆ JSS() [311/565]

+

◆ JSS() [310/562]

@@ -6805,7 +6781,7 @@ Functions
-

◆ JSS() [312/565]

+

◆ JSS() [311/562]

@@ -6823,7 +6799,7 @@ Functions
-

◆ JSS() [313/565]

+

◆ JSS() [312/562]

@@ -6841,7 +6817,7 @@ Functions
-

◆ JSS() [314/565]

+

◆ JSS() [313/562]

@@ -6859,7 +6835,7 @@ Functions
-

◆ JSS() [315/565]

+

◆ JSS() [314/562]

@@ -6877,7 +6853,7 @@ Functions
-

◆ JSS() [316/565]

+

◆ JSS() [315/562]

@@ -6895,7 +6871,7 @@ Functions
-

◆ JSS() [317/565]

+

◆ JSS() [316/562]

@@ -6913,7 +6889,7 @@ Functions
-

◆ JSS() [318/565]

+

◆ JSS() [317/562]

@@ -6931,7 +6907,7 @@ Functions
-

◆ JSS() [319/565]

+

◆ JSS() [318/562]

@@ -6949,7 +6925,7 @@ Functions
-

◆ JSS() [320/565]

+

◆ JSS() [319/562]

@@ -6967,7 +6943,7 @@ Functions
-

◆ JSS() [321/565]

+

◆ JSS() [320/562]

@@ -6985,7 +6961,7 @@ Functions
-

◆ JSS() [322/565]

+

◆ JSS() [321/562]

@@ -7003,7 +6979,7 @@ Functions
-

◆ JSS() [323/565]

+

◆ JSS() [322/562]

@@ -7021,7 +6997,7 @@ Functions
-

◆ JSS() [324/565]

+

◆ JSS() [323/562]

@@ -7039,7 +7015,7 @@ Functions
-

◆ JSS() [325/565]

+

◆ JSS() [324/562]

@@ -7057,7 +7033,7 @@ Functions
-

◆ JSS() [326/565]

+

◆ JSS() [325/562]

@@ -7075,7 +7051,7 @@ Functions
-

◆ JSS() [327/565]

+

◆ JSS() [326/562]

@@ -7093,7 +7069,7 @@ Functions
-

◆ JSS() [328/565]

+

◆ JSS() [327/562]

@@ -7111,7 +7087,7 @@ Functions
-

◆ JSS() [329/565]

+

◆ JSS() [328/562]

@@ -7129,7 +7105,7 @@ Functions
-

◆ JSS() [330/565]

+

◆ JSS() [329/562]

@@ -7147,7 +7123,7 @@ Functions
-

◆ JSS() [331/565]

+

◆ JSS() [330/562]

@@ -7165,7 +7141,7 @@ Functions
-

◆ JSS() [332/565]

+

◆ JSS() [331/562]

@@ -7183,7 +7159,7 @@ Functions
-

◆ JSS() [333/565]

+

◆ JSS() [332/562]

@@ -7201,7 +7177,7 @@ Functions
-

◆ JSS() [334/565]

+

◆ JSS() [333/562]

@@ -7219,7 +7195,7 @@ Functions
-

◆ JSS() [335/565]

+

◆ JSS() [334/562]

@@ -7237,7 +7213,7 @@ Functions
-

◆ JSS() [336/565]

+

◆ JSS() [335/562]

@@ -7255,7 +7231,7 @@ Functions
-

◆ JSS() [337/565]

+

◆ JSS() [336/562]

@@ -7273,7 +7249,7 @@ Functions
-

◆ JSS() [338/565]

+

◆ JSS() [337/562]

@@ -7291,7 +7267,7 @@ Functions
-

◆ JSS() [339/565]

+

◆ JSS() [338/562]

@@ -7309,7 +7285,7 @@ Functions
-

◆ JSS() [340/565]

+

◆ JSS() [339/562]

@@ -7327,7 +7303,7 @@ Functions
-

◆ JSS() [341/565]

+

◆ JSS() [340/562]

@@ -7345,7 +7321,7 @@ Functions
-

◆ JSS() [342/565]

+

◆ JSS() [341/562]

@@ -7363,7 +7339,7 @@ Functions
-

◆ JSS() [343/565]

+

◆ JSS() [342/562]

@@ -7381,7 +7357,7 @@ Functions
-

◆ JSS() [344/565]

+

◆ JSS() [343/562]

@@ -7399,7 +7375,7 @@ Functions
-

◆ JSS() [345/565]

+

◆ JSS() [344/562]

@@ -7417,7 +7393,7 @@ Functions
-

◆ JSS() [346/565]

+

◆ JSS() [345/562]

@@ -7435,7 +7411,7 @@ Functions
-

◆ JSS() [347/565]

+

◆ JSS() [346/562]

@@ -7453,7 +7429,7 @@ Functions
-

◆ JSS() [348/565]

+

◆ JSS() [347/562]

@@ -7471,7 +7447,7 @@ Functions
-

◆ JSS() [349/565]

+

◆ JSS() [348/562]

@@ -7489,7 +7465,7 @@ Functions
-

◆ JSS() [350/565]

+

◆ JSS() [349/562]

@@ -7507,7 +7483,7 @@ Functions
-

◆ JSS() [351/565]

+

◆ JSS() [350/562]

@@ -7525,7 +7501,7 @@ Functions
-

◆ JSS() [352/565]

+

◆ JSS() [351/562]

@@ -7543,7 +7519,7 @@ Functions
-

◆ JSS() [353/565]

+

◆ JSS() [352/562]

@@ -7561,7 +7537,7 @@ Functions
-

◆ JSS() [354/565]

+

◆ JSS() [353/562]

@@ -7579,7 +7555,7 @@ Functions
-

◆ JSS() [355/565]

+

◆ JSS() [354/562]

@@ -7597,7 +7573,7 @@ Functions
-

◆ JSS() [356/565]

+

◆ JSS() [355/562]

@@ -7615,7 +7591,7 @@ Functions
-

◆ JSS() [357/565]

+

◆ JSS() [356/562]

@@ -7633,7 +7609,7 @@ Functions
-

◆ JSS() [358/565]

+

◆ JSS() [357/562]

@@ -7651,7 +7627,7 @@ Functions
-

◆ JSS() [359/565]

+

◆ JSS() [358/562]

@@ -7669,7 +7645,7 @@ Functions
-

◆ JSS() [360/565]

+

◆ JSS() [359/562]

@@ -7687,7 +7663,7 @@ Functions
-

◆ JSS() [361/565]

+

◆ JSS() [360/562]

@@ -7705,7 +7681,7 @@ Functions
-

◆ JSS() [362/565]

+

◆ JSS() [361/562]

@@ -7723,7 +7699,7 @@ Functions
-

◆ JSS() [363/565]

+

◆ JSS() [362/562]

@@ -7741,7 +7717,7 @@ Functions
-

◆ JSS() [364/565]

+

◆ JSS() [363/562]

@@ -7759,7 +7735,7 @@ Functions
-

◆ JSS() [365/565]

+

◆ JSS() [364/562]

@@ -7777,7 +7753,7 @@ Functions
-

◆ JSS() [366/565]

+

◆ JSS() [365/562]

@@ -7795,7 +7771,7 @@ Functions
-

◆ JSS() [367/565]

+

◆ JSS() [366/562]

@@ -7813,7 +7789,7 @@ Functions
-

◆ JSS() [368/565]

+

◆ JSS() [367/562]

@@ -7831,7 +7807,7 @@ Functions
-

◆ JSS() [369/565]

+

◆ JSS() [368/562]

@@ -7849,7 +7825,7 @@ Functions
-

◆ JSS() [370/565]

+

◆ JSS() [369/562]

@@ -7867,7 +7843,7 @@ Functions
-

◆ JSS() [371/565]

+

◆ JSS() [370/562]

@@ -7885,7 +7861,7 @@ Functions
-

◆ JSS() [372/565]

+

◆ JSS() [371/562]

@@ -7903,7 +7879,7 @@ Functions
-

◆ JSS() [373/565]

+

◆ JSS() [372/562]

@@ -7921,7 +7897,7 @@ Functions
-

◆ JSS() [374/565]

+

◆ JSS() [373/562]

@@ -7939,7 +7915,7 @@ Functions
-

◆ JSS() [375/565]

+

◆ JSS() [374/562]

@@ -7957,7 +7933,7 @@ Functions
-

◆ JSS() [376/565]

+

◆ JSS() [375/562]

@@ -7975,7 +7951,7 @@ Functions
-

◆ JSS() [377/565]

+

◆ JSS() [376/562]

@@ -7993,7 +7969,7 @@ Functions
-

◆ JSS() [378/565]

+

◆ JSS() [377/562]

@@ -8011,7 +7987,7 @@ Functions
-

◆ JSS() [379/565]

+

◆ JSS() [378/562]

@@ -8029,7 +8005,7 @@ Functions
-

◆ JSS() [380/565]

+

◆ JSS() [379/562]

@@ -8047,7 +8023,7 @@ Functions
-

◆ JSS() [381/565]

+

◆ JSS() [380/562]

@@ -8065,7 +8041,7 @@ Functions
-

◆ JSS() [382/565]

+

◆ JSS() [381/562]

@@ -8083,7 +8059,7 @@ Functions
-

◆ JSS() [383/565]

+

◆ JSS() [382/562]

@@ -8101,7 +8077,7 @@ Functions
-

◆ JSS() [384/565]

+

◆ JSS() [383/562]

@@ -8119,7 +8095,7 @@ Functions
-

◆ JSS() [385/565]

+

◆ JSS() [384/562]

@@ -8137,7 +8113,7 @@ Functions
-

◆ JSS() [386/565]

+

◆ JSS() [385/562]

@@ -8155,7 +8131,7 @@ Functions
-

◆ JSS() [387/565]

+

◆ JSS() [386/562]

@@ -8173,7 +8149,7 @@ Functions
-

◆ JSS() [388/565]

+

◆ JSS() [387/562]

@@ -8191,7 +8167,7 @@ Functions
-

◆ JSS() [389/565]

+

◆ JSS() [388/562]

@@ -8209,7 +8185,7 @@ Functions
-

◆ JSS() [390/565]

+

◆ JSS() [389/562]

@@ -8227,7 +8203,7 @@ Functions
-

◆ JSS() [391/565]

+

◆ JSS() [390/562]

@@ -8245,7 +8221,7 @@ Functions
-

◆ JSS() [392/565]

+

◆ JSS() [391/562]

@@ -8263,7 +8239,7 @@ Functions
-

◆ JSS() [393/565]

+

◆ JSS() [392/562]

@@ -8281,7 +8257,7 @@ Functions
-

◆ JSS() [394/565]

+

◆ JSS() [393/562]

@@ -8299,7 +8275,7 @@ Functions
-

◆ JSS() [395/565]

+

◆ JSS() [394/562]

@@ -8317,7 +8293,7 @@ Functions
-

◆ JSS() [396/565]

+

◆ JSS() [395/562]

@@ -8335,7 +8311,7 @@ Functions
-

◆ JSS() [397/565]

+

◆ JSS() [396/562]

@@ -8353,7 +8329,7 @@ Functions
-

◆ JSS() [398/565]

+

◆ JSS() [397/562]

@@ -8371,7 +8347,7 @@ Functions
-

◆ JSS() [399/565]

+

◆ JSS() [398/562]

@@ -8389,7 +8365,7 @@ Functions
-

◆ JSS() [400/565]

+

◆ JSS() [399/562]

@@ -8407,7 +8383,7 @@ Functions
-

◆ JSS() [401/565]

+

◆ JSS() [400/562]

@@ -8425,7 +8401,7 @@ Functions
-

◆ JSS() [402/565]

+

◆ JSS() [401/562]

@@ -8443,7 +8419,7 @@ Functions
-

◆ JSS() [403/565]

+

◆ JSS() [402/562]

@@ -8461,7 +8437,7 @@ Functions
-

◆ JSS() [404/565]

+

◆ JSS() [403/562]

@@ -8479,7 +8455,7 @@ Functions
-

◆ JSS() [405/565]

+

◆ JSS() [404/562]

@@ -8497,7 +8473,7 @@ Functions
-

◆ JSS() [406/565]

+

◆ JSS() [405/562]

@@ -8515,7 +8491,7 @@ Functions
-

◆ JSS() [407/565]

+

◆ JSS() [406/562]

@@ -8533,7 +8509,7 @@ Functions
-

◆ JSS() [408/565]

+

◆ JSS() [407/562]

@@ -8551,7 +8527,7 @@ Functions
-

◆ JSS() [409/565]

+

◆ JSS() [408/562]

@@ -8569,7 +8545,7 @@ Functions
-

◆ JSS() [410/565]

+

◆ JSS() [409/562]

@@ -8587,7 +8563,7 @@ Functions
-

◆ JSS() [411/565]

+

◆ JSS() [410/562]

@@ -8605,7 +8581,7 @@ Functions
-

◆ JSS() [412/565]

+

◆ JSS() [411/562]

@@ -8623,7 +8599,7 @@ Functions
-

◆ JSS() [413/565]

+

◆ JSS() [412/562]

@@ -8641,7 +8617,7 @@ Functions
-

◆ JSS() [414/565]

+

◆ JSS() [413/562]

@@ -8659,7 +8635,7 @@ Functions
-

◆ JSS() [415/565]

+

◆ JSS() [414/562]

@@ -8677,7 +8653,7 @@ Functions
-

◆ JSS() [416/565]

+

◆ JSS() [415/562]

@@ -8692,28 +8668,10 @@ Functions
-
-
- -

◆ JSS() [417/565]

- -
-
- - - - - - - - -
ripple::jss::JSS (reserve_base_drops )
-
-
-

◆ JSS() [418/565]

+

◆ JSS() [416/562]

@@ -8731,7 +8689,7 @@ Functions
-

◆ JSS() [419/565]

+

◆ JSS() [417/562]

@@ -8746,28 +8704,10 @@ Functions
-
-
- -

◆ JSS() [420/565]

- -
-
- - - - - - - - -
ripple::jss::JSS (reserve_inc_drops )
-
-
-

◆ JSS() [421/565]

+

◆ JSS() [418/562]

@@ -8785,7 +8725,7 @@ Functions
-

◆ JSS() [422/565]

+

◆ JSS() [419/562]

@@ -8803,7 +8743,7 @@ Functions
-

◆ JSS() [423/565]

+

◆ JSS() [420/562]

@@ -8821,7 +8761,7 @@ Functions
-

◆ JSS() [424/565]

+

◆ JSS() [421/562]

@@ -8839,7 +8779,7 @@ Functions
-

◆ JSS() [425/565]

+

◆ JSS() [422/562]

@@ -8857,7 +8797,7 @@ Functions
-

◆ JSS() [426/565]

+

◆ JSS() [423/562]

@@ -8875,7 +8815,7 @@ Functions
-

◆ JSS() [427/565]

+

◆ JSS() [424/562]

@@ -8893,7 +8833,7 @@ Functions
-

◆ JSS() [428/565]

+

◆ JSS() [425/562]

@@ -8911,7 +8851,7 @@ Functions
-

◆ JSS() [429/565]

+

◆ JSS() [426/562]

@@ -8929,7 +8869,7 @@ Functions
-

◆ JSS() [430/565]

+

◆ JSS() [427/562]

@@ -8947,7 +8887,7 @@ Functions
-

◆ JSS() [431/565]

+

◆ JSS() [428/562]

@@ -8965,7 +8905,7 @@ Functions
-

◆ JSS() [432/565]

+

◆ JSS() [429/562]

@@ -8983,7 +8923,7 @@ Functions
-

◆ JSS() [433/565]

+

◆ JSS() [430/562]

@@ -9001,7 +8941,7 @@ Functions
-

◆ JSS() [434/565]

+

◆ JSS() [431/562]

@@ -9019,7 +8959,7 @@ Functions
-

◆ JSS() [435/565]

+

◆ JSS() [432/562]

@@ -9037,7 +8977,7 @@ Functions
-

◆ JSS() [436/565]

+

◆ JSS() [433/562]

@@ -9055,7 +8995,7 @@ Functions
-

◆ JSS() [437/565]

+

◆ JSS() [434/562]

@@ -9073,7 +9013,7 @@ Functions
-

◆ JSS() [438/565]

+

◆ JSS() [435/562]

@@ -9091,7 +9031,7 @@ Functions
-

◆ JSS() [439/565]

+

◆ JSS() [436/562]

@@ -9109,7 +9049,7 @@ Functions
-

◆ JSS() [440/565]

+

◆ JSS() [437/562]

@@ -9127,7 +9067,7 @@ Functions
-

◆ JSS() [441/565]

+

◆ JSS() [438/562]

@@ -9145,7 +9085,7 @@ Functions
-

◆ JSS() [442/565]

+

◆ JSS() [439/562]

@@ -9163,7 +9103,7 @@ Functions
-

◆ JSS() [443/565]

+

◆ JSS() [440/562]

@@ -9181,7 +9121,7 @@ Functions
-

◆ JSS() [444/565]

+

◆ JSS() [441/562]

@@ -9199,7 +9139,7 @@ Functions
-

◆ JSS() [445/565]

+

◆ JSS() [442/562]

@@ -9217,7 +9157,7 @@ Functions
-

◆ JSS() [446/565]

+

◆ JSS() [443/562]

@@ -9235,7 +9175,7 @@ Functions
-

◆ JSS() [447/565]

+

◆ JSS() [444/562]

@@ -9253,7 +9193,7 @@ Functions
-

◆ JSS() [448/565]

+

◆ JSS() [445/562]

@@ -9271,7 +9211,7 @@ Functions
-

◆ JSS() [449/565]

+

◆ JSS() [446/562]

@@ -9289,7 +9229,7 @@ Functions
-

◆ JSS() [450/565]

+

◆ JSS() [447/562]

@@ -9307,7 +9247,7 @@ Functions
-

◆ JSS() [451/565]

+

◆ JSS() [448/562]

@@ -9325,7 +9265,7 @@ Functions
-

◆ JSS() [452/565]

+

◆ JSS() [449/562]

@@ -9343,7 +9283,7 @@ Functions
-

◆ JSS() [453/565]

+

◆ JSS() [450/562]

@@ -9361,7 +9301,7 @@ Functions
-

◆ JSS() [454/565]

+

◆ JSS() [451/562]

@@ -9379,7 +9319,7 @@ Functions
-

◆ JSS() [455/565]

+

◆ JSS() [452/562]

@@ -9397,7 +9337,7 @@ Functions
-

◆ JSS() [456/565]

+

◆ JSS() [453/562]

@@ -9415,7 +9355,7 @@ Functions
-

◆ JSS() [457/565]

+

◆ JSS() [454/562]

@@ -9433,7 +9373,7 @@ Functions
-

◆ JSS() [458/565]

+

◆ JSS() [455/562]

@@ -9451,7 +9391,7 @@ Functions
-

◆ JSS() [459/565]

+

◆ JSS() [456/562]

@@ -9469,7 +9409,7 @@ Functions
-

◆ JSS() [460/565]

+

◆ JSS() [457/562]

@@ -9487,7 +9427,7 @@ Functions
-

◆ JSS() [461/565]

+

◆ JSS() [458/562]

@@ -9505,7 +9445,7 @@ Functions
-

◆ JSS() [462/565]

+

◆ JSS() [459/562]

@@ -9523,7 +9463,7 @@ Functions
-

◆ JSS() [463/565]

+

◆ JSS() [460/562]

@@ -9541,7 +9481,7 @@ Functions
-

◆ JSS() [464/565]

+

◆ JSS() [461/562]

@@ -9559,7 +9499,7 @@ Functions
-

◆ JSS() [465/565]

+

◆ JSS() [462/562]

@@ -9577,7 +9517,7 @@ Functions
-

◆ JSS() [466/565]

+

◆ JSS() [463/562]

@@ -9595,7 +9535,7 @@ Functions
-

◆ JSS() [467/565]

+

◆ JSS() [464/562]

@@ -9613,7 +9553,7 @@ Functions
-

◆ JSS() [468/565]

+

◆ JSS() [465/562]

@@ -9631,7 +9571,7 @@ Functions
-

◆ JSS() [469/565]

+

◆ JSS() [466/562]

@@ -9649,7 +9589,7 @@ Functions
-

◆ JSS() [470/565]

+

◆ JSS() [467/562]

@@ -9667,7 +9607,7 @@ Functions
-

◆ JSS() [471/565]

+

◆ JSS() [468/562]

@@ -9685,7 +9625,7 @@ Functions
-

◆ JSS() [472/565]

+

◆ JSS() [469/562]

@@ -9703,7 +9643,7 @@ Functions
-

◆ JSS() [473/565]

+

◆ JSS() [470/562]

@@ -9721,7 +9661,7 @@ Functions
-

◆ JSS() [474/565]

+

◆ JSS() [471/562]

@@ -9739,7 +9679,7 @@ Functions
-

◆ JSS() [475/565]

+

◆ JSS() [472/562]

@@ -9757,7 +9697,7 @@ Functions
-

◆ JSS() [476/565]

+

◆ JSS() [473/562]

@@ -9775,7 +9715,7 @@ Functions
-

◆ JSS() [477/565]

+

◆ JSS() [474/562]

@@ -9793,7 +9733,7 @@ Functions
-

◆ JSS() [478/565]

+

◆ JSS() [475/562]

@@ -9811,7 +9751,7 @@ Functions
-

◆ JSS() [479/565]

+

◆ JSS() [476/562]

@@ -9829,7 +9769,7 @@ Functions
-

◆ JSS() [480/565]

+

◆ JSS() [477/562]

@@ -9847,7 +9787,7 @@ Functions
-

◆ JSS() [481/565]

+

◆ JSS() [478/562]

@@ -9865,7 +9805,7 @@ Functions
-

◆ JSS() [482/565]

+

◆ JSS() [479/562]

@@ -9883,7 +9823,7 @@ Functions
-

◆ JSS() [483/565]

+

◆ JSS() [480/562]

@@ -9901,7 +9841,7 @@ Functions
-

◆ JSS() [484/565]

+

◆ JSS() [481/562]

@@ -9919,7 +9859,7 @@ Functions
-

◆ JSS() [485/565]

+

◆ JSS() [482/562]

@@ -9937,7 +9877,7 @@ Functions
-

◆ JSS() [486/565]

+

◆ JSS() [483/562]

@@ -9955,7 +9895,7 @@ Functions
-

◆ JSS() [487/565]

+

◆ JSS() [484/562]

@@ -9973,7 +9913,7 @@ Functions
-

◆ JSS() [488/565]

+

◆ JSS() [485/562]

@@ -9991,7 +9931,7 @@ Functions
-

◆ JSS() [489/565]

+

◆ JSS() [486/562]

@@ -10009,7 +9949,7 @@ Functions
-

◆ JSS() [490/565]

+

◆ JSS() [487/562]

@@ -10027,7 +9967,7 @@ Functions
-

◆ JSS() [491/565]

+

◆ JSS() [488/562]

@@ -10045,7 +9985,7 @@ Functions
-

◆ JSS() [492/565]

+

◆ JSS() [489/562]

@@ -10063,7 +10003,7 @@ Functions
-

◆ JSS() [493/565]

+

◆ JSS() [490/562]

@@ -10081,7 +10021,7 @@ Functions
-

◆ JSS() [494/565]

+

◆ JSS() [491/562]

@@ -10099,7 +10039,7 @@ Functions
-

◆ JSS() [495/565]

+

◆ JSS() [492/562]

@@ -10117,7 +10057,7 @@ Functions
-

◆ JSS() [496/565]

+

◆ JSS() [493/562]

@@ -10135,7 +10075,7 @@ Functions
-

◆ JSS() [497/565]

+

◆ JSS() [494/562]

@@ -10153,7 +10093,7 @@ Functions
-

◆ JSS() [498/565]

+

◆ JSS() [495/562]

@@ -10171,7 +10111,7 @@ Functions
-

◆ JSS() [499/565]

+

◆ JSS() [496/562]

@@ -10189,7 +10129,7 @@ Functions
-

◆ JSS() [500/565]

+

◆ JSS() [497/562]

@@ -10207,7 +10147,7 @@ Functions
-

◆ JSS() [501/565]

+

◆ JSS() [498/562]

@@ -10225,7 +10165,7 @@ Functions
-

◆ JSS() [502/565]

+

◆ JSS() [499/562]

@@ -10243,7 +10183,7 @@ Functions
-

◆ JSS() [503/565]

+

◆ JSS() [500/562]

@@ -10261,7 +10201,7 @@ Functions
-

◆ JSS() [504/565]

+

◆ JSS() [501/562]

@@ -10279,7 +10219,7 @@ Functions
-

◆ JSS() [505/565]

+

◆ JSS() [502/562]

@@ -10297,7 +10237,7 @@ Functions
-

◆ JSS() [506/565]

+

◆ JSS() [503/562]

@@ -10315,7 +10255,7 @@ Functions
-

◆ JSS() [507/565]

+

◆ JSS() [504/562]

@@ -10333,7 +10273,7 @@ Functions
-

◆ JSS() [508/565]

+

◆ JSS() [505/562]

@@ -10351,7 +10291,7 @@ Functions
-

◆ JSS() [509/565]

+

◆ JSS() [506/562]

@@ -10369,7 +10309,7 @@ Functions
-

◆ JSS() [510/565]

+

◆ JSS() [507/562]

@@ -10387,7 +10327,7 @@ Functions
-

◆ JSS() [511/565]

+

◆ JSS() [508/562]

@@ -10405,7 +10345,7 @@ Functions
-

◆ JSS() [512/565]

+

◆ JSS() [509/562]

@@ -10423,7 +10363,7 @@ Functions
-

◆ JSS() [513/565]

+

◆ JSS() [510/562]

@@ -10441,7 +10381,7 @@ Functions
-

◆ JSS() [514/565]

+

◆ JSS() [511/562]

@@ -10459,7 +10399,7 @@ Functions
-

◆ JSS() [515/565]

+

◆ JSS() [512/562]

@@ -10477,7 +10417,7 @@ Functions
-

◆ JSS() [516/565]

+

◆ JSS() [513/562]

@@ -10495,7 +10435,7 @@ Functions
-

◆ JSS() [517/565]

+

◆ JSS() [514/562]

@@ -10513,7 +10453,7 @@ Functions
-

◆ JSS() [518/565]

+

◆ JSS() [515/562]

@@ -10531,7 +10471,7 @@ Functions
-

◆ JSS() [519/565]

+

◆ JSS() [516/562]

@@ -10549,7 +10489,7 @@ Functions
-

◆ JSS() [520/565]

+

◆ JSS() [517/562]

@@ -10567,7 +10507,7 @@ Functions
-

◆ JSS() [521/565]

+

◆ JSS() [518/562]

@@ -10585,7 +10525,7 @@ Functions
-

◆ JSS() [522/565]

+

◆ JSS() [519/562]

@@ -10603,7 +10543,7 @@ Functions
-

◆ JSS() [523/565]

+

◆ JSS() [520/562]

@@ -10621,7 +10561,7 @@ Functions
-

◆ JSS() [524/565]

+

◆ JSS() [521/562]

@@ -10639,7 +10579,7 @@ Functions
-

◆ JSS() [525/565]

+

◆ JSS() [522/562]

@@ -10657,7 +10597,7 @@ Functions
-

◆ JSS() [526/565]

+

◆ JSS() [523/562]

@@ -10675,7 +10615,7 @@ Functions
-

◆ JSS() [527/565]

+

◆ JSS() [524/562]

@@ -10693,7 +10633,7 @@ Functions
-

◆ JSS() [528/565]

+

◆ JSS() [525/562]

@@ -10711,7 +10651,7 @@ Functions
-

◆ JSS() [529/565]

+

◆ JSS() [526/562]

@@ -10729,7 +10669,7 @@ Functions
-

◆ JSS() [530/565]

+

◆ JSS() [527/562]

@@ -10747,7 +10687,7 @@ Functions
-

◆ JSS() [531/565]

+

◆ JSS() [528/562]

@@ -10765,7 +10705,7 @@ Functions
-

◆ JSS() [532/565]

+

◆ JSS() [529/562]

@@ -10783,7 +10723,7 @@ Functions
-

◆ JSS() [533/565]

+

◆ JSS() [530/562]

@@ -10801,7 +10741,7 @@ Functions
-

◆ JSS() [534/565]

+

◆ JSS() [531/562]

@@ -10819,7 +10759,7 @@ Functions
-

◆ JSS() [535/565]

+

◆ JSS() [532/562]

@@ -10837,7 +10777,7 @@ Functions
-

◆ JSS() [536/565]

+

◆ JSS() [533/562]

@@ -10855,7 +10795,7 @@ Functions
-

◆ JSS() [537/565]

+

◆ JSS() [534/562]

@@ -10873,7 +10813,7 @@ Functions
-

◆ JSS() [538/565]

+

◆ JSS() [535/562]

@@ -10891,7 +10831,7 @@ Functions
-

◆ JSS() [539/565]

+

◆ JSS() [536/562]

@@ -10909,7 +10849,7 @@ Functions
-

◆ JSS() [540/565]

+

◆ JSS() [537/562]

@@ -10927,7 +10867,7 @@ Functions
-

◆ JSS() [541/565]

+

◆ JSS() [538/562]

@@ -10945,7 +10885,7 @@ Functions
-

◆ JSS() [542/565]

+

◆ JSS() [539/562]

@@ -10963,7 +10903,7 @@ Functions
-

◆ JSS() [543/565]

+

◆ JSS() [540/562]

@@ -10981,7 +10921,7 @@ Functions
-

◆ JSS() [544/565]

+

◆ JSS() [541/562]

@@ -10999,7 +10939,7 @@ Functions
-

◆ JSS() [545/565]

+

◆ JSS() [542/562]

@@ -11017,7 +10957,7 @@ Functions
-

◆ JSS() [546/565]

+

◆ JSS() [543/562]

@@ -11035,7 +10975,7 @@ Functions
-

◆ JSS() [547/565]

+

◆ JSS() [544/562]

@@ -11053,7 +10993,7 @@ Functions
-

◆ JSS() [548/565]

+

◆ JSS() [545/562]

@@ -11071,7 +11011,7 @@ Functions
-

◆ JSS() [549/565]

+

◆ JSS() [546/562]

@@ -11089,7 +11029,7 @@ Functions
-

◆ JSS() [550/565]

+

◆ JSS() [547/562]

@@ -11107,7 +11047,7 @@ Functions
-

◆ JSS() [551/565]

+

◆ JSS() [548/562]

@@ -11125,7 +11065,7 @@ Functions
-

◆ JSS() [552/565]

+

◆ JSS() [549/562]

@@ -11143,7 +11083,7 @@ Functions
-

◆ JSS() [553/565]

+

◆ JSS() [550/562]

@@ -11161,7 +11101,7 @@ Functions
-

◆ JSS() [554/565]

+

◆ JSS() [551/562]

@@ -11179,7 +11119,7 @@ Functions
-

◆ JSS() [555/565]

+

◆ JSS() [552/562]

@@ -11197,7 +11137,7 @@ Functions
-

◆ JSS() [556/565]

+

◆ JSS() [553/562]

@@ -11215,7 +11155,7 @@ Functions
-

◆ JSS() [557/565]

+

◆ JSS() [554/562]

@@ -11233,7 +11173,7 @@ Functions
-

◆ JSS() [558/565]

+

◆ JSS() [555/562]

@@ -11251,7 +11191,7 @@ Functions
-

◆ JSS() [559/565]

+

◆ JSS() [556/562]

@@ -11269,7 +11209,7 @@ Functions
-

◆ JSS() [560/565]

+

◆ JSS() [557/562]

@@ -11287,7 +11227,7 @@ Functions
-

◆ JSS() [561/565]

+

◆ JSS() [558/562]

@@ -11305,7 +11245,7 @@ Functions
-

◆ JSS() [562/565]

+

◆ JSS() [559/562]

@@ -11323,7 +11263,7 @@ Functions
-

◆ JSS() [563/565]

+

◆ JSS() [560/562]

@@ -11341,7 +11281,7 @@ Functions
-

◆ JSS() [564/565]

+

◆ JSS() [561/562]

@@ -11359,7 +11299,7 @@ Functions
-

◆ JSS() [565/565]

+

◆ JSS() [562/562]

diff --git a/search/all_a.js b/search/all_a.js index ecd1efd2b2..5a00cd8f5d 100644 --- a/search/all_a.js +++ b/search/all_a.js @@ -51,7 +51,7 @@ var searchData= ['jsonrpcrequest_4814',['JSONRPCRequest',['../namespaceripple.html#aa5bf57e1a7b6f174338fefbdfbc6ded6',1,'ripple']]], ['jsontouint64_4815',['jsonToUint64',['../classripple_1_1PerfLog__test.html#a204aad50a8e6454b4435afb7b97473c5',1,'ripple::PerfLog_test']]], ['jsonwriter_5ftest_4816',['JsonWriter_test',['../classJson_1_1JsonWriter__test.html',1,'Json']]], - ['jss_4817',['JSS',['../namespaceripple_1_1jss.html#aa3f15d192c86a0f1522a1b98e82cb646',1,'ripple::jss::JSS(AL_size)'],['../namespaceripple_1_1jss.html#ac61e73edfd5f2e64e6ebf6eb021e81df',1,'ripple::jss::JSS(AL_hit_rate)'],['../namespaceripple_1_1jss.html#a8db30c15e1db9ea5e0fd5408ba2f2c2c',1,'ripple::jss::JSS(Account)'],['../namespaceripple_1_1jss.html#a3a864855b794ba13acf7c597d2211ba9',1,'ripple::jss::JSS(AccountDelete)'],['../namespaceripple_1_1jss.html#ada80bb65c82d27159382848a22d429be',1,'ripple::jss::JSS(AccountRoot)'],['../namespaceripple_1_1jss.html#a369b5f1021cdb9da296627e05fc75796',1,'ripple::jss::JSS(AccountSet)'],['../namespaceripple_1_1jss.html#a7ff652aa1f30727a88b3939538535980',1,'ripple::jss::JSS(Amendments)'],['../namespaceripple_1_1jss.html#ab07b5297f249d63372389a2f3452896a',1,'ripple::jss::JSS(Amount)'],['../namespaceripple_1_1jss.html#a0e9fa6c30fc4550634d5ae7823acffe1',1,'ripple::jss::JSS(Check)'],['../namespaceripple_1_1jss.html#ab66dd566267dbb672b15f4f65e87b349',1,'ripple::jss::JSS(CheckCancel)'],['../namespaceripple_1_1jss.html#a78c9616d726b95aaddbde47b922c158a',1,'ripple::jss::JSS(CheckCash)'],['../namespaceripple_1_1jss.html#a7ae1310b0f6f95cad5591480b2c14e0b',1,'ripple::jss::JSS(CheckCreate)'],['../namespaceripple_1_1jss.html#a677a739cb9cb21c44ad922ce99d2ec18',1,'ripple::jss::JSS(ClearFlag)'],['../namespaceripple_1_1jss.html#aaf3a34266841e872aed3dd48643ec9d7',1,'ripple::jss::JSS(DeliverMin)'],['../namespaceripple_1_1jss.html#a0564fc95b000147f54d363e7c08362d5',1,'ripple::jss::JSS(DepositPreauth)'],['../namespaceripple_1_1jss.html#a34b307cccb458abb3c759236cd1f680c',1,'ripple::jss::JSS(Destination)'],['../namespaceripple_1_1jss.html#afdc3e555fa475d011b0548f1d2278644',1,'ripple::jss::JSS(DirectoryNode)'],['../namespaceripple_1_1jss.html#af873eca785d9dcfc019b8af9b9e32be4',1,'ripple::jss::JSS(EnableAmendment)'],['../namespaceripple_1_1jss.html#af0bf8a97e8554ab5580b4b7c68897174',1,'ripple::jss::JSS(Escrow)'],['../namespaceripple_1_1jss.html#af5a44636462b3a7a8f16a01b7820988b',1,'ripple::jss::JSS(EscrowCancel)'],['../namespaceripple_1_1jss.html#ab56e3d7a1a82e634836a2352a4f75d89',1,'ripple::jss::JSS(EscrowCreate)'],['../namespaceripple_1_1jss.html#a205e25b14f2a793c7a35cd53e1c5c001',1,'ripple::jss::JSS(EscrowFinish)'],['../namespaceripple_1_1jss.html#a5d027d84a098e41c1569776f89d9ba34',1,'ripple::jss::JSS(Fee)'],['../namespaceripple_1_1jss.html#add0b43cdc17136e275323ba3ef33a740',1,'ripple::jss::JSS(FeeSettings)'],['../namespaceripple_1_1jss.html#a50b91de2bf71ae5bf58ebc8ccccde418',1,'ripple::jss::JSS(Flags)'],['../namespaceripple_1_1jss.html#a3a47f90c201cfbf6f67ebefb609618c1',1,'ripple::jss::JSS(incomplete_shards)'],['../namespaceripple_1_1jss.html#ac3e2ec0dacc9e82ff767b714534e785f',1,'ripple::jss::JSS(Invalid)'],['../namespaceripple_1_1jss.html#aba1bac42850f770c911b803754af95d6',1,'ripple::jss::JSS(LastLedgerSequence)'],['../namespaceripple_1_1jss.html#a31b9ae773dc45e76dbdb16a4429311b6',1,'ripple::jss::JSS(LedgerHashes)'],['../namespaceripple_1_1jss.html#a517b1ac3bc55dab67fc46d054d308d0f',1,'ripple::jss::JSS(LimitAmount)'],['../namespaceripple_1_1jss.html#ac8fb3d5a950a917f0296a3129c541328',1,'ripple::jss::JSS(NFTokenBurn)'],['../namespaceripple_1_1jss.html#a8f1cf7b6ac97c23fa57bf5be54c1a125',1,'ripple::jss::JSS(NFTokenMint)'],['../namespaceripple_1_1jss.html#a0b4e92344813da533188cc06aca48a42',1,'ripple::jss::JSS(NFTokenOffer)'],['../namespaceripple_1_1jss.html#af9f19b47917635c537b15603cbf79508',1,'ripple::jss::JSS(NFTokenAcceptOffer)'],['../namespaceripple_1_1jss.html#a07549a859614baeba638c051da3072c8',1,'ripple::jss::JSS(NFTokenCancelOffer)'],['../namespaceripple_1_1jss.html#a99011cb6a1beb12b0a5466105affb81c',1,'ripple::jss::JSS(NFTokenCreateOffer)'],['../namespaceripple_1_1jss.html#afdf3b5ef83a99353dc891aa4be65f55f',1,'ripple::jss::JSS(NFTokenPage)'],['../namespaceripple_1_1jss.html#aa3b8a8a100795d22bd8ebd1191d04334',1,'ripple::jss::JSS(Offer)'],['../namespaceripple_1_1jss.html#ad386540d68a0b66403620e32067c6b6f',1,'ripple::jss::JSS(OfferCancel)'],['../namespaceripple_1_1jss.html#a543263da8c69111d363fa4d7f6452436',1,'ripple::jss::JSS(OfferCreate)'],['../namespaceripple_1_1jss.html#a10481a73fbbd7aa82ac5f8f4da08dc9b',1,'ripple::jss::JSS(OfferSequence)'],['../namespaceripple_1_1jss.html#aaf85234a34ee722516942773cac03556',1,'ripple::jss::JSS(Paths)'],['../namespaceripple_1_1jss.html#aa569e292fa2ac885b0eca312e81748e1',1,'ripple::jss::JSS(PayChannel)'],['../namespaceripple_1_1jss.html#ad216120b00aafd90ddb45038b485e7ae',1,'ripple::jss::JSS(Payment)'],['../namespaceripple_1_1jss.html#a4053936c64c222862921e37976aa44f0',1,'ripple::jss::JSS(PaymentChannelClaim)'],['../namespaceripple_1_1jss.html#a2aebc07b117cd8a96b846bb6a52c482f',1,'ripple::jss::JSS(PaymentChannelCreate)'],['../namespaceripple_1_1jss.html#a73d3838f3b79655aea8fd816d365d352',1,'ripple::jss::JSS(PaymentChannelFund)'],['../namespaceripple_1_1jss.html#abd9a4a1632f2d66e2cdde77e51973694',1,'ripple::jss::JSS(RippleState)'],['../namespaceripple_1_1jss.html#a762b9a30fa5865acb705007d6119416d',1,'ripple::jss::JSS(SLE_hit_rate)'],['../namespaceripple_1_1jss.html#a18d7874a3fcb6025b19479ad6213e1d9',1,'ripple::jss::JSS(SetFee)'],['../namespaceripple_1_1jss.html#a089a45f999e0ed833457f6e8ea666e53',1,'ripple::jss::JSS(UNLModify)'],['../namespaceripple_1_1jss.html#a8d27790628b0e3d6999142e1dbb7e364',1,'ripple::jss::JSS(SettleDelay)'],['../namespaceripple_1_1jss.html#aeaeec46c8fcc70a0da27549dd300c585',1,'ripple::jss::JSS(SendMax)'],['../namespaceripple_1_1jss.html#a1e87baad67dbd8e9d7cebcf929f585ff',1,'ripple::jss::JSS(Sequence)'],['../namespaceripple_1_1jss.html#ac9c94aaa2b70ad19441beeafc514f321',1,'ripple::jss::JSS(SetFlag)'],['../namespaceripple_1_1jss.html#aaae9a1668d267e6e289190fd03b07846',1,'ripple::jss::JSS(SetRegularKey)'],['../namespaceripple_1_1jss.html#a44fed3fa16b86426fa0897b1c4662479',1,'ripple::jss::JSS(SignerList)'],['../namespaceripple_1_1jss.html#aa8e3c6dc981efac70d8380352a78a98f',1,'ripple::jss::JSS(SignerListSet)'],['../namespaceripple_1_1jss.html#adcbf0a1c425bb779ac641e3447fa1c11',1,'ripple::jss::JSS(SigningPubKey)'],['../namespaceripple_1_1jss.html#a6e8e299d7f23355d94776a0887347cbf',1,'ripple::jss::JSS(TakerGets)'],['../namespaceripple_1_1jss.html#aa82b390bb0a103e48bc0d0afc3f1362a',1,'ripple::jss::JSS(TakerPays)'],['../namespaceripple_1_1jss.html#a513261f38f09eac38cfaacc79cca716a',1,'ripple::jss::JSS(Ticket)'],['../namespaceripple_1_1jss.html#af69b45379ff4fded9363b0ae8ee39c52',1,'ripple::jss::JSS(TicketCreate)'],['../namespaceripple_1_1jss.html#a5d8556bf9a3175aa7f6a95b40dd089e3',1,'ripple::jss::JSS(TxnSignature)'],['../namespaceripple_1_1jss.html#aadca9c9073b4c06631f01e6bdf23b983',1,'ripple::jss::JSS(TransactionType)'],['../namespaceripple_1_1jss.html#a1bb0afe8a513adb11e17df2e7add4df7',1,'ripple::jss::JSS(TransferRate)'],['../namespaceripple_1_1jss.html#a65f0e39c7cf387a7bcb3f46b00fb2b02',1,'ripple::jss::JSS(TrustSet)'],['../namespaceripple_1_1jss.html#ac712f1d90be66bdc07c327a285e31a95',1,'ripple::jss::JSS(aborted)'],['../namespaceripple_1_1jss.html#a8cc4d76f970dbab56ad8cc8952b581a7',1,'ripple::jss::JSS(accepted)'],['../namespaceripple_1_1jss.html#a8c52cfc5bd3b44f34bf65173d4d5e01f',1,'ripple::jss::JSS(account)'],['../namespaceripple_1_1jss.html#a4f68be93e599d1224880936ad033e65b',1,'ripple::jss::JSS(accountState)'],['../namespaceripple_1_1jss.html#a25f19eb852186e5e5fb4ad2bec13c286',1,'ripple::jss::JSS(accountTreeHash)'],['../namespaceripple_1_1jss.html#ab34ed1ee2308c28119b210cd3430ebc0',1,'ripple::jss::JSS(account_data)'],['../namespaceripple_1_1jss.html#a4b9e0df02faf624e6f59a543ace49328',1,'ripple::jss::JSS(account_hash)'],['../namespaceripple_1_1jss.html#ab96081f052c56b37d4afd16dc8d22460',1,'ripple::jss::JSS(account_id)'],['../namespaceripple_1_1jss.html#aec087ae757ba6749af161fbf9e064c9b',1,'ripple::jss::JSS(account_nfts)'],['../namespaceripple_1_1jss.html#a2673c740f247eb00d49884b60943d9d6',1,'ripple::jss::JSS(account_objects)'],['../namespaceripple_1_1jss.html#ac7d0bbd29a6df5afae59c3d33784778d',1,'ripple::jss::JSS(account_root)'],['../namespaceripple_1_1jss.html#a008137e7571fdf90c002f9e8563d6569',1,'ripple::jss::JSS(account_sequence_next)'],['../namespaceripple_1_1jss.html#af4b967d1b5b3992a3cfd7b5cf71ccebc',1,'ripple::jss::JSS(account_sequence_available)'],['../namespaceripple_1_1jss.html#ad3a33adca25cf9078fce877138e4ab69',1,'ripple::jss::JSS(account_history_tx_stream)'],['../namespaceripple_1_1jss.html#ad94173ed88f1e34e2bfd03ee98e93dab',1,'ripple::jss::JSS(account_history_tx_index)'],['../namespaceripple_1_1jss.html#a617092ce024f895abe5f32957de115b4',1,'ripple::jss::JSS(account_history_tx_first)'],['../namespaceripple_1_1jss.html#a1cceb08aa3b1ef65fc48b5ee68e087b4',1,'ripple::jss::JSS(accounts)'],['../namespaceripple_1_1jss.html#aefb1f16bf3daf8f678cf76d181b40b46',1,'ripple::jss::JSS(accounts_proposed)'],['../namespaceripple_1_1jss.html#a79876642f9736c3db303f92a91a90bad',1,'ripple::jss::JSS(action)'],['../namespaceripple_1_1jss.html#aba70083161fb6978e3892bb8cbb26076',1,'ripple::jss::JSS(acquiring)'],['../namespaceripple_1_1jss.html#a7f0559695a7cd6c2432d98e2a02ed320',1,'ripple::jss::JSS(address)'],['../namespaceripple_1_1jss.html#a54f412b0d88f112435dcf0086adc03d8',1,'ripple::jss::JSS(affected)'],['../namespaceripple_1_1jss.html#a11e83bbfe9c41cf1a4e097dff802e63d',1,'ripple::jss::JSS(age)'],['../namespaceripple_1_1jss.html#af7bb47b5e83616e04ae9114c2d0c3a8e',1,'ripple::jss::JSS(alternatives)'],['../namespaceripple_1_1jss.html#a78ad17ba9f3cd952c0f995ce716542a2',1,'ripple::jss::JSS(amendment_blocked)'],['../namespaceripple_1_1jss.html#a9f1a9a511f58627a3f34032b3d22b095',1,'ripple::jss::JSS(amendments)'],['../namespaceripple_1_1jss.html#adf6438aab6db5d1576e44513e50ea1a6',1,'ripple::jss::JSS(amount)'],['../namespaceripple_1_1jss.html#a00a5b11ca23d029ae11ac2521cba99d2',1,'ripple::jss::JSS(api_version)'],['../namespaceripple_1_1jss.html#a475d2415f159a064bca7b7d714545f2a',1,'ripple::jss::JSS(api_version_low)'],['../namespaceripple_1_1jss.html#a894e5350a357338043b5543eb05ee5f9',1,'ripple::jss::JSS(applied)'],['../namespaceripple_1_1jss.html#aaf73127d96f85403418f2a3a8e9e9780',1,'ripple::jss::JSS(asks)'],['../namespaceripple_1_1jss.html#a556712161628a8c62e0bd7796666a426',1,'ripple::jss::JSS(assets)'],['../namespaceripple_1_1jss.html#aa20cc3fa17795d30395032a15b22abaf',1,'ripple::jss::JSS(authorized)'],['../namespaceripple_1_1jss.html#a3fe07845962f562b9351bbfe6337d2bf',1,'ripple::jss::JSS(auth_change)'],['../namespaceripple_1_1jss.html#a1689c6c2501dff6d31411216f4803fc2',1,'ripple::jss::JSS(auth_change_queued)'],['../namespaceripple_1_1jss.html#ada65039482a5cf5ef237f631326a4737',1,'ripple::jss::JSS(available)'],['../namespaceripple_1_1jss.html#a54a90bc889257dfd81e55ead7318f489',1,'ripple::jss::JSS(avg_bps_recv)'],['../namespaceripple_1_1jss.html#acb856bd10e512c19d86311b32e736c67',1,'ripple::jss::JSS(avg_bps_sent)'],['../namespaceripple_1_1jss.html#a8d3ac99ecbd10440e8e42fbb9ef3bd33',1,'ripple::jss::JSS(balance)'],['../namespaceripple_1_1jss.html#a22d2ca178a31207ea154db35d940e13c',1,'ripple::jss::JSS(balances)'],['../namespaceripple_1_1jss.html#a98317c55c194b081a21049c0005f1455',1,'ripple::jss::JSS(base)'],['../namespaceripple_1_1jss.html#a95591af524eb233bdb2b67380a262af3',1,'ripple::jss::JSS(base_fee)'],['../namespaceripple_1_1jss.html#ae1f6ae218b8a43f3a01247a6c2e32d2e',1,'ripple::jss::JSS(base_fee_drops)'],['../namespaceripple_1_1jss.html#a0dc657f2e92d03564502ca2d33bf9a14',1,'ripple::jss::JSS(base_fee_xrp)'],['../namespaceripple_1_1jss.html#ab53f1e5442b9a607f568a3a7d6a8a1eb',1,'ripple::jss::JSS(bids)'],['../namespaceripple_1_1jss.html#afffa2bf3dd597d522e66d72f4b16715b',1,'ripple::jss::JSS(binary)'],['../namespaceripple_1_1jss.html#a2ae0ac445216c042b16acd304e4bba60',1,'ripple::jss::JSS(blob)'],['../namespaceripple_1_1jss.html#a67720dea6165add6786ceed769430d06',1,'ripple::jss::JSS(blobs_v2)'],['../namespaceripple_1_1jss.html#afe151e69000427a198547770d2e6a435',1,'ripple::jss::JSS(books)'],['../namespaceripple_1_1jss.html#abbe5597d53d3751edcfd0abcd37bbcc5',1,'ripple::jss::JSS(both)'],['../namespaceripple_1_1jss.html#a16090621156a35f61afd7ffb67566879',1,'ripple::jss::JSS(both_sides)'],['../namespaceripple_1_1jss.html#acb1ba33f0bd6d83ba18fbe47955e1b9a',1,'ripple::jss::JSS(broadcast)'],['../namespaceripple_1_1jss.html#a2dbe9dcde7829371b2c3fa9d7ae5fa6c',1,'ripple::jss::JSS(build_path)'],['../namespaceripple_1_1jss.html#a5d41f8ada0cd210a47ea5dc84d105b73',1,'ripple::jss::JSS(build_version)'],['../namespaceripple_1_1jss.html#af83eafeb049a2f4e091e116b6dce101d',1,'ripple::jss::JSS(cancel_after)'],['../namespaceripple_1_1jss.html#a62f2cce44125b7ab9f1da7503610bb20',1,'ripple::jss::JSS(can_delete)'],['../namespaceripple_1_1jss.html#a636ea66af76536c1e1ebf421f4771853',1,'ripple::jss::JSS(changes)'],['../namespaceripple_1_1jss.html#ab20d6181608e37a4485d0d3141880312',1,'ripple::jss::JSS(channel_id)'],['../namespaceripple_1_1jss.html#a1f5dc64f057a7dc4ee6dd2c262c272f3',1,'ripple::jss::JSS(channels)'],['../namespaceripple_1_1jss.html#a9a2d94d94db798b705f15f932587329b',1,'ripple::jss::JSS(check)'],['../namespaceripple_1_1jss.html#aceff8d50279309d0b04633645b8e4bbf',1,'ripple::jss::JSS(check_nodes)'],['../namespaceripple_1_1jss.html#a018957e41a9c09f4ac9c64a10505d9c3',1,'ripple::jss::JSS(clear)'],['../namespaceripple_1_1jss.html#af151d9fb24624f9b3b7753eb53e2b488',1,'ripple::jss::JSS(close)'],['../namespaceripple_1_1jss.html#a18b2db60fa2f7d62bb92f69a27732abc',1,'ripple::jss::JSS(close_flags)'],['../namespaceripple_1_1jss.html#a79e23f6d60683f30b689dc4d4f296e8f',1,'ripple::jss::JSS(close_time)'],['../namespaceripple_1_1jss.html#ad6fd1868c22504ddb2335fe9bdbb964a',1,'ripple::jss::JSS(close_time_estimated)'],['../namespaceripple_1_1jss.html#ae9c49c54d55673fdbe0f98eaf2b1498e',1,'ripple::jss::JSS(close_time_human)'],['../namespaceripple_1_1jss.html#a828e3e1ac6ed05e4959773ab91cca81a',1,'ripple::jss::JSS(close_time_offset)'],['../namespaceripple_1_1jss.html#ace51eb83f24e0e9b302a76fe79f8db2f',1,'ripple::jss::JSS(close_time_resolution)'],['../namespaceripple_1_1jss.html#a165df8fbec91afb04a872b3e253b2220',1,'ripple::jss::JSS(closed)'],['../namespaceripple_1_1jss.html#a4e2d085d756f1cb68fce0abbc301d593',1,'ripple::jss::JSS(closed_ledger)'],['../namespaceripple_1_1jss.html#a3ebf1c7c458683d047e84871004e431f',1,'ripple::jss::JSS(cluster)'],['../namespaceripple_1_1jss.html#a37ff9544629a3f3f3c9304a4fa6b72e3',1,'ripple::jss::JSS(code)'],['../namespaceripple_1_1jss.html#a96b1217aff7b43d946abf67137db4dd1',1,'ripple::jss::JSS(command)'],['../namespaceripple_1_1jss.html#a595e875b3abf64a1e0b1188258b6fec1',1,'ripple::jss::JSS(complete)'],['../namespaceripple_1_1jss.html#a8cf35568f265f3ff3e86be414fd59e30',1,'ripple::jss::JSS(complete_ledgers)'],['../namespaceripple_1_1jss.html#a40942d4ff375349468a6bcd3635bd5a3',1,'ripple::jss::JSS(complete_shards)'],['../namespaceripple_1_1jss.html#a0c60508e93d100288b77e535dcc68783',1,'ripple::jss::JSS(consensus)'],['../namespaceripple_1_1jss.html#a8efbbfdebd5c5c73b59183ab96e70327',1,'ripple::jss::JSS(converge_time)'],['../namespaceripple_1_1jss.html#aba21f8c3da711ddec3e9ff44614b6969',1,'ripple::jss::JSS(converge_time_s)'],['../namespaceripple_1_1jss.html#a34bcabf9ad6eb489c5ed0748bea87bb1',1,'ripple::jss::JSS(cookie)'],['../namespaceripple_1_1jss.html#a1c9f4c32e6ff40abb3619b77c3ab6859',1,'ripple::jss::JSS(count)'],['../namespaceripple_1_1jss.html#a5b4a6ab68dee440737c3d7fdd2602871',1,'ripple::jss::JSS(counters)'],['../namespaceripple_1_1jss.html#a692112be4dc2b3084a866259a0ee0b65',1,'ripple::jss::JSS(currency_a)'],['../namespaceripple_1_1jss.html#a9e01b2b112f22799e576f73ed32558c2',1,'ripple::jss::JSS(currency_b)'],['../namespaceripple_1_1jss.html#ae84898736b98bf3b31adefa36765a91f',1,'ripple::jss::JSS(currentShard)'],['../namespaceripple_1_1jss.html#aaf19a6e638c44070d76082827c9a45a8',1,'ripple::jss::JSS(currentShardIndex)'],['../namespaceripple_1_1jss.html#afaf1f1eb0d7d3d1366a80de132c9539a',1,'ripple::jss::JSS(currency)'],['../namespaceripple_1_1jss.html#a36b04fc468f4165afdca8582c12b8661',1,'ripple::jss::JSS(current)'],['../namespaceripple_1_1jss.html#abc322074e7bc31b172ca148510ee211b',1,'ripple::jss::JSS(current_activities)'],['../namespaceripple_1_1jss.html#ac3feb332f7a784c7bdcc65ea1bb59c5f',1,'ripple::jss::JSS(current_ledger_size)'],['../namespaceripple_1_1jss.html#adb9262572038a865a8a96972740373d4',1,'ripple::jss::JSS(current_queue_size)'],['../namespaceripple_1_1jss.html#aec5a2a0a34243ed7abdbf9c1b190faaf',1,'ripple::jss::JSS(data)'],['../namespaceripple_1_1jss.html#ad3773ddc6bd0f25864e58702fe15effb',1,'ripple::jss::JSS(date)'],['../namespaceripple_1_1jss.html#a59351c42acf7193d30ea8c697aec84e2',1,'ripple::jss::JSS(dbKBLedger)'],['../namespaceripple_1_1jss.html#afd28b513ff83ed8471f354e177c27877',1,'ripple::jss::JSS(dbKBTotal)'],['../namespaceripple_1_1jss.html#ae65c4ec94c53671c4e7c37a9b130b451',1,'ripple::jss::JSS(dbKBTransaction)'],['../namespaceripple_1_1jss.html#ad3d18b1e79b66cec6a80ee3c9fc6fe58',1,'ripple::jss::JSS(debug_signing)'],['../namespaceripple_1_1jss.html#a9cd813dc373394e7afc835e1f5810266',1,'ripple::jss::JSS(deletion_blockers_only)'],['../namespaceripple_1_1jss.html#ad49f4c69287015ee8925188acc6477df',1,'ripple::jss::JSS(delivered_amount)'],['../namespaceripple_1_1jss.html#ae8a81aea60229512eea47b8703b9d9e1',1,'ripple::jss::JSS(deposit_authorized)'],['../namespaceripple_1_1jss.html#a506f596977236e4f7a379f1e8977eb24',1,'ripple::jss::JSS(deposit_preauth)'],['../namespaceripple_1_1jss.html#a6fff84046845c0b5d67b93a47ccdd857',1,'ripple::jss::JSS(deprecated)'],['../namespaceripple_1_1jss.html#a3d3975b0ac0a60af806c166d73fb9473',1,'ripple::jss::JSS(descending)'],['../namespaceripple_1_1jss.html#acfb39a018c819fefb53c0f3592714c7f',1,'ripple::jss::JSS(description)'],['../namespaceripple_1_1jss.html#a8fd8eb022bdb13345c6faff5b045a2bc',1,'ripple::jss::JSS(destination)'],['../namespaceripple_1_1jss.html#a8b454341a1834cf0c1e04dbf198a68ee',1,'ripple::jss::JSS(destination_account)'],['../namespaceripple_1_1jss.html#a98b0c210c816cedcd84833b7352a81d8',1,'ripple::jss::JSS(destination_amount)'],['../namespaceripple_1_1jss.html#a5d3f0125e3f6ea39bba35cd91adcebf6',1,'ripple::jss::JSS(destination_currencies)'],['../namespaceripple_1_1jss.html#a93e20077e82505daddf76639df83f270',1,'ripple::jss::JSS(destination_tag)'],['../namespaceripple_1_1jss.html#a33f43524db42b7b02b0a66d6dfb03a32',1,'ripple::jss::JSS(details)'],['../namespaceripple_1_1jss.html#a875aa8bd78378ce579f180f1134abfe6',1,'ripple::jss::JSS(dir_entry)'],['../namespaceripple_1_1jss.html#aecaf77ad6aa35e4523db08d31a8d0359',1,'ripple::jss::JSS(dir_index)'],['../namespaceripple_1_1jss.html#aa1b1c547651f7d0534ce00c3d045e84e',1,'ripple::jss::JSS(dir_root)'],['../namespaceripple_1_1jss.html#a3e89c1411b1c83620ab26594f0e9fe3e',1,'ripple::jss::JSS(directory)'],['../namespaceripple_1_1jss.html#a2add4259b579ec0b7b577ac79cd4547b',1,'ripple::jss::JSS(domain)'],['../namespaceripple_1_1jss.html#afb7c4905c64523f9257b4e3ad37c96e7',1,'ripple::jss::JSS(drops)'],['../namespaceripple_1_1jss.html#acd0817ff6c9da856d6a7198b1507b7bf',1,'ripple::jss::JSS(duration_us)'],['../namespaceripple_1_1jss.html#ad68912f634979603fa9734eeb6512655',1,'ripple::jss::JSS(effective)'],['../namespaceripple_1_1jss.html#a398e71b098c4089a757958062738d764',1,'ripple::jss::JSS(enabled)'],['../namespaceripple_1_1jss.html#ae5118b2033ffb5fce9d6710965a319a3',1,'ripple::jss::JSS(engine_result)'],['../namespaceripple_1_1jss.html#afeb39ec5fcd8c2355e89ca0fc8cae300',1,'ripple::jss::JSS(engine_result_code)'],['../namespaceripple_1_1jss.html#a0b4fe6d4a69b64493bc49c78619229e1',1,'ripple::jss::JSS(engine_result_message)'],['../namespaceripple_1_1jss.html#a29f075af7a947aa1eeb9c9c017aa1c5b',1,'ripple::jss::JSS(ephemeral_key)'],['../namespaceripple_1_1jss.html#aae6e3761f93b5fcfb075e67f99b4602e',1,'ripple::jss::JSS(error)'],['../namespaceripple_1_1jss.html#a0370f775a0d14ee0c9dfeac8b4806a16',1,'ripple::jss::JSS(errored)'],['../namespaceripple_1_1jss.html#a6d5680deffd5a636d1c563d939e27dde',1,'ripple::jss::JSS(error_code)'],['../namespaceripple_1_1jss.html#a2704d55bdbedc84e1cc40d1357fa788a',1,'ripple::jss::JSS(error_exception)'],['../namespaceripple_1_1jss.html#a61623fb7591f317d23f3811bb3caef2b',1,'ripple::jss::JSS(error_message)'],['../namespaceripple_1_1jss.html#a7206959dc2bba27b954f6acb9a6d050c',1,'ripple::jss::JSS(escrow)'],['../namespaceripple_1_1jss.html#a0b774122d2fae57d48a179cceda99c65',1,'ripple::jss::JSS(expand)'],['../namespaceripple_1_1jss.html#a21cf049d34c243a54727c4b6a8650253',1,'ripple::jss::JSS(expected_date)'],['../namespaceripple_1_1jss.html#af0ec96bf32d542e3bf27120e5a0538f2',1,'ripple::jss::JSS(expected_date_UTC)'],['../namespaceripple_1_1jss.html#ad3faef86179a660bc23170e096a212fd',1,'ripple::jss::JSS(expected_ledger_size)'],['../namespaceripple_1_1jss.html#a2951f3d0d0e756b9623b03e10cc83e13',1,'ripple::jss::JSS(expiration)'],['../namespaceripple_1_1jss.html#afb656d6325fef64a1e10399568735a0b',1,'ripple::jss::JSS(fail_hard)'],['../namespaceripple_1_1jss.html#ac15059fe46cbfcd61fd073c0af432a7c',1,'ripple::jss::JSS(failed)'],['../namespaceripple_1_1jss.html#ab7ad13f436fe30db027ba0ee37f4f33f',1,'ripple::jss::JSS(feature)'],['../namespaceripple_1_1jss.html#a0b4d7ef0eed5b9d06c02d6c883fcd387',1,'ripple::jss::JSS(features)'],['../namespaceripple_1_1jss.html#a58bbfb30a5805800847e0e9bf338a247',1,'ripple::jss::JSS(fee)'],['../namespaceripple_1_1jss.html#ae6d0c17a1b5c98b3a1f482f1205d9a12',1,'ripple::jss::JSS(fee_base)'],['../namespaceripple_1_1jss.html#a391fe9a28d31e33c6fc13475f57cf2c9',1,'ripple::jss::JSS(fee_div_max)'],['../namespaceripple_1_1jss.html#af0b1e7a8d76a926b01b7eaa028bbea46',1,'ripple::jss::JSS(fee_level)'],['../namespaceripple_1_1jss.html#aca8f86c3e5e6eb887899e7ee8bc0df7e',1,'ripple::jss::JSS(fee_mult_max)'],['../namespaceripple_1_1jss.html#a215d4f60eff867cd2c084e47e50a634e',1,'ripple::jss::JSS(fee_ref)'],['../namespaceripple_1_1jss.html#a18a9254962f7b987daca625b58b97ab7',1,'ripple::jss::JSS(fetch_pack)'],['../namespaceripple_1_1jss.html#a1d3b972f322b00065a0ef477ae22ba7b',1,'ripple::jss::JSS(first)'],['../namespaceripple_1_1jss.html#a18c045692285619aa6c595092710a51f',1,'ripple::jss::JSS(firstSequence)'],['../namespaceripple_1_1jss.html#af8a54cfef2aae02c9aeea61822e2f8c8',1,'ripple::jss::JSS(firstShardIndex)'],['../namespaceripple_1_1jss.html#a032838c5d8db1bdc76bcab5468995e9c',1,'ripple::jss::JSS(finished)'],['../namespaceripple_1_1jss.html#a46bf0460849388d3c788a79475da7b9e',1,'ripple::jss::JSS(fix_txns)'],['../namespaceripple_1_1jss.html#ab015225765c7465956d7248de13fa836',1,'ripple::jss::JSS(flags)'],['../namespaceripple_1_1jss.html#abb4f36b2f14a61c19f6cb026fb5a2cde',1,'ripple::jss::JSS(forward)'],['../namespaceripple_1_1jss.html#ae11bc6df38ffffd6cdba11058d9f450e',1,'ripple::jss::JSS(freeze)'],['../namespaceripple_1_1jss.html#abadfba906869530654549a2903f3b467',1,'ripple::jss::JSS(freeze_peer)'],['../namespaceripple_1_1jss.html#abae39ee9010b7cecf956add9ae5c9e81',1,'ripple::jss::JSS(frozen_balances)'],['../namespaceripple_1_1jss.html#ad5c07ed50d451e1da919232d119c0966',1,'ripple::jss::JSS(full)'],['../namespaceripple_1_1jss.html#adc78f312cddb8bb99c88c21db7cb7d4e',1,'ripple::jss::JSS(full_reply)'],['../namespaceripple_1_1jss.html#a237dcb272333b56a5ee89cc6147a5ecd',1,'ripple::jss::JSS(fullbelow_size)'],['../namespaceripple_1_1jss.html#a83ae7878ac025ef9562deca56776439f',1,'ripple::jss::JSS(good)'],['../namespaceripple_1_1jss.html#ad39f40f57e1aaa1121515da7cce1cac9',1,'ripple::jss::JSS(hash)'],['../namespaceripple_1_1jss.html#afaa2945fd9dd118b9a3bb058bc22cb3c',1,'ripple::jss::JSS(hashes)'],['../namespaceripple_1_1jss.html#a29703852e6ac4d8e5e4c0adeb7a03632',1,'ripple::jss::JSS(have_header)'],['../namespaceripple_1_1jss.html#a0ed3527e30f4af562c1b52210d9a22f8',1,'ripple::jss::JSS(have_state)'],['../namespaceripple_1_1jss.html#ad9e4342ddb4e120f1f2deba85b8888b0',1,'ripple::jss::JSS(have_transactions)'],['../namespaceripple_1_1jss.html#afba54f374631b9f33350dce8c358f447',1,'ripple::jss::JSS(high)'],['../namespaceripple_1_1jss.html#ac2d270ee51d74be36d4a1a6ecc9a33d5',1,'ripple::jss::JSS(highest_sequence)'],['../namespaceripple_1_1jss.html#a820e84cdb69d387b1cc0e3836df0742f',1,'ripple::jss::JSS(highest_ticket)'],['../namespaceripple_1_1jss.html#afc5eb500ed30b44d1cdba061f4cbf59f',1,'ripple::jss::JSS(historical_perminute)'],['../namespaceripple_1_1jss.html#a46834411d84b7901465087a4ad98043a',1,'ripple::jss::JSS(hostid)'],['../namespaceripple_1_1jss.html#ae1d31e9c62441a6aa13535443476724c',1,'ripple::jss::JSS(hotwallet)'],['../namespaceripple_1_1jss.html#aec7d9c55f43c8b74ed535a2cbd8efeb0',1,'ripple::jss::JSS(id)'],['../namespaceripple_1_1jss.html#aafdbabe0d2d3fbcc03944c6cce33e9f3',1,'ripple::jss::JSS(ident)'],['../namespaceripple_1_1jss.html#aaa69a01a572916e73ccf2f4d513f9ab6',1,'ripple::jss::JSS(ignore_default)'],['../namespaceripple_1_1jss.html#abef52d6643f645cbb8864a134912bb25',1,'ripple::jss::JSS(inLedger)'],['../namespaceripple_1_1jss.html#ac124c60c2739c9837a88336162221c0b',1,'ripple::jss::JSS(inbound)'],['../namespaceripple_1_1jss.html#a34e8647bf74e7c136db537717e02f8f7',1,'ripple::jss::JSS(index)'],['../namespaceripple_1_1jss.html#a6f04c49d9122ed3be42c66692af3b3ae',1,'ripple::jss::JSS(info)'],['../namespaceripple_1_1jss.html#a98b32b94f74b793aa56b9b38c754e0c4',1,'ripple::jss::JSS(initial_sync_duration_us)'],['../namespaceripple_1_1jss.html#a2a907e5f04837f9c2388b648d1c3eeb2',1,'ripple::jss::JSS(internal_command)'],['../namespaceripple_1_1jss.html#ac8a338bdcf84803d61a5bc78810372fb',1,'ripple::jss::JSS(invalid_API_version)'],['../namespaceripple_1_1jss.html#af1177a9dfd442428127cf177737736a2',1,'ripple::jss::JSS(io_latency_ms)'],['../namespaceripple_1_1jss.html#a862f68b5891afa2eb547ec3f9b682d5f',1,'ripple::jss::JSS(ip)'],['../namespaceripple_1_1jss.html#a7e299a1871aecf886aa10b578c6545c0',1,'ripple::jss::JSS(issuer)'],['../namespaceripple_1_1jss.html#a8e2c359715479cdc1457576fcdaa1bce',1,'ripple::jss::JSS(job)'],['../namespaceripple_1_1jss.html#a173c811816e2dc2171e713b4cb4ca8bf',1,'ripple::jss::JSS(job_queue)'],['../namespaceripple_1_1jss.html#a4180ceb26394ec47ed00284996c9b5d8',1,'ripple::jss::JSS(jobs)'],['../namespaceripple_1_1jss.html#a0afcf3006ab72333c31530b7351857c6',1,'ripple::jss::JSS(jsonrpc)'],['../namespaceripple_1_1jss.html#a641417496c5a7634abfc852bbd0eb9d7',1,'ripple::jss::JSS(jq_trans_overflow)'],['../namespaceripple_1_1jss.html#adecb26ce36b6b9762d766e2ab3396dc9',1,'ripple::jss::JSS(kept)'],['../namespaceripple_1_1jss.html#a406f85e2c5ae01882773cb4b09070f2b',1,'ripple::jss::JSS(key)'],['../namespaceripple_1_1jss.html#a427a778204fa66a55c3683ed000c1e9c',1,'ripple::jss::JSS(key_type)'],['../namespaceripple_1_1jss.html#aeae6972c9a347179222e4c3ca437ea42',1,'ripple::jss::JSS(latency)'],['../namespaceripple_1_1jss.html#a3ff236a09100028b3cf7649f08742e01',1,'ripple::jss::JSS(last)'],['../namespaceripple_1_1jss.html#a0571e3121cad11e1a751f2de565931c3',1,'ripple::jss::JSS(lastSequence)'],['../namespaceripple_1_1jss.html#ae9ae06a52b93b74cdefe1edbe438c4bd',1,'ripple::jss::JSS(lastShardIndex)'],['../namespaceripple_1_1jss.html#ab46428949d3e39914238f5f8cc0f2551',1,'ripple::jss::JSS(last_close)'],['../namespaceripple_1_1jss.html#a7ee6521d32812087edec35dc47ca1781',1,'ripple::jss::JSS(last_refresh_time)'],['../namespaceripple_1_1jss.html#aef21c6b9d2a8339207b1cb4949f24e72',1,'ripple::jss::JSS(last_refresh_status)'],['../namespaceripple_1_1jss.html#a1714928cf2b78f86feaf169a5a52c644',1,'ripple::jss::JSS(last_refresh_message)'],['../namespaceripple_1_1jss.html#a992bc8de5c39f87a28aa26d343c11e32',1,'ripple::jss::JSS(ledger)'],['../namespaceripple_1_1jss.html#a675bf95ddfed251aeedce8eaaa748cbe',1,'ripple::jss::JSS(ledger_current_index)'],['../namespaceripple_1_1jss.html#af3306e6b1b2d6b4ee00372b94eb7ef0a',1,'ripple::jss::JSS(ledger_data)'],['../namespaceripple_1_1jss.html#aaeb14d8510ef99859f296a789e51f088',1,'ripple::jss::JSS(ledger_hash)'],['../namespaceripple_1_1jss.html#a08df679178e9ac6201ca5d85d3bf8e38',1,'ripple::jss::JSS(ledger_hit_rate)'],['../namespaceripple_1_1jss.html#a2c7231c67e2a5a5dab79fde4e24ce6d5',1,'ripple::jss::JSS(ledger_index)'],['../namespaceripple_1_1jss.html#a047aecac6e8b1272f2f1bd6bd4f59b6b',1,'ripple::jss::JSS(ledger_index_max)'],['../namespaceripple_1_1jss.html#ac4d1c3618248ee0fadfc5ebdaf90ab21',1,'ripple::jss::JSS(ledger_index_min)'],['../namespaceripple_1_1jss.html#ab06c7c81e25495e0466163e3b6cc5ecc',1,'ripple::jss::JSS(ledger_max)'],['../namespaceripple_1_1jss.html#a8f9dcace83a46f1f1e12e10bafaec465',1,'ripple::jss::JSS(ledger_min)'],['../namespaceripple_1_1jss.html#a5b7555b733a4e1a0c5ec94f30751f470',1,'ripple::jss::JSS(ledger_time)'],['../namespaceripple_1_1jss.html#a72b110f05042e0e6da706fe6aadac75d',1,'ripple::jss::JSS(levels)'],['../namespaceripple_1_1jss.html#aa3afe635c40b7eba919b88f7d6ffa058',1,'ripple::jss::JSS(limit)'],['../namespaceripple_1_1jss.html#a5bea40cc26d67ea2f069fd6bc22d4b98',1,'ripple::jss::JSS(limit_peer)'],['../namespaceripple_1_1jss.html#ab9c3372089b08854d1edc3d7a8ac442c',1,'ripple::jss::JSS(lines)'],['../namespaceripple_1_1jss.html#a556ba5c427b4de420ba4fa95ccc8588b',1,'ripple::jss::JSS(list)'],['../namespaceripple_1_1jss.html#a4c6cccb2d97e9d74e0e7b84e638f4cbb',1,'ripple::jss::JSS(load)'],['../namespaceripple_1_1jss.html#a383ec9b21645a71314feed235281ec3d',1,'ripple::jss::JSS(load_base)'],['../namespaceripple_1_1jss.html#abf0c49f3f1d0b325d70e51bcad949eed',1,'ripple::jss::JSS(load_factor)'],['../namespaceripple_1_1jss.html#a6802d5c244124e8668e648c1eb35d13f',1,'ripple::jss::JSS(load_factor_cluster)'],['../namespaceripple_1_1jss.html#a90d596bc1be1e33aae7c1b4bbab85788',1,'ripple::jss::JSS(load_factor_fee_escalation)'],['../namespaceripple_1_1jss.html#aa34ec46a165e26160681a9bf02f47e8e',1,'ripple::jss::JSS(load_factor_fee_queue)'],['../namespaceripple_1_1jss.html#a13ba923543ae78606621a921f6d73f2f',1,'ripple::jss::JSS(load_factor_fee_reference)'],['../namespaceripple_1_1jss.html#a6a11292900910bfbc6250dc4b64dcadc',1,'ripple::jss::JSS(load_factor_local)'],['../namespaceripple_1_1jss.html#a4ed9602bfc5613fb72bba4bf6578b9b6',1,'ripple::jss::JSS(load_factor_net)'],['../namespaceripple_1_1jss.html#a245b4eda0af317f71dd64201e5de6c85',1,'ripple::jss::JSS(load_factor_server)'],['../namespaceripple_1_1jss.html#a373f4468b245935e969e055534b02dac',1,'ripple::jss::JSS(load_fee)'],['../namespaceripple_1_1jss.html#abd1f5c593f4a84b51f61fb98b1947f3f',1,'ripple::jss::JSS(local)'],['../namespaceripple_1_1jss.html#aac8e8f4c448f28283f3260e5726e16b7',1,'ripple::jss::JSS(local_txs)'],['../namespaceripple_1_1jss.html#a066a511baab3a42710ee18b1467d0e64',1,'ripple::jss::JSS(local_static_keys)'],['../namespaceripple_1_1jss.html#ac5483f7a3d46b7255c08b6ed06b59328',1,'ripple::jss::JSS(low)'],['../namespaceripple_1_1jss.html#ae22c1de160239666c2978a4ed8d0c08d',1,'ripple::jss::JSS(lowest_sequence)'],['../namespaceripple_1_1jss.html#a390ad84f4ee9211b8dfc8f9ba4afb1c9',1,'ripple::jss::JSS(lowest_ticket)'],['../namespaceripple_1_1jss.html#af626284ae3dc6049b95e9b0e4f7a2e15',1,'ripple::jss::JSS(majority)'],['../namespaceripple_1_1jss.html#ad2bd13dd26ddb7dcbab1a30d0ad5d585',1,'ripple::jss::JSS(manifest)'],['../namespaceripple_1_1jss.html#ac0bfb550d212b03bfd8e2148bd045177',1,'ripple::jss::JSS(marker)'],['../namespaceripple_1_1jss.html#adc0d3b81f16a66efb835a20963fa7a91',1,'ripple::jss::JSS(master_key)'],['../namespaceripple_1_1jss.html#a6ffbe65da7d08e8aa9fbdd569c3f803f',1,'ripple::jss::JSS(master_seed)'],['../namespaceripple_1_1jss.html#a90cb226d586e3a3974187f5a4917ccb8',1,'ripple::jss::JSS(master_seed_hex)'],['../namespaceripple_1_1jss.html#a2bb59f1e2ccc8fcf1022765b055ac8e8',1,'ripple::jss::JSS(master_signature)'],['../namespaceripple_1_1jss.html#a8c5be9f9c158869fbe745859a13c0a39',1,'ripple::jss::JSS(max_ledger)'],['../namespaceripple_1_1jss.html#af778b000f84666324b93a0c06a98b6e1',1,'ripple::jss::JSS(max_queue_size)'],['../namespaceripple_1_1jss.html#a8c3c692cc17a76c63a0961c9dcfd8792',1,'ripple::jss::JSS(max_spend_drops)'],['../namespaceripple_1_1jss.html#a2a597026393c9d7ab75e808201a8e7ed',1,'ripple::jss::JSS(max_spend_drops_total)'],['../namespaceripple_1_1jss.html#aedb5564b792c8255001275b457df1cd7',1,'ripple::jss::JSS(median_fee)'],['../namespaceripple_1_1jss.html#a4f81aef1a9bcae2f074b31ee373b94d9',1,'ripple::jss::JSS(median_level)'],['../namespaceripple_1_1jss.html#a5cd54ed1066847300869c4f6f4b624be',1,'ripple::jss::JSS(message)'],['../namespaceripple_1_1jss.html#a5a96309cb3f861cef5cd4f2ac6a44625',1,'ripple::jss::JSS(meta)'],['../namespaceripple_1_1jss.html#a90582d8dae6b02654a960471c58a6dfd',1,'ripple::jss::JSS(metaData)'],['../namespaceripple_1_1jss.html#a7bdf102a1b27098110dead1372aa9b5e',1,'ripple::jss::JSS(metadata)'],['../namespaceripple_1_1jss.html#a5d9075b1c58ae9c75f9592da61924c93',1,'ripple::jss::JSS(method)'],['../namespaceripple_1_1jss.html#a8681bb5e03eefa86e3659a614ebd07ff',1,'ripple::jss::JSS(methods)'],['../namespaceripple_1_1jss.html#afd388f8eb1116c9890c0b9b66f9b4698',1,'ripple::jss::JSS(metrics)'],['../namespaceripple_1_1jss.html#a0036690b962026ff10c95307a5a65b87',1,'ripple::jss::JSS(min_count)'],['../namespaceripple_1_1jss.html#a544b34a294393261eed39f96860ef21d',1,'ripple::jss::JSS(min_ledger)'],['../namespaceripple_1_1jss.html#a3ec35c73fd9a79fbd39d141d9490f1b5',1,'ripple::jss::JSS(minimum_fee)'],['../namespaceripple_1_1jss.html#a43c27472d5aa7bfd0268742c7fa9d78a',1,'ripple::jss::JSS(minimum_level)'],['../namespaceripple_1_1jss.html#a435c67595d4fb9eda997fc38148c5992',1,'ripple::jss::JSS(missingCommand)'],['../namespaceripple_1_1jss.html#a7d4c42927e3deaf2718257b187945bd1',1,'ripple::jss::JSS(name)'],['../namespaceripple_1_1jss.html#a4d1bee255ff817c13039f01b578bd04e',1,'ripple::jss::JSS(needed_state_hashes)'],['../namespaceripple_1_1jss.html#a0873b466701543ba534e57b4f29c87ce',1,'ripple::jss::JSS(needed_transaction_hashes)'],['../namespaceripple_1_1jss.html#ade22bdc9faf2b34a0ad6895de567b17e',1,'ripple::jss::JSS(network_id)'],['../namespaceripple_1_1jss.html#a70f97400a3740fd6ff4a4808d96fa385',1,'ripple::jss::JSS(network_ledger)'],['../namespaceripple_1_1jss.html#a5314dd903b04bfb0be2a2fb5e9f5e943',1,'ripple::jss::JSS(next_refresh_time)'],['../namespaceripple_1_1jss.html#a0f208889b443f105e3d4d2a37d89dff2',1,'ripple::jss::JSS(nft_id)'],['../namespaceripple_1_1jss.html#a0d2354620b5d5fd20e08e865fbaf4dec',1,'ripple::jss::JSS(nft_offer)'],['../namespaceripple_1_1jss.html#af96e6b8ada045d9895c3b13e2fdd1f5f',1,'ripple::jss::JSS(nft_offer_index)'],['../namespaceripple_1_1jss.html#a6408f29a93408770cb7124876ad935ad',1,'ripple::jss::JSS(nft_page)'],['../namespaceripple_1_1jss.html#ac903b8674b95c58a9bf72e1f54a78ac7',1,'ripple::jss::JSS(nft_serial)'],['../namespaceripple_1_1jss.html#a098e303535d59f2a1c222346648af4e1',1,'ripple::jss::JSS(no_ripple)'],['../namespaceripple_1_1jss.html#a62085c1b921768741e00af54424dabe8',1,'ripple::jss::JSS(no_ripple_peer)'],['../namespaceripple_1_1jss.html#a5ce1412776f6628085ada99ae860c496',1,'ripple::jss::JSS(node)'],['../namespaceripple_1_1jss.html#a0cdc2371c0dd8d4f4faa58126a532193',1,'ripple::jss::JSS(node_binary)'],['../namespaceripple_1_1jss.html#a89afdea55b77ffd7c0c5f92ec55f6f06',1,'ripple::jss::JSS(node_read_bytes)'],['../namespaceripple_1_1jss.html#a1f76320b1f860ab0e2510496b25f84d5',1,'ripple::jss::JSS(node_read_errors)'],['../namespaceripple_1_1jss.html#a4d767ff4480ea95fef87f65280c32341',1,'ripple::jss::JSS(node_read_retries)'],['../namespaceripple_1_1jss.html#a37c493225502be5ff30227fb6f5a8ea9',1,'ripple::jss::JSS(node_reads_hit)'],['../namespaceripple_1_1jss.html#a22fac9837a20d746c926090feccfde41',1,'ripple::jss::JSS(node_reads_total)'],['../namespaceripple_1_1jss.html#a2d1927386a4f598a1fac81248719eb29',1,'ripple::jss::JSS(node_reads_duration_us)'],['../namespaceripple_1_1jss.html#ade0100e0c0f7185673cb60099f69ef39',1,'ripple::jss::JSS(node_size)'],['../namespaceripple_1_1jss.html#a115fc43a11cbf6662f80bc28e7cf9cb7',1,'ripple::jss::JSS(nodestore)'],['../namespaceripple_1_1jss.html#aebc8390afa967a29debdc5bf919f29a5',1,'ripple::jss::JSS(node_writes)'],['../namespaceripple_1_1jss.html#ae1a55e6dc828b545c246bce2fd5f612b',1,'ripple::jss::JSS(node_written_bytes)'],['../namespaceripple_1_1jss.html#a77238346f1b44643500210cd3d424553',1,'ripple::jss::JSS(node_writes_duration_us)'],['../namespaceripple_1_1jss.html#af32cc33872d30172ae95d39280f76c0d',1,'ripple::jss::JSS(node_write_retries)'],['../namespaceripple_1_1jss.html#a344b30d62916b0ac04ca7c99322b4c4d',1,'ripple::jss::JSS(node_writes_delayed)'],['../namespaceripple_1_1jss.html#a4c1c6394675679df4cbccfcf6669e415',1,'ripple::jss::JSS(obligations)'],['../namespaceripple_1_1jss.html#a01ab5926a0cc9e85eb8cabf137949287',1,'ripple::jss::JSS(offer)'],['../namespaceripple_1_1jss.html#a0d05c76a6523c8b9322876f900118c12',1,'ripple::jss::JSS(offers)'],['../namespaceripple_1_1jss.html#add2923b71f2b172f1194f98309a2e241',1,'ripple::jss::JSS(offline)'],['../namespaceripple_1_1jss.html#a6cbba2e11f288b221785c2ba8c7ef660',1,'ripple::jss::JSS(offset)'],['../namespaceripple_1_1jss.html#a74a2a83ae37909eea587bb4fc93d4d3d',1,'ripple::jss::JSS(open)'],['../namespaceripple_1_1jss.html#a17303714c81b985a736e2a6d4a377ed7',1,'ripple::jss::JSS(open_ledger_cost)'],['../namespaceripple_1_1jss.html#a1958ad7592fcfbe13fdceb1e965b54cf',1,'ripple::jss::JSS(open_ledger_fee)'],['../namespaceripple_1_1jss.html#a1f5eeb938cd57eaec4f680ec5e626051',1,'ripple::jss::JSS(open_ledger_level)'],['../namespaceripple_1_1jss.html#aa9cfe2151c29a8c510fc66523d88c409',1,'ripple::jss::JSS(owner)'],['../namespaceripple_1_1jss.html#a6984e6a016f86b4559beb39101d970ad',1,'ripple::jss::JSS(owner_funds)'],['../namespaceripple_1_1jss.html#a54d8e4416540559d3b2c7f68e9160303',1,'ripple::jss::JSS(page_index)'],['../namespaceripple_1_1jss.html#af39b84953ad76f2caab306726e10cdce',1,'ripple::jss::JSS(params)'],['../namespaceripple_1_1jss.html#a72de494d7ba36760386c50b2d947fd18',1,'ripple::jss::JSS(parent_close_time)'],['../namespaceripple_1_1jss.html#aa9ba5e244629a133b8c6c24dd5388e6d',1,'ripple::jss::JSS(parent_hash)'],['../namespaceripple_1_1jss.html#afd0df8b37f6f52b0f690338508187086',1,'ripple::jss::JSS(partition)'],['../namespaceripple_1_1jss.html#a86461ac8d22c5d7011d8a5a2438095b3',1,'ripple::jss::JSS(passphrase)'],['../namespaceripple_1_1jss.html#a41a4b92b7d4a072018c395e42d7eb867',1,'ripple::jss::JSS(password)'],['../namespaceripple_1_1jss.html#af624b4728b1943720cbe71f5ff390943',1,'ripple::jss::JSS(paths)'],['../namespaceripple_1_1jss.html#abb3be6225bed3b89300ea12e3d48fc16',1,'ripple::jss::JSS(paths_canonical)'],['../namespaceripple_1_1jss.html#a6c0933e11f6a25f959ff939a3045e0ac',1,'ripple::jss::JSS(paths_computed)'],['../namespaceripple_1_1jss.html#a3d861d419d20d538b86e2ab710673645',1,'ripple::jss::JSS(payment_channel)'],['../namespaceripple_1_1jss.html#a59b7bc58e5605b228176d8b7509a8c65',1,'ripple::jss::JSS(peer)'],['../namespaceripple_1_1jss.html#ad8ff0d62f2883de7f8905311ed406103',1,'ripple::jss::JSS(peer_authorized)'],['../namespaceripple_1_1jss.html#ad8bb0359456f031169a4c6ddec5c129a',1,'ripple::jss::JSS(peer_id)'],['../namespaceripple_1_1jss.html#a7e1a66a281df46a5ed4e01b14c899e38',1,'ripple::jss::JSS(peers)'],['../namespaceripple_1_1jss.html#a88d37f07b853e2c1f60a31f424ffd5ce',1,'ripple::jss::JSS(peer_disconnects)'],['../namespaceripple_1_1jss.html#a129c4f438a7222b0d4ab097a9b4bd814',1,'ripple::jss::JSS(peer_disconnects_resources)'],['../namespaceripple_1_1jss.html#aadf5b61855beac3c7038de8009f4ce73',1,'ripple::jss::JSS(port)'],['../namespaceripple_1_1jss.html#afdb2d45c51e33968c1ff8ae7253e74f6',1,'ripple::jss::JSS(previous)'],['../namespaceripple_1_1jss.html#acdeff6961b45ef1da68dce5b1e7335de',1,'ripple::jss::JSS(previous_ledger)'],['../namespaceripple_1_1jss.html#aae7a0aeb3b8036a6a881a0e8d5154625',1,'ripple::jss::JSS(proof)'],['../namespaceripple_1_1jss.html#a3a888a411dcef169a956cae089a33573',1,'ripple::jss::JSS(propose_seq)'],['../namespaceripple_1_1jss.html#a109e160e7f01eda1c4e0b2f62b044f3c',1,'ripple::jss::JSS(proposers)'],['../namespaceripple_1_1jss.html#addd2ba49519cf4c184288ab57b3a4115',1,'ripple::jss::JSS(protocol)'],['../namespaceripple_1_1jss.html#aca834f8a93d2b4610b0da7c0095978af',1,'ripple::jss::JSS(proxied)'],['../namespaceripple_1_1jss.html#a156846a12e4481025f044acf1382c383',1,'ripple::jss::JSS(pubkey_node)'],['../namespaceripple_1_1jss.html#a40e55c8a5223e39f492bfb1215cbc9aa',1,'ripple::jss::JSS(pubkey_publisher)'],['../namespaceripple_1_1jss.html#aebc6a9c0935c49aba5010b9026ce880e',1,'ripple::jss::JSS(pubkey_validator)'],['../namespaceripple_1_1jss.html#ae45158a42c79f0f50aed8c8cc0553d30',1,'ripple::jss::JSS(public_key)'],['../namespaceripple_1_1jss.html#a6a2f90321e9be56fd5a344c431aa95ea',1,'ripple::jss::JSS(public_key_hex)'],['../namespaceripple_1_1jss.html#a671b12f8ca23cfd12363ec4b1f723d6b',1,'ripple::jss::JSS(published_ledger)'],['../namespaceripple_1_1jss.html#aa75a8d5cb609d4cceb2d15eb13212e43',1,'ripple::jss::JSS(publisher_lists)'],['../namespaceripple_1_1jss.html#a27f2611bb5cb26cb7dd7523bc0ad0dee',1,'ripple::jss::JSS(quality)'],['../namespaceripple_1_1jss.html#ad03aa2d2fd83909d2e237a463010f121',1,'ripple::jss::JSS(quality_in)'],['../namespaceripple_1_1jss.html#a65e4d5e35f00f6cdae89ba256619d4ef',1,'ripple::jss::JSS(quality_out)'],['../namespaceripple_1_1jss.html#a7151e1b6cd5e6b1be198a56cd01597ef',1,'ripple::jss::JSS(queue)'],['../namespaceripple_1_1jss.html#a1b1fb3bd7ac8c3663af34bd384ae2355',1,'ripple::jss::JSS(queue_data)'],['../namespaceripple_1_1jss.html#ad88d8e74f87b163bf99549092aaf4b20',1,'ripple::jss::JSS(queued)'],['../namespaceripple_1_1jss.html#a9ccfabf15341bdacf0ac717557a0af23',1,'ripple::jss::JSS(queued_duration_us)'],['../namespaceripple_1_1jss.html#ae32a9da487a082aff61a78419b1a4b44',1,'ripple::jss::JSS(random)'],['../namespaceripple_1_1jss.html#ae2351e897c6dca3c3aab25bb17086100',1,'ripple::jss::JSS(raw_meta)'],['../namespaceripple_1_1jss.html#a47b7654a9a4eef538dc7f309780e061c',1,'ripple::jss::JSS(receive_currencies)'],['../namespaceripple_1_1jss.html#a4b7000091c118b53355d3b8d198d3971',1,'ripple::jss::JSS(reference_level)'],['../namespaceripple_1_1jss.html#a266812190eb5b39cf50d8cff6301fd68',1,'ripple::jss::JSS(refresh_interval)'],['../namespaceripple_1_1jss.html#a853d712e533630145a9070d8de85c79c',1,'ripple::jss::JSS(refresh_interval_min)'],['../namespaceripple_1_1jss.html#a946b6283b24392f9786b2ca7e61d11be',1,'ripple::jss::JSS(regular_seed)'],['../namespaceripple_1_1jss.html#a16710749bcca2b74e4ce87362c895550',1,'ripple::jss::JSS(remaining)'],['../namespaceripple_1_1jss.html#aaa1fb1f97e994f096b2720c0177b1b64',1,'ripple::jss::JSS(remote)'],['../namespaceripple_1_1jss.html#a1ddddc3f0a35d9b0dc63eefe5d329ece',1,'ripple::jss::JSS(request)'],['../namespaceripple_1_1jss.html#a031ab5db8b438db6e044bb615dcd437f',1,'ripple::jss::JSS(requested)'],['../namespaceripple_1_1jss.html#a23b89ac7132b73c99b2c4eeb6a7d5ba8',1,'ripple::jss::JSS(reservations)'],['../namespaceripple_1_1jss.html#a06e38430b8efacb449dae68e3e4bd719',1,'ripple::jss::JSS(reserve_base)'],['../namespaceripple_1_1jss.html#ae6b3865c1704255f9507dca6a2ce3e98',1,'ripple::jss::JSS(reserve_base_drops)'],['../namespaceripple_1_1jss.html#ad3f0b63bc2dc00989d74e5e2a98d8cef',1,'ripple::jss::JSS(reserve_base_xrp)'],['../namespaceripple_1_1jss.html#a434d67df095e4b93d2888329a312f249',1,'ripple::jss::JSS(reserve_inc)'],['../namespaceripple_1_1jss.html#abb8aec1a0a86ebf39d93d26c9ad36825',1,'ripple::jss::JSS(reserve_inc_drops)'],['../namespaceripple_1_1jss.html#a30d26962060ab84f953bd174d741ef35',1,'ripple::jss::JSS(reserve_inc_xrp)'],['../namespaceripple_1_1jss.html#afa9140cf9fc26b240b3cf9d7fd9a543a',1,'ripple::jss::JSS(response)'],['../namespaceripple_1_1jss.html#ab002c1b47c7b6c1196acae240c368fd8',1,'ripple::jss::JSS(result)'],['../namespaceripple_1_1jss.html#aad2d58ba32ffb0f05e20ec574f739730',1,'ripple::jss::JSS(ripple_lines)'],['../namespaceripple_1_1jss.html#a833d63c2022621a71bca7c976fcbe2c4',1,'ripple::jss::JSS(ripple_state)'],['../namespaceripple_1_1jss.html#aceed5baff161853077dd6dc6156a59c7',1,'ripple::jss::JSS(ripplerpc)'],['../namespaceripple_1_1jss.html#ae0d5803772678f19be9d7f4bd8b39fac',1,'ripple::jss::JSS(role)'],['../namespaceripple_1_1jss.html#acfb087c654466263af799d1ef4415621',1,'ripple::jss::JSS(rpc)'],['../namespaceripple_1_1jss.html#aee7d0dc691e3014ab6e0241581527dd0',1,'ripple::jss::JSS(rt_accounts)'],['../namespaceripple_1_1jss.html#ac10cf2f8c791afac756962bfdf0f0e03',1,'ripple::jss::JSS(running_duration_us)'],['../namespaceripple_1_1jss.html#ac20f25e4c6699c9a11bb2dbdbfbd35b9',1,'ripple::jss::JSS(search_depth)'],['../namespaceripple_1_1jss.html#a33fdabee7255bc9cc0e6e02e969fd299',1,'ripple::jss::JSS(searched_all)'],['../namespaceripple_1_1jss.html#ab4bf22346e3ce730490fbac54e554319',1,'ripple::jss::JSS(secret)'],['../namespaceripple_1_1jss.html#a769765c53f57269b83469eb86fc43a2a',1,'ripple::jss::JSS(seed)'],['../namespaceripple_1_1jss.html#a18388591c49bdd58426717b896454422',1,'ripple::jss::JSS(seed_hex)'],['../namespaceripple_1_1jss.html#a19c5c81ca6ad9e1d521ffe82d8bc82bf',1,'ripple::jss::JSS(send_currencies)'],['../namespaceripple_1_1jss.html#a6558b4b11170f4fcde5bd6785543db00',1,'ripple::jss::JSS(send_max)'],['../namespaceripple_1_1jss.html#a21e87d098bb9496f57815da1ed358268',1,'ripple::jss::JSS(seq)'],['../namespaceripple_1_1jss.html#a945891671330ca1451741d6a01ce6c26',1,'ripple::jss::JSS(seqNum)'],['../namespaceripple_1_1jss.html#ae76e64937bdbbe06eb62cb73d3db5b44',1,'ripple::jss::JSS(sequence)'],['../namespaceripple_1_1jss.html#a6bcffda6c02a858abbeecdf9e58d6d19',1,'ripple::jss::JSS(sequence_count)'],['../namespaceripple_1_1jss.html#a87398173e2f3a0763f49b9144f247394',1,'ripple::jss::JSS(server_domain)'],['../namespaceripple_1_1jss.html#ae8685ce87a27424455d732e70d6749e9',1,'ripple::jss::JSS(server_state)'],['../namespaceripple_1_1jss.html#a72748915540b0400ebdfd7d350940dd5',1,'ripple::jss::JSS(server_state_duration_us)'],['../namespaceripple_1_1jss.html#af11133bbbb71606c744f48cf7cc73ffc',1,'ripple::jss::JSS(server_status)'],['../namespaceripple_1_1jss.html#aaaf7f7ce7cef0bc80576bce7dd083191',1,'ripple::jss::JSS(server_version)'],['../namespaceripple_1_1jss.html#a215e9223a6ae3e03e928c0052194dce2',1,'ripple::jss::JSS(settle_delay)'],['../namespaceripple_1_1jss.html#ab446d169fde4c5d39607f455ef7409d1',1,'ripple::jss::JSS(severity)'],['../namespaceripple_1_1jss.html#aa1162195b20caadd962d37ad3166e123',1,'ripple::jss::JSS(shards)'],['../namespaceripple_1_1jss.html#ad1550695b4ced1ef2148768548629164',1,'ripple::jss::JSS(signature)'],['../namespaceripple_1_1jss.html#a27e7424f63a6ba421a741a060883a9eb',1,'ripple::jss::JSS(signature_verified)'],['../namespaceripple_1_1jss.html#a33cf28c33911e126a41f5a52cc2aa76f',1,'ripple::jss::JSS(signing_key)'],['../namespaceripple_1_1jss.html#a0774d2833b9d21039c9d915b80ba5fd6',1,'ripple::jss::JSS(signing_keys)'],['../namespaceripple_1_1jss.html#a04d13dd9fcb31ff9cd99da7ef25ea89c',1,'ripple::jss::JSS(signing_time)'],['../namespaceripple_1_1jss.html#a20f00ada4190a5f544e941b43a36c381',1,'ripple::jss::JSS(signer_list)'],['../namespaceripple_1_1jss.html#a5077d3e4db756f7aa886582b511f3e89',1,'ripple::jss::JSS(signer_lists)'],['../namespaceripple_1_1jss.html#a1c5210d6f3f79fd228eba85b3feabe0c',1,'ripple::jss::JSS(snapshot)'],['../namespaceripple_1_1jss.html#a61c4b74cb35954d878c11c38dbb0254f',1,'ripple::jss::JSS(source_account)'],['../namespaceripple_1_1jss.html#ad8a759db804a103c90e042ab4608311d',1,'ripple::jss::JSS(source_amount)'],['../namespaceripple_1_1jss.html#a968ac5fa6e358f5193e20dc6a101f976',1,'ripple::jss::JSS(source_currencies)'],['../namespaceripple_1_1jss.html#ae01769c00a852c87146be4838c09ee5a',1,'ripple::jss::JSS(source_tag)'],['../namespaceripple_1_1jss.html#a1f82e43f1a1cc57d6a8041df58147f4b',1,'ripple::jss::JSS(stand_alone)'],['../namespaceripple_1_1jss.html#ae05699a4fc7b4f776ec152d5b669d1d4',1,'ripple::jss::JSS(start)'],['../namespaceripple_1_1jss.html#a5beb9c603c6cfda1046a50f82afe9cc1',1,'ripple::jss::JSS(started)'],['../namespaceripple_1_1jss.html#af92f75263b26ca0241b6fe0ef589c8aa',1,'ripple::jss::JSS(state)'],['../namespaceripple_1_1jss.html#ac084abe0606a3c9744be7b65bfeaacb3',1,'ripple::jss::JSS(state_accounting)'],['../namespaceripple_1_1jss.html#aa99a557008270f1242d9b52f96f4be9c',1,'ripple::jss::JSS(state_now)'],['../namespaceripple_1_1jss.html#a99c005c5372a36bdc9701d33927a8ef1',1,'ripple::jss::JSS(status)'],['../namespaceripple_1_1jss.html#a6c3c1b21b83ecd9cde9b44c88d122a54',1,'ripple::jss::JSS(stop)'],['../namespaceripple_1_1jss.html#ac86d222f149d24b7d9e76f3130eb1269',1,'ripple::jss::JSS(stop_history_tx_only)'],['../namespaceripple_1_1jss.html#a195530af42c8a054953f4059fe8656df',1,'ripple::jss::JSS(storedSeqs)'],['../namespaceripple_1_1jss.html#a6acad949a2216ac90b3dad8d1adfadbf',1,'ripple::jss::JSS(streams)'],['../namespaceripple_1_1jss.html#aa24b295ccb87952511a3765611ee8a15',1,'ripple::jss::JSS(strict)'],['../namespaceripple_1_1jss.html#a581b4c11fce8f5c5b4f29f6bccce313e',1,'ripple::jss::JSS(sub_index)'],['../namespaceripple_1_1jss.html#aaaced786b6acbd66d6abc597e30aa44b',1,'ripple::jss::JSS(subcommand)'],['../namespaceripple_1_1jss.html#adabda57626831652b07085fc47e18696',1,'ripple::jss::JSS(success)'],['../namespaceripple_1_1jss.html#a171adf01fa70537328e34d8bdf5dfd57',1,'ripple::jss::JSS(supported)'],['../namespaceripple_1_1jss.html#a178fffb2f1426d3203e6e390e4d117fd',1,'ripple::jss::JSS(system_time_offset)'],['../namespaceripple_1_1jss.html#a8617ac2597ab5a7a90518b677b6b42a7',1,'ripple::jss::JSS(tag)'],['../namespaceripple_1_1jss.html#a701bdeea142b039b979776a828d16eba',1,'ripple::jss::JSS(taker)'],['../namespaceripple_1_1jss.html#a02821ca009e61f5a8252b97b9e4180f7',1,'ripple::jss::JSS(taker_gets)'],['../namespaceripple_1_1jss.html#a64796224848c31756b72ea7b94b33a16',1,'ripple::jss::JSS(taker_gets_funded)'],['../namespaceripple_1_1jss.html#adbe5fd10d28a75bd2d459892e99a6dd6',1,'ripple::jss::JSS(taker_pays)'],['../namespaceripple_1_1jss.html#aba7b6f1e4b78fe190129102c0555c036',1,'ripple::jss::JSS(taker_pays_funded)'],['../namespaceripple_1_1jss.html#af4a7790c97568179536f320eb5495607',1,'ripple::jss::JSS(threshold)'],['../namespaceripple_1_1jss.html#ae76e9ff4efa8ac76093ac8db412b20fe',1,'ripple::jss::JSS(ticket)'],['../namespaceripple_1_1jss.html#aaca215628a9d1510b6a5f393e8b64938',1,'ripple::jss::JSS(ticket_count)'],['../namespaceripple_1_1jss.html#a37bc74d8038b2baf2a4a203ae5a98d14',1,'ripple::jss::JSS(ticket_seq)'],['../namespaceripple_1_1jss.html#aa0aefbfa4e0f02fdbd53c8212991e02e',1,'ripple::jss::JSS(time)'],['../namespaceripple_1_1jss.html#aae8c9fa4189cd14b5481764a80418d7f',1,'ripple::jss::JSS(timeouts)'],['../namespaceripple_1_1jss.html#a77cbaa22a5bdecbd66da66fb5820905f',1,'ripple::jss::JSS(track)'],['../namespaceripple_1_1jss.html#abc7bcf1d46991c52aab8ed71c2c39592',1,'ripple::jss::JSS(traffic)'],['../namespaceripple_1_1jss.html#a2712ee652daa312fbbe0ea559fc7a244',1,'ripple::jss::JSS(total)'],['../namespaceripple_1_1jss.html#a2401f0b58d3bcf911cdd2b01d0b5cc73',1,'ripple::jss::JSS(totalCoins)'],['../namespaceripple_1_1jss.html#a116f5be949510e9ba0b5bc2cb2174815',1,'ripple::jss::JSS(total_bytes_recv)'],['../namespaceripple_1_1jss.html#a6653e44f5fbc21357fc41f0906d3b8ff',1,'ripple::jss::JSS(total_bytes_sent)'],['../namespaceripple_1_1jss.html#a5ab7a11fe58d083882f5ef160a96152d',1,'ripple::jss::JSS(total_coins)'],['../namespaceripple_1_1jss.html#a09708673233aa9b917055a4a053c486c',1,'ripple::jss::JSS(transTreeHash)'],['../namespaceripple_1_1jss.html#a4fc64264521261517967946a0bd3e630',1,'ripple::jss::JSS(transaction)'],['../namespaceripple_1_1jss.html#a42451283f3361e807289eb9f4941e93c',1,'ripple::jss::JSS(transaction_hash)'],['../namespaceripple_1_1jss.html#a8b6af48f3017969cae2253810d4d51fe',1,'ripple::jss::JSS(transactions)'],['../namespaceripple_1_1jss.html#ab5eda56ff95b22c358e5a237d8849f99',1,'ripple::jss::JSS(transitions)'],['../namespaceripple_1_1jss.html#a34d8eae8d2b916452314077d756f3a33',1,'ripple::jss::JSS(treenode_cache_size)'],['../namespaceripple_1_1jss.html#ad11e2e38cee9bfb6e85d9332bf546673',1,'ripple::jss::JSS(treenode_track_size)'],['../namespaceripple_1_1jss.html#aec7fcc1cd1de8307905ccedc76087536',1,'ripple::jss::JSS(trusted)'],['../namespaceripple_1_1jss.html#acf98fda3acdd812fc38f3d88405c973a',1,'ripple::jss::JSS(trusted_validator_keys)'],['../namespaceripple_1_1jss.html#aff19f11ae3e412c143fd802ce95e3463',1,'ripple::jss::JSS(tx)'],['../namespaceripple_1_1jss.html#a2486fcbdabb916a03d2029ab7e334341',1,'ripple::jss::JSS(tx_blob)'],['../namespaceripple_1_1jss.html#ab00747a2463a29db7c24115668e4a218',1,'ripple::jss::JSS(tx_hash)'],['../namespaceripple_1_1jss.html#aaebee3c317fcd8d7fbf7835bc4885aaf',1,'ripple::jss::JSS(tx_json)'],['../namespaceripple_1_1jss.html#ae1b09a0893f0887b848b8f153881eabb',1,'ripple::jss::JSS(tx_signing_hash)'],['../namespaceripple_1_1jss.html#ab690506c55f1c3dea2366caa593f8618',1,'ripple::jss::JSS(tx_unsigned)'],['../namespaceripple_1_1jss.html#a296e5fddfe53df3407fb75d46dee564f',1,'ripple::jss::JSS(txn_count)'],['../namespaceripple_1_1jss.html#acab1e95b00be21ffedd8aa078dde7cd5',1,'ripple::jss::JSS(txr_tx_cnt)'],['../namespaceripple_1_1jss.html#a52d18a5e83bf6ab15ecce1334560c7e3',1,'ripple::jss::JSS(txr_tx_sz)'],['../namespaceripple_1_1jss.html#a41af8cbc748a25f66931d1d33409901e',1,'ripple::jss::JSS(txr_have_txs_cnt)'],['../namespaceripple_1_1jss.html#a0cf79a4087e506da0c5b72625f01d192',1,'ripple::jss::JSS(txr_have_txs_sz)'],['../namespaceripple_1_1jss.html#a41e744430bf72f353fc2072a4ccc7d9e',1,'ripple::jss::JSS(txr_get_ledger_cnt)'],['../namespaceripple_1_1jss.html#abd86cc67feedb69c1f907a1e7063f45f',1,'ripple::jss::JSS(txr_get_ledger_sz)'],['../namespaceripple_1_1jss.html#acf0f73154e59a125ffc0c878e4998dd1',1,'ripple::jss::JSS(txr_ledger_data_cnt)'],['../namespaceripple_1_1jss.html#a42d3c6ff6d89f4297a15ee9d4b937158',1,'ripple::jss::JSS(txr_ledger_data_sz)'],['../namespaceripple_1_1jss.html#a9bb4d6e35e93700daecb12fd88b612c6',1,'ripple::jss::JSS(txr_transactions_cnt)'],['../namespaceripple_1_1jss.html#ac1abacd761ec7abfde83e583a70b0ea4',1,'ripple::jss::JSS(txr_transactions_sz)'],['../namespaceripple_1_1jss.html#a7932ad94678f2e615bf4559597c7f747',1,'ripple::jss::JSS(txr_selected_cnt)'],['../namespaceripple_1_1jss.html#a38e7e398a4f5f39c70ad238f9a1e1284',1,'ripple::jss::JSS(txr_suppressed_cnt)'],['../namespaceripple_1_1jss.html#a98440d1c5861994f6ed7fe83d579fc7b',1,'ripple::jss::JSS(txr_not_enabled_cnt)'],['../namespaceripple_1_1jss.html#aef1d8a23e1687341917fb9868494a3ca',1,'ripple::jss::JSS(txr_missing_tx_freq)'],['../namespaceripple_1_1jss.html#aeea2f2283a26d946766e83a715a9d682',1,'ripple::jss::JSS(txs)'],['../namespaceripple_1_1jss.html#a4d947f1743784ee61ebf4090d71fddc5',1,'ripple::jss::JSS(type)'],['../namespaceripple_1_1jss.html#a4fd5d1d92b073012943c2c6321067a6a',1,'ripple::jss::JSS(type_hex)'],['../namespaceripple_1_1jss.html#ac9f70ad0f04a1e5c013454fe8498136a',1,'ripple::jss::JSS(unl)'],['../namespaceripple_1_1jss.html#a18b6349dc9baba53df47742046f87b84',1,'ripple::jss::JSS(unlimited)'],['../namespaceripple_1_1jss.html#a49b9cf76b96ecb10fd56ca60a5ca4a90',1,'ripple::jss::JSS(uptime)'],['../namespaceripple_1_1jss.html#a931f36a44b3befdf1144cb23079a5778',1,'ripple::jss::JSS(uri)'],['../namespaceripple_1_1jss.html#a19aa5a2ded46fc0bbdef06f94519307b',1,'ripple::jss::JSS(url)'],['../namespaceripple_1_1jss.html#a7efaf53739fb251d5f8c0a3e39749128',1,'ripple::jss::JSS(url_password)'],['../namespaceripple_1_1jss.html#ad99fed5324eb171dda2b0485f9e196ed',1,'ripple::jss::JSS(url_username)'],['../namespaceripple_1_1jss.html#afcc64ff37edbdcae6d325f795c329fa6',1,'ripple::jss::JSS(urlgravatar)'],['../namespaceripple_1_1jss.html#a21df51066f1bd04f2f46de6c835a3745',1,'ripple::jss::JSS(username)'],['../namespaceripple_1_1jss.html#a19f7bcc12694cce39b5cb2f691e19d93',1,'ripple::jss::JSS(validated)'],['../namespaceripple_1_1jss.html#af7dfda6a45ee8bf86a52a5c6ef1103ae',1,'ripple::jss::JSS(validator_list_expires)'],['../namespaceripple_1_1jss.html#a82c322f00316e6c5ec9efca237643c0c',1,'ripple::jss::JSS(validator_list)'],['../namespaceripple_1_1jss.html#aa096955b80eb72f6ba4270ceef77de6e',1,'ripple::jss::JSS(validators)'],['../namespaceripple_1_1jss.html#a77fc5cca493d30ace52fcffcc257cb66',1,'ripple::jss::JSS(validated_hash)'],['../namespaceripple_1_1jss.html#a123b084cc0a9278567659d15eb1b02f4',1,'ripple::jss::JSS(validated_ledger)'],['../namespaceripple_1_1jss.html#ac26a6a1588aa98da4764463cd1ccf8cb',1,'ripple::jss::JSS(validated_ledger_index)'],['../namespaceripple_1_1jss.html#a92af4ce13e5469199a2792e123c5093a',1,'ripple::jss::JSS(validated_ledgers)'],['../namespaceripple_1_1jss.html#a65a44ddaf50cbb605df0ecb6100c6dad',1,'ripple::jss::JSS(validation_key)'],['../namespaceripple_1_1jss.html#a4097f5bd132eba42ac020894dcdebbbc',1,'ripple::jss::JSS(validation_private_key)'],['../namespaceripple_1_1jss.html#afc2e2ddf081505d3f3953c453134c4a3',1,'ripple::jss::JSS(validation_public_key)'],['../namespaceripple_1_1jss.html#a39ee6d6525f21b026d3acde9640f4d01',1,'ripple::jss::JSS(validation_quorum)'],['../namespaceripple_1_1jss.html#ac1c4476298f3af82f4862a751b6a5c51',1,'ripple::jss::JSS(validation_seed)'],['../namespaceripple_1_1jss.html#a4fad99c083f9a0d3c893dc182b6c9b7e',1,'ripple::jss::JSS(validations)'],['../namespaceripple_1_1jss.html#a1026d74d260210a1a72b293a83c62540',1,'ripple::jss::JSS(validator_sites)'],['../namespaceripple_1_1jss.html#ab779bcbb56f78f33545b48dafc909b46',1,'ripple::jss::JSS(value)'],['../namespaceripple_1_1jss.html#a691ab416cda11bd50eb11d79d3d6421e',1,'ripple::jss::JSS(version)'],['../namespaceripple_1_1jss.html#a4d492f7cf0e166e2e77c94a868a5722f',1,'ripple::jss::JSS(vetoed)'],['../namespaceripple_1_1jss.html#a40ea182ffa1551e97f1550a227ab568a',1,'ripple::jss::JSS(volume_a)'],['../namespaceripple_1_1jss.html#a5f19a805966938981c73fb822b7322c9',1,'ripple::jss::JSS(volume_b)'],['../namespaceripple_1_1jss.html#aa9754b78ba9927ed4dfc2e84dbdde57a',1,'ripple::jss::JSS(vote)'],['../namespaceripple_1_1jss.html#a12c2d74d1d3bd19009bb51812ae9660b',1,'ripple::jss::JSS(warning)'],['../namespaceripple_1_1jss.html#a5256b8c6a73d3df50ed6cbe9e30017d2',1,'ripple::jss::JSS(warnings)'],['../namespaceripple_1_1jss.html#a9f11131401702545899bbb3c2d60c93f',1,'ripple::jss::JSS(workers)'],['../namespaceripple_1_1jss.html#aee00e3f88c564bb0f87afeac6f1a3dff',1,'ripple::jss::JSS(write_load)'],['../namespaceripple_1_1jss.html#a970df0e4e5b3c0f64876bdde0292eef0',1,'ripple::jss::JSS(NegativeUNL)']]], + ['jss_4817',['JSS',['../namespaceripple_1_1jss.html#aa3f15d192c86a0f1522a1b98e82cb646',1,'ripple::jss::JSS(AL_size)'],['../namespaceripple_1_1jss.html#ac61e73edfd5f2e64e6ebf6eb021e81df',1,'ripple::jss::JSS(AL_hit_rate)'],['../namespaceripple_1_1jss.html#a8db30c15e1db9ea5e0fd5408ba2f2c2c',1,'ripple::jss::JSS(Account)'],['../namespaceripple_1_1jss.html#a3a864855b794ba13acf7c597d2211ba9',1,'ripple::jss::JSS(AccountDelete)'],['../namespaceripple_1_1jss.html#ada80bb65c82d27159382848a22d429be',1,'ripple::jss::JSS(AccountRoot)'],['../namespaceripple_1_1jss.html#a369b5f1021cdb9da296627e05fc75796',1,'ripple::jss::JSS(AccountSet)'],['../namespaceripple_1_1jss.html#a7ff652aa1f30727a88b3939538535980',1,'ripple::jss::JSS(Amendments)'],['../namespaceripple_1_1jss.html#ab07b5297f249d63372389a2f3452896a',1,'ripple::jss::JSS(Amount)'],['../namespaceripple_1_1jss.html#a0e9fa6c30fc4550634d5ae7823acffe1',1,'ripple::jss::JSS(Check)'],['../namespaceripple_1_1jss.html#ab66dd566267dbb672b15f4f65e87b349',1,'ripple::jss::JSS(CheckCancel)'],['../namespaceripple_1_1jss.html#a78c9616d726b95aaddbde47b922c158a',1,'ripple::jss::JSS(CheckCash)'],['../namespaceripple_1_1jss.html#a7ae1310b0f6f95cad5591480b2c14e0b',1,'ripple::jss::JSS(CheckCreate)'],['../namespaceripple_1_1jss.html#a677a739cb9cb21c44ad922ce99d2ec18',1,'ripple::jss::JSS(ClearFlag)'],['../namespaceripple_1_1jss.html#aaf3a34266841e872aed3dd48643ec9d7',1,'ripple::jss::JSS(DeliverMin)'],['../namespaceripple_1_1jss.html#a0564fc95b000147f54d363e7c08362d5',1,'ripple::jss::JSS(DepositPreauth)'],['../namespaceripple_1_1jss.html#a34b307cccb458abb3c759236cd1f680c',1,'ripple::jss::JSS(Destination)'],['../namespaceripple_1_1jss.html#afdc3e555fa475d011b0548f1d2278644',1,'ripple::jss::JSS(DirectoryNode)'],['../namespaceripple_1_1jss.html#af873eca785d9dcfc019b8af9b9e32be4',1,'ripple::jss::JSS(EnableAmendment)'],['../namespaceripple_1_1jss.html#af0bf8a97e8554ab5580b4b7c68897174',1,'ripple::jss::JSS(Escrow)'],['../namespaceripple_1_1jss.html#af5a44636462b3a7a8f16a01b7820988b',1,'ripple::jss::JSS(EscrowCancel)'],['../namespaceripple_1_1jss.html#ab56e3d7a1a82e634836a2352a4f75d89',1,'ripple::jss::JSS(EscrowCreate)'],['../namespaceripple_1_1jss.html#a205e25b14f2a793c7a35cd53e1c5c001',1,'ripple::jss::JSS(EscrowFinish)'],['../namespaceripple_1_1jss.html#a5d027d84a098e41c1569776f89d9ba34',1,'ripple::jss::JSS(Fee)'],['../namespaceripple_1_1jss.html#add0b43cdc17136e275323ba3ef33a740',1,'ripple::jss::JSS(FeeSettings)'],['../namespaceripple_1_1jss.html#a50b91de2bf71ae5bf58ebc8ccccde418',1,'ripple::jss::JSS(Flags)'],['../namespaceripple_1_1jss.html#a3a47f90c201cfbf6f67ebefb609618c1',1,'ripple::jss::JSS(incomplete_shards)'],['../namespaceripple_1_1jss.html#ac3e2ec0dacc9e82ff767b714534e785f',1,'ripple::jss::JSS(Invalid)'],['../namespaceripple_1_1jss.html#aba1bac42850f770c911b803754af95d6',1,'ripple::jss::JSS(LastLedgerSequence)'],['../namespaceripple_1_1jss.html#a31b9ae773dc45e76dbdb16a4429311b6',1,'ripple::jss::JSS(LedgerHashes)'],['../namespaceripple_1_1jss.html#a517b1ac3bc55dab67fc46d054d308d0f',1,'ripple::jss::JSS(LimitAmount)'],['../namespaceripple_1_1jss.html#ac8fb3d5a950a917f0296a3129c541328',1,'ripple::jss::JSS(NFTokenBurn)'],['../namespaceripple_1_1jss.html#a8f1cf7b6ac97c23fa57bf5be54c1a125',1,'ripple::jss::JSS(NFTokenMint)'],['../namespaceripple_1_1jss.html#a0b4e92344813da533188cc06aca48a42',1,'ripple::jss::JSS(NFTokenOffer)'],['../namespaceripple_1_1jss.html#af9f19b47917635c537b15603cbf79508',1,'ripple::jss::JSS(NFTokenAcceptOffer)'],['../namespaceripple_1_1jss.html#a07549a859614baeba638c051da3072c8',1,'ripple::jss::JSS(NFTokenCancelOffer)'],['../namespaceripple_1_1jss.html#a99011cb6a1beb12b0a5466105affb81c',1,'ripple::jss::JSS(NFTokenCreateOffer)'],['../namespaceripple_1_1jss.html#afdf3b5ef83a99353dc891aa4be65f55f',1,'ripple::jss::JSS(NFTokenPage)'],['../namespaceripple_1_1jss.html#aa3b8a8a100795d22bd8ebd1191d04334',1,'ripple::jss::JSS(Offer)'],['../namespaceripple_1_1jss.html#ad386540d68a0b66403620e32067c6b6f',1,'ripple::jss::JSS(OfferCancel)'],['../namespaceripple_1_1jss.html#a543263da8c69111d363fa4d7f6452436',1,'ripple::jss::JSS(OfferCreate)'],['../namespaceripple_1_1jss.html#a10481a73fbbd7aa82ac5f8f4da08dc9b',1,'ripple::jss::JSS(OfferSequence)'],['../namespaceripple_1_1jss.html#aaf85234a34ee722516942773cac03556',1,'ripple::jss::JSS(Paths)'],['../namespaceripple_1_1jss.html#aa569e292fa2ac885b0eca312e81748e1',1,'ripple::jss::JSS(PayChannel)'],['../namespaceripple_1_1jss.html#ad216120b00aafd90ddb45038b485e7ae',1,'ripple::jss::JSS(Payment)'],['../namespaceripple_1_1jss.html#a4053936c64c222862921e37976aa44f0',1,'ripple::jss::JSS(PaymentChannelClaim)'],['../namespaceripple_1_1jss.html#a2aebc07b117cd8a96b846bb6a52c482f',1,'ripple::jss::JSS(PaymentChannelCreate)'],['../namespaceripple_1_1jss.html#a73d3838f3b79655aea8fd816d365d352',1,'ripple::jss::JSS(PaymentChannelFund)'],['../namespaceripple_1_1jss.html#abd9a4a1632f2d66e2cdde77e51973694',1,'ripple::jss::JSS(RippleState)'],['../namespaceripple_1_1jss.html#a762b9a30fa5865acb705007d6119416d',1,'ripple::jss::JSS(SLE_hit_rate)'],['../namespaceripple_1_1jss.html#a18d7874a3fcb6025b19479ad6213e1d9',1,'ripple::jss::JSS(SetFee)'],['../namespaceripple_1_1jss.html#a089a45f999e0ed833457f6e8ea666e53',1,'ripple::jss::JSS(UNLModify)'],['../namespaceripple_1_1jss.html#a8d27790628b0e3d6999142e1dbb7e364',1,'ripple::jss::JSS(SettleDelay)'],['../namespaceripple_1_1jss.html#aeaeec46c8fcc70a0da27549dd300c585',1,'ripple::jss::JSS(SendMax)'],['../namespaceripple_1_1jss.html#a1e87baad67dbd8e9d7cebcf929f585ff',1,'ripple::jss::JSS(Sequence)'],['../namespaceripple_1_1jss.html#ac9c94aaa2b70ad19441beeafc514f321',1,'ripple::jss::JSS(SetFlag)'],['../namespaceripple_1_1jss.html#aaae9a1668d267e6e289190fd03b07846',1,'ripple::jss::JSS(SetRegularKey)'],['../namespaceripple_1_1jss.html#a44fed3fa16b86426fa0897b1c4662479',1,'ripple::jss::JSS(SignerList)'],['../namespaceripple_1_1jss.html#aa8e3c6dc981efac70d8380352a78a98f',1,'ripple::jss::JSS(SignerListSet)'],['../namespaceripple_1_1jss.html#adcbf0a1c425bb779ac641e3447fa1c11',1,'ripple::jss::JSS(SigningPubKey)'],['../namespaceripple_1_1jss.html#a6e8e299d7f23355d94776a0887347cbf',1,'ripple::jss::JSS(TakerGets)'],['../namespaceripple_1_1jss.html#aa82b390bb0a103e48bc0d0afc3f1362a',1,'ripple::jss::JSS(TakerPays)'],['../namespaceripple_1_1jss.html#a513261f38f09eac38cfaacc79cca716a',1,'ripple::jss::JSS(Ticket)'],['../namespaceripple_1_1jss.html#af69b45379ff4fded9363b0ae8ee39c52',1,'ripple::jss::JSS(TicketCreate)'],['../namespaceripple_1_1jss.html#a5d8556bf9a3175aa7f6a95b40dd089e3',1,'ripple::jss::JSS(TxnSignature)'],['../namespaceripple_1_1jss.html#aadca9c9073b4c06631f01e6bdf23b983',1,'ripple::jss::JSS(TransactionType)'],['../namespaceripple_1_1jss.html#a1bb0afe8a513adb11e17df2e7add4df7',1,'ripple::jss::JSS(TransferRate)'],['../namespaceripple_1_1jss.html#a65f0e39c7cf387a7bcb3f46b00fb2b02',1,'ripple::jss::JSS(TrustSet)'],['../namespaceripple_1_1jss.html#ac712f1d90be66bdc07c327a285e31a95',1,'ripple::jss::JSS(aborted)'],['../namespaceripple_1_1jss.html#a8cc4d76f970dbab56ad8cc8952b581a7',1,'ripple::jss::JSS(accepted)'],['../namespaceripple_1_1jss.html#a8c52cfc5bd3b44f34bf65173d4d5e01f',1,'ripple::jss::JSS(account)'],['../namespaceripple_1_1jss.html#a4f68be93e599d1224880936ad033e65b',1,'ripple::jss::JSS(accountState)'],['../namespaceripple_1_1jss.html#a25f19eb852186e5e5fb4ad2bec13c286',1,'ripple::jss::JSS(accountTreeHash)'],['../namespaceripple_1_1jss.html#ab34ed1ee2308c28119b210cd3430ebc0',1,'ripple::jss::JSS(account_data)'],['../namespaceripple_1_1jss.html#a4b9e0df02faf624e6f59a543ace49328',1,'ripple::jss::JSS(account_hash)'],['../namespaceripple_1_1jss.html#ab96081f052c56b37d4afd16dc8d22460',1,'ripple::jss::JSS(account_id)'],['../namespaceripple_1_1jss.html#aec087ae757ba6749af161fbf9e064c9b',1,'ripple::jss::JSS(account_nfts)'],['../namespaceripple_1_1jss.html#a2673c740f247eb00d49884b60943d9d6',1,'ripple::jss::JSS(account_objects)'],['../namespaceripple_1_1jss.html#ac7d0bbd29a6df5afae59c3d33784778d',1,'ripple::jss::JSS(account_root)'],['../namespaceripple_1_1jss.html#a008137e7571fdf90c002f9e8563d6569',1,'ripple::jss::JSS(account_sequence_next)'],['../namespaceripple_1_1jss.html#af4b967d1b5b3992a3cfd7b5cf71ccebc',1,'ripple::jss::JSS(account_sequence_available)'],['../namespaceripple_1_1jss.html#ad3a33adca25cf9078fce877138e4ab69',1,'ripple::jss::JSS(account_history_tx_stream)'],['../namespaceripple_1_1jss.html#ad94173ed88f1e34e2bfd03ee98e93dab',1,'ripple::jss::JSS(account_history_tx_index)'],['../namespaceripple_1_1jss.html#a617092ce024f895abe5f32957de115b4',1,'ripple::jss::JSS(account_history_tx_first)'],['../namespaceripple_1_1jss.html#a1cceb08aa3b1ef65fc48b5ee68e087b4',1,'ripple::jss::JSS(accounts)'],['../namespaceripple_1_1jss.html#aefb1f16bf3daf8f678cf76d181b40b46',1,'ripple::jss::JSS(accounts_proposed)'],['../namespaceripple_1_1jss.html#a79876642f9736c3db303f92a91a90bad',1,'ripple::jss::JSS(action)'],['../namespaceripple_1_1jss.html#aba70083161fb6978e3892bb8cbb26076',1,'ripple::jss::JSS(acquiring)'],['../namespaceripple_1_1jss.html#a7f0559695a7cd6c2432d98e2a02ed320',1,'ripple::jss::JSS(address)'],['../namespaceripple_1_1jss.html#a54f412b0d88f112435dcf0086adc03d8',1,'ripple::jss::JSS(affected)'],['../namespaceripple_1_1jss.html#a11e83bbfe9c41cf1a4e097dff802e63d',1,'ripple::jss::JSS(age)'],['../namespaceripple_1_1jss.html#af7bb47b5e83616e04ae9114c2d0c3a8e',1,'ripple::jss::JSS(alternatives)'],['../namespaceripple_1_1jss.html#a78ad17ba9f3cd952c0f995ce716542a2',1,'ripple::jss::JSS(amendment_blocked)'],['../namespaceripple_1_1jss.html#a9f1a9a511f58627a3f34032b3d22b095',1,'ripple::jss::JSS(amendments)'],['../namespaceripple_1_1jss.html#adf6438aab6db5d1576e44513e50ea1a6',1,'ripple::jss::JSS(amount)'],['../namespaceripple_1_1jss.html#a00a5b11ca23d029ae11ac2521cba99d2',1,'ripple::jss::JSS(api_version)'],['../namespaceripple_1_1jss.html#a475d2415f159a064bca7b7d714545f2a',1,'ripple::jss::JSS(api_version_low)'],['../namespaceripple_1_1jss.html#a894e5350a357338043b5543eb05ee5f9',1,'ripple::jss::JSS(applied)'],['../namespaceripple_1_1jss.html#aaf73127d96f85403418f2a3a8e9e9780',1,'ripple::jss::JSS(asks)'],['../namespaceripple_1_1jss.html#a556712161628a8c62e0bd7796666a426',1,'ripple::jss::JSS(assets)'],['../namespaceripple_1_1jss.html#aa20cc3fa17795d30395032a15b22abaf',1,'ripple::jss::JSS(authorized)'],['../namespaceripple_1_1jss.html#a3fe07845962f562b9351bbfe6337d2bf',1,'ripple::jss::JSS(auth_change)'],['../namespaceripple_1_1jss.html#a1689c6c2501dff6d31411216f4803fc2',1,'ripple::jss::JSS(auth_change_queued)'],['../namespaceripple_1_1jss.html#ada65039482a5cf5ef237f631326a4737',1,'ripple::jss::JSS(available)'],['../namespaceripple_1_1jss.html#a54a90bc889257dfd81e55ead7318f489',1,'ripple::jss::JSS(avg_bps_recv)'],['../namespaceripple_1_1jss.html#acb856bd10e512c19d86311b32e736c67',1,'ripple::jss::JSS(avg_bps_sent)'],['../namespaceripple_1_1jss.html#a8d3ac99ecbd10440e8e42fbb9ef3bd33',1,'ripple::jss::JSS(balance)'],['../namespaceripple_1_1jss.html#a22d2ca178a31207ea154db35d940e13c',1,'ripple::jss::JSS(balances)'],['../namespaceripple_1_1jss.html#a98317c55c194b081a21049c0005f1455',1,'ripple::jss::JSS(base)'],['../namespaceripple_1_1jss.html#a95591af524eb233bdb2b67380a262af3',1,'ripple::jss::JSS(base_fee)'],['../namespaceripple_1_1jss.html#a0dc657f2e92d03564502ca2d33bf9a14',1,'ripple::jss::JSS(base_fee_xrp)'],['../namespaceripple_1_1jss.html#ab53f1e5442b9a607f568a3a7d6a8a1eb',1,'ripple::jss::JSS(bids)'],['../namespaceripple_1_1jss.html#afffa2bf3dd597d522e66d72f4b16715b',1,'ripple::jss::JSS(binary)'],['../namespaceripple_1_1jss.html#a2ae0ac445216c042b16acd304e4bba60',1,'ripple::jss::JSS(blob)'],['../namespaceripple_1_1jss.html#a67720dea6165add6786ceed769430d06',1,'ripple::jss::JSS(blobs_v2)'],['../namespaceripple_1_1jss.html#afe151e69000427a198547770d2e6a435',1,'ripple::jss::JSS(books)'],['../namespaceripple_1_1jss.html#abbe5597d53d3751edcfd0abcd37bbcc5',1,'ripple::jss::JSS(both)'],['../namespaceripple_1_1jss.html#a16090621156a35f61afd7ffb67566879',1,'ripple::jss::JSS(both_sides)'],['../namespaceripple_1_1jss.html#acb1ba33f0bd6d83ba18fbe47955e1b9a',1,'ripple::jss::JSS(broadcast)'],['../namespaceripple_1_1jss.html#a2dbe9dcde7829371b2c3fa9d7ae5fa6c',1,'ripple::jss::JSS(build_path)'],['../namespaceripple_1_1jss.html#a5d41f8ada0cd210a47ea5dc84d105b73',1,'ripple::jss::JSS(build_version)'],['../namespaceripple_1_1jss.html#af83eafeb049a2f4e091e116b6dce101d',1,'ripple::jss::JSS(cancel_after)'],['../namespaceripple_1_1jss.html#a62f2cce44125b7ab9f1da7503610bb20',1,'ripple::jss::JSS(can_delete)'],['../namespaceripple_1_1jss.html#a636ea66af76536c1e1ebf421f4771853',1,'ripple::jss::JSS(changes)'],['../namespaceripple_1_1jss.html#ab20d6181608e37a4485d0d3141880312',1,'ripple::jss::JSS(channel_id)'],['../namespaceripple_1_1jss.html#a1f5dc64f057a7dc4ee6dd2c262c272f3',1,'ripple::jss::JSS(channels)'],['../namespaceripple_1_1jss.html#a9a2d94d94db798b705f15f932587329b',1,'ripple::jss::JSS(check)'],['../namespaceripple_1_1jss.html#aceff8d50279309d0b04633645b8e4bbf',1,'ripple::jss::JSS(check_nodes)'],['../namespaceripple_1_1jss.html#a018957e41a9c09f4ac9c64a10505d9c3',1,'ripple::jss::JSS(clear)'],['../namespaceripple_1_1jss.html#af151d9fb24624f9b3b7753eb53e2b488',1,'ripple::jss::JSS(close)'],['../namespaceripple_1_1jss.html#a18b2db60fa2f7d62bb92f69a27732abc',1,'ripple::jss::JSS(close_flags)'],['../namespaceripple_1_1jss.html#a79e23f6d60683f30b689dc4d4f296e8f',1,'ripple::jss::JSS(close_time)'],['../namespaceripple_1_1jss.html#ad6fd1868c22504ddb2335fe9bdbb964a',1,'ripple::jss::JSS(close_time_estimated)'],['../namespaceripple_1_1jss.html#ae9c49c54d55673fdbe0f98eaf2b1498e',1,'ripple::jss::JSS(close_time_human)'],['../namespaceripple_1_1jss.html#a828e3e1ac6ed05e4959773ab91cca81a',1,'ripple::jss::JSS(close_time_offset)'],['../namespaceripple_1_1jss.html#ace51eb83f24e0e9b302a76fe79f8db2f',1,'ripple::jss::JSS(close_time_resolution)'],['../namespaceripple_1_1jss.html#a165df8fbec91afb04a872b3e253b2220',1,'ripple::jss::JSS(closed)'],['../namespaceripple_1_1jss.html#a4e2d085d756f1cb68fce0abbc301d593',1,'ripple::jss::JSS(closed_ledger)'],['../namespaceripple_1_1jss.html#a3ebf1c7c458683d047e84871004e431f',1,'ripple::jss::JSS(cluster)'],['../namespaceripple_1_1jss.html#a37ff9544629a3f3f3c9304a4fa6b72e3',1,'ripple::jss::JSS(code)'],['../namespaceripple_1_1jss.html#a96b1217aff7b43d946abf67137db4dd1',1,'ripple::jss::JSS(command)'],['../namespaceripple_1_1jss.html#a595e875b3abf64a1e0b1188258b6fec1',1,'ripple::jss::JSS(complete)'],['../namespaceripple_1_1jss.html#a8cf35568f265f3ff3e86be414fd59e30',1,'ripple::jss::JSS(complete_ledgers)'],['../namespaceripple_1_1jss.html#a40942d4ff375349468a6bcd3635bd5a3',1,'ripple::jss::JSS(complete_shards)'],['../namespaceripple_1_1jss.html#a0c60508e93d100288b77e535dcc68783',1,'ripple::jss::JSS(consensus)'],['../namespaceripple_1_1jss.html#a8efbbfdebd5c5c73b59183ab96e70327',1,'ripple::jss::JSS(converge_time)'],['../namespaceripple_1_1jss.html#aba21f8c3da711ddec3e9ff44614b6969',1,'ripple::jss::JSS(converge_time_s)'],['../namespaceripple_1_1jss.html#a34bcabf9ad6eb489c5ed0748bea87bb1',1,'ripple::jss::JSS(cookie)'],['../namespaceripple_1_1jss.html#a1c9f4c32e6ff40abb3619b77c3ab6859',1,'ripple::jss::JSS(count)'],['../namespaceripple_1_1jss.html#a5b4a6ab68dee440737c3d7fdd2602871',1,'ripple::jss::JSS(counters)'],['../namespaceripple_1_1jss.html#a692112be4dc2b3084a866259a0ee0b65',1,'ripple::jss::JSS(currency_a)'],['../namespaceripple_1_1jss.html#a9e01b2b112f22799e576f73ed32558c2',1,'ripple::jss::JSS(currency_b)'],['../namespaceripple_1_1jss.html#ae84898736b98bf3b31adefa36765a91f',1,'ripple::jss::JSS(currentShard)'],['../namespaceripple_1_1jss.html#aaf19a6e638c44070d76082827c9a45a8',1,'ripple::jss::JSS(currentShardIndex)'],['../namespaceripple_1_1jss.html#afaf1f1eb0d7d3d1366a80de132c9539a',1,'ripple::jss::JSS(currency)'],['../namespaceripple_1_1jss.html#a36b04fc468f4165afdca8582c12b8661',1,'ripple::jss::JSS(current)'],['../namespaceripple_1_1jss.html#abc322074e7bc31b172ca148510ee211b',1,'ripple::jss::JSS(current_activities)'],['../namespaceripple_1_1jss.html#ac3feb332f7a784c7bdcc65ea1bb59c5f',1,'ripple::jss::JSS(current_ledger_size)'],['../namespaceripple_1_1jss.html#adb9262572038a865a8a96972740373d4',1,'ripple::jss::JSS(current_queue_size)'],['../namespaceripple_1_1jss.html#aec5a2a0a34243ed7abdbf9c1b190faaf',1,'ripple::jss::JSS(data)'],['../namespaceripple_1_1jss.html#ad3773ddc6bd0f25864e58702fe15effb',1,'ripple::jss::JSS(date)'],['../namespaceripple_1_1jss.html#a59351c42acf7193d30ea8c697aec84e2',1,'ripple::jss::JSS(dbKBLedger)'],['../namespaceripple_1_1jss.html#afd28b513ff83ed8471f354e177c27877',1,'ripple::jss::JSS(dbKBTotal)'],['../namespaceripple_1_1jss.html#ae65c4ec94c53671c4e7c37a9b130b451',1,'ripple::jss::JSS(dbKBTransaction)'],['../namespaceripple_1_1jss.html#ad3d18b1e79b66cec6a80ee3c9fc6fe58',1,'ripple::jss::JSS(debug_signing)'],['../namespaceripple_1_1jss.html#a9cd813dc373394e7afc835e1f5810266',1,'ripple::jss::JSS(deletion_blockers_only)'],['../namespaceripple_1_1jss.html#ad49f4c69287015ee8925188acc6477df',1,'ripple::jss::JSS(delivered_amount)'],['../namespaceripple_1_1jss.html#ae8a81aea60229512eea47b8703b9d9e1',1,'ripple::jss::JSS(deposit_authorized)'],['../namespaceripple_1_1jss.html#a506f596977236e4f7a379f1e8977eb24',1,'ripple::jss::JSS(deposit_preauth)'],['../namespaceripple_1_1jss.html#a6fff84046845c0b5d67b93a47ccdd857',1,'ripple::jss::JSS(deprecated)'],['../namespaceripple_1_1jss.html#a3d3975b0ac0a60af806c166d73fb9473',1,'ripple::jss::JSS(descending)'],['../namespaceripple_1_1jss.html#acfb39a018c819fefb53c0f3592714c7f',1,'ripple::jss::JSS(description)'],['../namespaceripple_1_1jss.html#a8fd8eb022bdb13345c6faff5b045a2bc',1,'ripple::jss::JSS(destination)'],['../namespaceripple_1_1jss.html#a8b454341a1834cf0c1e04dbf198a68ee',1,'ripple::jss::JSS(destination_account)'],['../namespaceripple_1_1jss.html#a98b0c210c816cedcd84833b7352a81d8',1,'ripple::jss::JSS(destination_amount)'],['../namespaceripple_1_1jss.html#a5d3f0125e3f6ea39bba35cd91adcebf6',1,'ripple::jss::JSS(destination_currencies)'],['../namespaceripple_1_1jss.html#a93e20077e82505daddf76639df83f270',1,'ripple::jss::JSS(destination_tag)'],['../namespaceripple_1_1jss.html#a33f43524db42b7b02b0a66d6dfb03a32',1,'ripple::jss::JSS(details)'],['../namespaceripple_1_1jss.html#a875aa8bd78378ce579f180f1134abfe6',1,'ripple::jss::JSS(dir_entry)'],['../namespaceripple_1_1jss.html#aecaf77ad6aa35e4523db08d31a8d0359',1,'ripple::jss::JSS(dir_index)'],['../namespaceripple_1_1jss.html#aa1b1c547651f7d0534ce00c3d045e84e',1,'ripple::jss::JSS(dir_root)'],['../namespaceripple_1_1jss.html#a3e89c1411b1c83620ab26594f0e9fe3e',1,'ripple::jss::JSS(directory)'],['../namespaceripple_1_1jss.html#a2add4259b579ec0b7b577ac79cd4547b',1,'ripple::jss::JSS(domain)'],['../namespaceripple_1_1jss.html#afb7c4905c64523f9257b4e3ad37c96e7',1,'ripple::jss::JSS(drops)'],['../namespaceripple_1_1jss.html#acd0817ff6c9da856d6a7198b1507b7bf',1,'ripple::jss::JSS(duration_us)'],['../namespaceripple_1_1jss.html#ad68912f634979603fa9734eeb6512655',1,'ripple::jss::JSS(effective)'],['../namespaceripple_1_1jss.html#a398e71b098c4089a757958062738d764',1,'ripple::jss::JSS(enabled)'],['../namespaceripple_1_1jss.html#ae5118b2033ffb5fce9d6710965a319a3',1,'ripple::jss::JSS(engine_result)'],['../namespaceripple_1_1jss.html#afeb39ec5fcd8c2355e89ca0fc8cae300',1,'ripple::jss::JSS(engine_result_code)'],['../namespaceripple_1_1jss.html#a0b4fe6d4a69b64493bc49c78619229e1',1,'ripple::jss::JSS(engine_result_message)'],['../namespaceripple_1_1jss.html#a29f075af7a947aa1eeb9c9c017aa1c5b',1,'ripple::jss::JSS(ephemeral_key)'],['../namespaceripple_1_1jss.html#aae6e3761f93b5fcfb075e67f99b4602e',1,'ripple::jss::JSS(error)'],['../namespaceripple_1_1jss.html#a0370f775a0d14ee0c9dfeac8b4806a16',1,'ripple::jss::JSS(errored)'],['../namespaceripple_1_1jss.html#a6d5680deffd5a636d1c563d939e27dde',1,'ripple::jss::JSS(error_code)'],['../namespaceripple_1_1jss.html#a2704d55bdbedc84e1cc40d1357fa788a',1,'ripple::jss::JSS(error_exception)'],['../namespaceripple_1_1jss.html#a61623fb7591f317d23f3811bb3caef2b',1,'ripple::jss::JSS(error_message)'],['../namespaceripple_1_1jss.html#a7206959dc2bba27b954f6acb9a6d050c',1,'ripple::jss::JSS(escrow)'],['../namespaceripple_1_1jss.html#a0b774122d2fae57d48a179cceda99c65',1,'ripple::jss::JSS(expand)'],['../namespaceripple_1_1jss.html#a21cf049d34c243a54727c4b6a8650253',1,'ripple::jss::JSS(expected_date)'],['../namespaceripple_1_1jss.html#af0ec96bf32d542e3bf27120e5a0538f2',1,'ripple::jss::JSS(expected_date_UTC)'],['../namespaceripple_1_1jss.html#ad3faef86179a660bc23170e096a212fd',1,'ripple::jss::JSS(expected_ledger_size)'],['../namespaceripple_1_1jss.html#a2951f3d0d0e756b9623b03e10cc83e13',1,'ripple::jss::JSS(expiration)'],['../namespaceripple_1_1jss.html#afb656d6325fef64a1e10399568735a0b',1,'ripple::jss::JSS(fail_hard)'],['../namespaceripple_1_1jss.html#ac15059fe46cbfcd61fd073c0af432a7c',1,'ripple::jss::JSS(failed)'],['../namespaceripple_1_1jss.html#ab7ad13f436fe30db027ba0ee37f4f33f',1,'ripple::jss::JSS(feature)'],['../namespaceripple_1_1jss.html#a0b4d7ef0eed5b9d06c02d6c883fcd387',1,'ripple::jss::JSS(features)'],['../namespaceripple_1_1jss.html#a58bbfb30a5805800847e0e9bf338a247',1,'ripple::jss::JSS(fee)'],['../namespaceripple_1_1jss.html#ae6d0c17a1b5c98b3a1f482f1205d9a12',1,'ripple::jss::JSS(fee_base)'],['../namespaceripple_1_1jss.html#a391fe9a28d31e33c6fc13475f57cf2c9',1,'ripple::jss::JSS(fee_div_max)'],['../namespaceripple_1_1jss.html#af0b1e7a8d76a926b01b7eaa028bbea46',1,'ripple::jss::JSS(fee_level)'],['../namespaceripple_1_1jss.html#aca8f86c3e5e6eb887899e7ee8bc0df7e',1,'ripple::jss::JSS(fee_mult_max)'],['../namespaceripple_1_1jss.html#a215d4f60eff867cd2c084e47e50a634e',1,'ripple::jss::JSS(fee_ref)'],['../namespaceripple_1_1jss.html#a18a9254962f7b987daca625b58b97ab7',1,'ripple::jss::JSS(fetch_pack)'],['../namespaceripple_1_1jss.html#a1d3b972f322b00065a0ef477ae22ba7b',1,'ripple::jss::JSS(first)'],['../namespaceripple_1_1jss.html#a18c045692285619aa6c595092710a51f',1,'ripple::jss::JSS(firstSequence)'],['../namespaceripple_1_1jss.html#af8a54cfef2aae02c9aeea61822e2f8c8',1,'ripple::jss::JSS(firstShardIndex)'],['../namespaceripple_1_1jss.html#a032838c5d8db1bdc76bcab5468995e9c',1,'ripple::jss::JSS(finished)'],['../namespaceripple_1_1jss.html#a46bf0460849388d3c788a79475da7b9e',1,'ripple::jss::JSS(fix_txns)'],['../namespaceripple_1_1jss.html#ab015225765c7465956d7248de13fa836',1,'ripple::jss::JSS(flags)'],['../namespaceripple_1_1jss.html#abb4f36b2f14a61c19f6cb026fb5a2cde',1,'ripple::jss::JSS(forward)'],['../namespaceripple_1_1jss.html#ae11bc6df38ffffd6cdba11058d9f450e',1,'ripple::jss::JSS(freeze)'],['../namespaceripple_1_1jss.html#abadfba906869530654549a2903f3b467',1,'ripple::jss::JSS(freeze_peer)'],['../namespaceripple_1_1jss.html#abae39ee9010b7cecf956add9ae5c9e81',1,'ripple::jss::JSS(frozen_balances)'],['../namespaceripple_1_1jss.html#ad5c07ed50d451e1da919232d119c0966',1,'ripple::jss::JSS(full)'],['../namespaceripple_1_1jss.html#adc78f312cddb8bb99c88c21db7cb7d4e',1,'ripple::jss::JSS(full_reply)'],['../namespaceripple_1_1jss.html#a237dcb272333b56a5ee89cc6147a5ecd',1,'ripple::jss::JSS(fullbelow_size)'],['../namespaceripple_1_1jss.html#a83ae7878ac025ef9562deca56776439f',1,'ripple::jss::JSS(good)'],['../namespaceripple_1_1jss.html#ad39f40f57e1aaa1121515da7cce1cac9',1,'ripple::jss::JSS(hash)'],['../namespaceripple_1_1jss.html#afaa2945fd9dd118b9a3bb058bc22cb3c',1,'ripple::jss::JSS(hashes)'],['../namespaceripple_1_1jss.html#a29703852e6ac4d8e5e4c0adeb7a03632',1,'ripple::jss::JSS(have_header)'],['../namespaceripple_1_1jss.html#a0ed3527e30f4af562c1b52210d9a22f8',1,'ripple::jss::JSS(have_state)'],['../namespaceripple_1_1jss.html#ad9e4342ddb4e120f1f2deba85b8888b0',1,'ripple::jss::JSS(have_transactions)'],['../namespaceripple_1_1jss.html#afba54f374631b9f33350dce8c358f447',1,'ripple::jss::JSS(high)'],['../namespaceripple_1_1jss.html#ac2d270ee51d74be36d4a1a6ecc9a33d5',1,'ripple::jss::JSS(highest_sequence)'],['../namespaceripple_1_1jss.html#a820e84cdb69d387b1cc0e3836df0742f',1,'ripple::jss::JSS(highest_ticket)'],['../namespaceripple_1_1jss.html#afc5eb500ed30b44d1cdba061f4cbf59f',1,'ripple::jss::JSS(historical_perminute)'],['../namespaceripple_1_1jss.html#a46834411d84b7901465087a4ad98043a',1,'ripple::jss::JSS(hostid)'],['../namespaceripple_1_1jss.html#ae1d31e9c62441a6aa13535443476724c',1,'ripple::jss::JSS(hotwallet)'],['../namespaceripple_1_1jss.html#aec7d9c55f43c8b74ed535a2cbd8efeb0',1,'ripple::jss::JSS(id)'],['../namespaceripple_1_1jss.html#aafdbabe0d2d3fbcc03944c6cce33e9f3',1,'ripple::jss::JSS(ident)'],['../namespaceripple_1_1jss.html#aaa69a01a572916e73ccf2f4d513f9ab6',1,'ripple::jss::JSS(ignore_default)'],['../namespaceripple_1_1jss.html#abef52d6643f645cbb8864a134912bb25',1,'ripple::jss::JSS(inLedger)'],['../namespaceripple_1_1jss.html#ac124c60c2739c9837a88336162221c0b',1,'ripple::jss::JSS(inbound)'],['../namespaceripple_1_1jss.html#a34e8647bf74e7c136db537717e02f8f7',1,'ripple::jss::JSS(index)'],['../namespaceripple_1_1jss.html#a6f04c49d9122ed3be42c66692af3b3ae',1,'ripple::jss::JSS(info)'],['../namespaceripple_1_1jss.html#a98b32b94f74b793aa56b9b38c754e0c4',1,'ripple::jss::JSS(initial_sync_duration_us)'],['../namespaceripple_1_1jss.html#a2a907e5f04837f9c2388b648d1c3eeb2',1,'ripple::jss::JSS(internal_command)'],['../namespaceripple_1_1jss.html#ac8a338bdcf84803d61a5bc78810372fb',1,'ripple::jss::JSS(invalid_API_version)'],['../namespaceripple_1_1jss.html#af1177a9dfd442428127cf177737736a2',1,'ripple::jss::JSS(io_latency_ms)'],['../namespaceripple_1_1jss.html#a862f68b5891afa2eb547ec3f9b682d5f',1,'ripple::jss::JSS(ip)'],['../namespaceripple_1_1jss.html#a7e299a1871aecf886aa10b578c6545c0',1,'ripple::jss::JSS(issuer)'],['../namespaceripple_1_1jss.html#a8e2c359715479cdc1457576fcdaa1bce',1,'ripple::jss::JSS(job)'],['../namespaceripple_1_1jss.html#a173c811816e2dc2171e713b4cb4ca8bf',1,'ripple::jss::JSS(job_queue)'],['../namespaceripple_1_1jss.html#a4180ceb26394ec47ed00284996c9b5d8',1,'ripple::jss::JSS(jobs)'],['../namespaceripple_1_1jss.html#a0afcf3006ab72333c31530b7351857c6',1,'ripple::jss::JSS(jsonrpc)'],['../namespaceripple_1_1jss.html#a641417496c5a7634abfc852bbd0eb9d7',1,'ripple::jss::JSS(jq_trans_overflow)'],['../namespaceripple_1_1jss.html#adecb26ce36b6b9762d766e2ab3396dc9',1,'ripple::jss::JSS(kept)'],['../namespaceripple_1_1jss.html#a406f85e2c5ae01882773cb4b09070f2b',1,'ripple::jss::JSS(key)'],['../namespaceripple_1_1jss.html#a427a778204fa66a55c3683ed000c1e9c',1,'ripple::jss::JSS(key_type)'],['../namespaceripple_1_1jss.html#aeae6972c9a347179222e4c3ca437ea42',1,'ripple::jss::JSS(latency)'],['../namespaceripple_1_1jss.html#a3ff236a09100028b3cf7649f08742e01',1,'ripple::jss::JSS(last)'],['../namespaceripple_1_1jss.html#a0571e3121cad11e1a751f2de565931c3',1,'ripple::jss::JSS(lastSequence)'],['../namespaceripple_1_1jss.html#ae9ae06a52b93b74cdefe1edbe438c4bd',1,'ripple::jss::JSS(lastShardIndex)'],['../namespaceripple_1_1jss.html#ab46428949d3e39914238f5f8cc0f2551',1,'ripple::jss::JSS(last_close)'],['../namespaceripple_1_1jss.html#a7ee6521d32812087edec35dc47ca1781',1,'ripple::jss::JSS(last_refresh_time)'],['../namespaceripple_1_1jss.html#aef21c6b9d2a8339207b1cb4949f24e72',1,'ripple::jss::JSS(last_refresh_status)'],['../namespaceripple_1_1jss.html#a1714928cf2b78f86feaf169a5a52c644',1,'ripple::jss::JSS(last_refresh_message)'],['../namespaceripple_1_1jss.html#a992bc8de5c39f87a28aa26d343c11e32',1,'ripple::jss::JSS(ledger)'],['../namespaceripple_1_1jss.html#a675bf95ddfed251aeedce8eaaa748cbe',1,'ripple::jss::JSS(ledger_current_index)'],['../namespaceripple_1_1jss.html#af3306e6b1b2d6b4ee00372b94eb7ef0a',1,'ripple::jss::JSS(ledger_data)'],['../namespaceripple_1_1jss.html#aaeb14d8510ef99859f296a789e51f088',1,'ripple::jss::JSS(ledger_hash)'],['../namespaceripple_1_1jss.html#a08df679178e9ac6201ca5d85d3bf8e38',1,'ripple::jss::JSS(ledger_hit_rate)'],['../namespaceripple_1_1jss.html#a2c7231c67e2a5a5dab79fde4e24ce6d5',1,'ripple::jss::JSS(ledger_index)'],['../namespaceripple_1_1jss.html#a047aecac6e8b1272f2f1bd6bd4f59b6b',1,'ripple::jss::JSS(ledger_index_max)'],['../namespaceripple_1_1jss.html#ac4d1c3618248ee0fadfc5ebdaf90ab21',1,'ripple::jss::JSS(ledger_index_min)'],['../namespaceripple_1_1jss.html#ab06c7c81e25495e0466163e3b6cc5ecc',1,'ripple::jss::JSS(ledger_max)'],['../namespaceripple_1_1jss.html#a8f9dcace83a46f1f1e12e10bafaec465',1,'ripple::jss::JSS(ledger_min)'],['../namespaceripple_1_1jss.html#a5b7555b733a4e1a0c5ec94f30751f470',1,'ripple::jss::JSS(ledger_time)'],['../namespaceripple_1_1jss.html#a72b110f05042e0e6da706fe6aadac75d',1,'ripple::jss::JSS(levels)'],['../namespaceripple_1_1jss.html#aa3afe635c40b7eba919b88f7d6ffa058',1,'ripple::jss::JSS(limit)'],['../namespaceripple_1_1jss.html#a5bea40cc26d67ea2f069fd6bc22d4b98',1,'ripple::jss::JSS(limit_peer)'],['../namespaceripple_1_1jss.html#ab9c3372089b08854d1edc3d7a8ac442c',1,'ripple::jss::JSS(lines)'],['../namespaceripple_1_1jss.html#a556ba5c427b4de420ba4fa95ccc8588b',1,'ripple::jss::JSS(list)'],['../namespaceripple_1_1jss.html#a4c6cccb2d97e9d74e0e7b84e638f4cbb',1,'ripple::jss::JSS(load)'],['../namespaceripple_1_1jss.html#a383ec9b21645a71314feed235281ec3d',1,'ripple::jss::JSS(load_base)'],['../namespaceripple_1_1jss.html#abf0c49f3f1d0b325d70e51bcad949eed',1,'ripple::jss::JSS(load_factor)'],['../namespaceripple_1_1jss.html#a6802d5c244124e8668e648c1eb35d13f',1,'ripple::jss::JSS(load_factor_cluster)'],['../namespaceripple_1_1jss.html#a90d596bc1be1e33aae7c1b4bbab85788',1,'ripple::jss::JSS(load_factor_fee_escalation)'],['../namespaceripple_1_1jss.html#aa34ec46a165e26160681a9bf02f47e8e',1,'ripple::jss::JSS(load_factor_fee_queue)'],['../namespaceripple_1_1jss.html#a13ba923543ae78606621a921f6d73f2f',1,'ripple::jss::JSS(load_factor_fee_reference)'],['../namespaceripple_1_1jss.html#a6a11292900910bfbc6250dc4b64dcadc',1,'ripple::jss::JSS(load_factor_local)'],['../namespaceripple_1_1jss.html#a4ed9602bfc5613fb72bba4bf6578b9b6',1,'ripple::jss::JSS(load_factor_net)'],['../namespaceripple_1_1jss.html#a245b4eda0af317f71dd64201e5de6c85',1,'ripple::jss::JSS(load_factor_server)'],['../namespaceripple_1_1jss.html#a373f4468b245935e969e055534b02dac',1,'ripple::jss::JSS(load_fee)'],['../namespaceripple_1_1jss.html#abd1f5c593f4a84b51f61fb98b1947f3f',1,'ripple::jss::JSS(local)'],['../namespaceripple_1_1jss.html#aac8e8f4c448f28283f3260e5726e16b7',1,'ripple::jss::JSS(local_txs)'],['../namespaceripple_1_1jss.html#a066a511baab3a42710ee18b1467d0e64',1,'ripple::jss::JSS(local_static_keys)'],['../namespaceripple_1_1jss.html#ac5483f7a3d46b7255c08b6ed06b59328',1,'ripple::jss::JSS(low)'],['../namespaceripple_1_1jss.html#ae22c1de160239666c2978a4ed8d0c08d',1,'ripple::jss::JSS(lowest_sequence)'],['../namespaceripple_1_1jss.html#a390ad84f4ee9211b8dfc8f9ba4afb1c9',1,'ripple::jss::JSS(lowest_ticket)'],['../namespaceripple_1_1jss.html#af626284ae3dc6049b95e9b0e4f7a2e15',1,'ripple::jss::JSS(majority)'],['../namespaceripple_1_1jss.html#ad2bd13dd26ddb7dcbab1a30d0ad5d585',1,'ripple::jss::JSS(manifest)'],['../namespaceripple_1_1jss.html#ac0bfb550d212b03bfd8e2148bd045177',1,'ripple::jss::JSS(marker)'],['../namespaceripple_1_1jss.html#adc0d3b81f16a66efb835a20963fa7a91',1,'ripple::jss::JSS(master_key)'],['../namespaceripple_1_1jss.html#a6ffbe65da7d08e8aa9fbdd569c3f803f',1,'ripple::jss::JSS(master_seed)'],['../namespaceripple_1_1jss.html#a90cb226d586e3a3974187f5a4917ccb8',1,'ripple::jss::JSS(master_seed_hex)'],['../namespaceripple_1_1jss.html#a2bb59f1e2ccc8fcf1022765b055ac8e8',1,'ripple::jss::JSS(master_signature)'],['../namespaceripple_1_1jss.html#a8c5be9f9c158869fbe745859a13c0a39',1,'ripple::jss::JSS(max_ledger)'],['../namespaceripple_1_1jss.html#af778b000f84666324b93a0c06a98b6e1',1,'ripple::jss::JSS(max_queue_size)'],['../namespaceripple_1_1jss.html#a8c3c692cc17a76c63a0961c9dcfd8792',1,'ripple::jss::JSS(max_spend_drops)'],['../namespaceripple_1_1jss.html#a2a597026393c9d7ab75e808201a8e7ed',1,'ripple::jss::JSS(max_spend_drops_total)'],['../namespaceripple_1_1jss.html#aedb5564b792c8255001275b457df1cd7',1,'ripple::jss::JSS(median_fee)'],['../namespaceripple_1_1jss.html#a4f81aef1a9bcae2f074b31ee373b94d9',1,'ripple::jss::JSS(median_level)'],['../namespaceripple_1_1jss.html#a5cd54ed1066847300869c4f6f4b624be',1,'ripple::jss::JSS(message)'],['../namespaceripple_1_1jss.html#a5a96309cb3f861cef5cd4f2ac6a44625',1,'ripple::jss::JSS(meta)'],['../namespaceripple_1_1jss.html#a90582d8dae6b02654a960471c58a6dfd',1,'ripple::jss::JSS(metaData)'],['../namespaceripple_1_1jss.html#a7bdf102a1b27098110dead1372aa9b5e',1,'ripple::jss::JSS(metadata)'],['../namespaceripple_1_1jss.html#a5d9075b1c58ae9c75f9592da61924c93',1,'ripple::jss::JSS(method)'],['../namespaceripple_1_1jss.html#a8681bb5e03eefa86e3659a614ebd07ff',1,'ripple::jss::JSS(methods)'],['../namespaceripple_1_1jss.html#afd388f8eb1116c9890c0b9b66f9b4698',1,'ripple::jss::JSS(metrics)'],['../namespaceripple_1_1jss.html#a0036690b962026ff10c95307a5a65b87',1,'ripple::jss::JSS(min_count)'],['../namespaceripple_1_1jss.html#a544b34a294393261eed39f96860ef21d',1,'ripple::jss::JSS(min_ledger)'],['../namespaceripple_1_1jss.html#a3ec35c73fd9a79fbd39d141d9490f1b5',1,'ripple::jss::JSS(minimum_fee)'],['../namespaceripple_1_1jss.html#a43c27472d5aa7bfd0268742c7fa9d78a',1,'ripple::jss::JSS(minimum_level)'],['../namespaceripple_1_1jss.html#a435c67595d4fb9eda997fc38148c5992',1,'ripple::jss::JSS(missingCommand)'],['../namespaceripple_1_1jss.html#a7d4c42927e3deaf2718257b187945bd1',1,'ripple::jss::JSS(name)'],['../namespaceripple_1_1jss.html#a4d1bee255ff817c13039f01b578bd04e',1,'ripple::jss::JSS(needed_state_hashes)'],['../namespaceripple_1_1jss.html#a0873b466701543ba534e57b4f29c87ce',1,'ripple::jss::JSS(needed_transaction_hashes)'],['../namespaceripple_1_1jss.html#ade22bdc9faf2b34a0ad6895de567b17e',1,'ripple::jss::JSS(network_id)'],['../namespaceripple_1_1jss.html#a70f97400a3740fd6ff4a4808d96fa385',1,'ripple::jss::JSS(network_ledger)'],['../namespaceripple_1_1jss.html#a5314dd903b04bfb0be2a2fb5e9f5e943',1,'ripple::jss::JSS(next_refresh_time)'],['../namespaceripple_1_1jss.html#a0f208889b443f105e3d4d2a37d89dff2',1,'ripple::jss::JSS(nft_id)'],['../namespaceripple_1_1jss.html#a0d2354620b5d5fd20e08e865fbaf4dec',1,'ripple::jss::JSS(nft_offer)'],['../namespaceripple_1_1jss.html#af96e6b8ada045d9895c3b13e2fdd1f5f',1,'ripple::jss::JSS(nft_offer_index)'],['../namespaceripple_1_1jss.html#a6408f29a93408770cb7124876ad935ad',1,'ripple::jss::JSS(nft_page)'],['../namespaceripple_1_1jss.html#ac903b8674b95c58a9bf72e1f54a78ac7',1,'ripple::jss::JSS(nft_serial)'],['../namespaceripple_1_1jss.html#a098e303535d59f2a1c222346648af4e1',1,'ripple::jss::JSS(no_ripple)'],['../namespaceripple_1_1jss.html#a62085c1b921768741e00af54424dabe8',1,'ripple::jss::JSS(no_ripple_peer)'],['../namespaceripple_1_1jss.html#a5ce1412776f6628085ada99ae860c496',1,'ripple::jss::JSS(node)'],['../namespaceripple_1_1jss.html#a0cdc2371c0dd8d4f4faa58126a532193',1,'ripple::jss::JSS(node_binary)'],['../namespaceripple_1_1jss.html#a89afdea55b77ffd7c0c5f92ec55f6f06',1,'ripple::jss::JSS(node_read_bytes)'],['../namespaceripple_1_1jss.html#a1f76320b1f860ab0e2510496b25f84d5',1,'ripple::jss::JSS(node_read_errors)'],['../namespaceripple_1_1jss.html#a4d767ff4480ea95fef87f65280c32341',1,'ripple::jss::JSS(node_read_retries)'],['../namespaceripple_1_1jss.html#a37c493225502be5ff30227fb6f5a8ea9',1,'ripple::jss::JSS(node_reads_hit)'],['../namespaceripple_1_1jss.html#a22fac9837a20d746c926090feccfde41',1,'ripple::jss::JSS(node_reads_total)'],['../namespaceripple_1_1jss.html#a2d1927386a4f598a1fac81248719eb29',1,'ripple::jss::JSS(node_reads_duration_us)'],['../namespaceripple_1_1jss.html#ade0100e0c0f7185673cb60099f69ef39',1,'ripple::jss::JSS(node_size)'],['../namespaceripple_1_1jss.html#a115fc43a11cbf6662f80bc28e7cf9cb7',1,'ripple::jss::JSS(nodestore)'],['../namespaceripple_1_1jss.html#aebc8390afa967a29debdc5bf919f29a5',1,'ripple::jss::JSS(node_writes)'],['../namespaceripple_1_1jss.html#ae1a55e6dc828b545c246bce2fd5f612b',1,'ripple::jss::JSS(node_written_bytes)'],['../namespaceripple_1_1jss.html#a77238346f1b44643500210cd3d424553',1,'ripple::jss::JSS(node_writes_duration_us)'],['../namespaceripple_1_1jss.html#af32cc33872d30172ae95d39280f76c0d',1,'ripple::jss::JSS(node_write_retries)'],['../namespaceripple_1_1jss.html#a344b30d62916b0ac04ca7c99322b4c4d',1,'ripple::jss::JSS(node_writes_delayed)'],['../namespaceripple_1_1jss.html#a4c1c6394675679df4cbccfcf6669e415',1,'ripple::jss::JSS(obligations)'],['../namespaceripple_1_1jss.html#a01ab5926a0cc9e85eb8cabf137949287',1,'ripple::jss::JSS(offer)'],['../namespaceripple_1_1jss.html#a0d05c76a6523c8b9322876f900118c12',1,'ripple::jss::JSS(offers)'],['../namespaceripple_1_1jss.html#add2923b71f2b172f1194f98309a2e241',1,'ripple::jss::JSS(offline)'],['../namespaceripple_1_1jss.html#a6cbba2e11f288b221785c2ba8c7ef660',1,'ripple::jss::JSS(offset)'],['../namespaceripple_1_1jss.html#a74a2a83ae37909eea587bb4fc93d4d3d',1,'ripple::jss::JSS(open)'],['../namespaceripple_1_1jss.html#a17303714c81b985a736e2a6d4a377ed7',1,'ripple::jss::JSS(open_ledger_cost)'],['../namespaceripple_1_1jss.html#a1958ad7592fcfbe13fdceb1e965b54cf',1,'ripple::jss::JSS(open_ledger_fee)'],['../namespaceripple_1_1jss.html#a1f5eeb938cd57eaec4f680ec5e626051',1,'ripple::jss::JSS(open_ledger_level)'],['../namespaceripple_1_1jss.html#aa9cfe2151c29a8c510fc66523d88c409',1,'ripple::jss::JSS(owner)'],['../namespaceripple_1_1jss.html#a6984e6a016f86b4559beb39101d970ad',1,'ripple::jss::JSS(owner_funds)'],['../namespaceripple_1_1jss.html#a54d8e4416540559d3b2c7f68e9160303',1,'ripple::jss::JSS(page_index)'],['../namespaceripple_1_1jss.html#af39b84953ad76f2caab306726e10cdce',1,'ripple::jss::JSS(params)'],['../namespaceripple_1_1jss.html#a72de494d7ba36760386c50b2d947fd18',1,'ripple::jss::JSS(parent_close_time)'],['../namespaceripple_1_1jss.html#aa9ba5e244629a133b8c6c24dd5388e6d',1,'ripple::jss::JSS(parent_hash)'],['../namespaceripple_1_1jss.html#afd0df8b37f6f52b0f690338508187086',1,'ripple::jss::JSS(partition)'],['../namespaceripple_1_1jss.html#a86461ac8d22c5d7011d8a5a2438095b3',1,'ripple::jss::JSS(passphrase)'],['../namespaceripple_1_1jss.html#a41a4b92b7d4a072018c395e42d7eb867',1,'ripple::jss::JSS(password)'],['../namespaceripple_1_1jss.html#af624b4728b1943720cbe71f5ff390943',1,'ripple::jss::JSS(paths)'],['../namespaceripple_1_1jss.html#abb3be6225bed3b89300ea12e3d48fc16',1,'ripple::jss::JSS(paths_canonical)'],['../namespaceripple_1_1jss.html#a6c0933e11f6a25f959ff939a3045e0ac',1,'ripple::jss::JSS(paths_computed)'],['../namespaceripple_1_1jss.html#a3d861d419d20d538b86e2ab710673645',1,'ripple::jss::JSS(payment_channel)'],['../namespaceripple_1_1jss.html#a59b7bc58e5605b228176d8b7509a8c65',1,'ripple::jss::JSS(peer)'],['../namespaceripple_1_1jss.html#ad8ff0d62f2883de7f8905311ed406103',1,'ripple::jss::JSS(peer_authorized)'],['../namespaceripple_1_1jss.html#ad8bb0359456f031169a4c6ddec5c129a',1,'ripple::jss::JSS(peer_id)'],['../namespaceripple_1_1jss.html#a7e1a66a281df46a5ed4e01b14c899e38',1,'ripple::jss::JSS(peers)'],['../namespaceripple_1_1jss.html#a88d37f07b853e2c1f60a31f424ffd5ce',1,'ripple::jss::JSS(peer_disconnects)'],['../namespaceripple_1_1jss.html#a129c4f438a7222b0d4ab097a9b4bd814',1,'ripple::jss::JSS(peer_disconnects_resources)'],['../namespaceripple_1_1jss.html#aadf5b61855beac3c7038de8009f4ce73',1,'ripple::jss::JSS(port)'],['../namespaceripple_1_1jss.html#afdb2d45c51e33968c1ff8ae7253e74f6',1,'ripple::jss::JSS(previous)'],['../namespaceripple_1_1jss.html#acdeff6961b45ef1da68dce5b1e7335de',1,'ripple::jss::JSS(previous_ledger)'],['../namespaceripple_1_1jss.html#aae7a0aeb3b8036a6a881a0e8d5154625',1,'ripple::jss::JSS(proof)'],['../namespaceripple_1_1jss.html#a3a888a411dcef169a956cae089a33573',1,'ripple::jss::JSS(propose_seq)'],['../namespaceripple_1_1jss.html#a109e160e7f01eda1c4e0b2f62b044f3c',1,'ripple::jss::JSS(proposers)'],['../namespaceripple_1_1jss.html#addd2ba49519cf4c184288ab57b3a4115',1,'ripple::jss::JSS(protocol)'],['../namespaceripple_1_1jss.html#aca834f8a93d2b4610b0da7c0095978af',1,'ripple::jss::JSS(proxied)'],['../namespaceripple_1_1jss.html#a156846a12e4481025f044acf1382c383',1,'ripple::jss::JSS(pubkey_node)'],['../namespaceripple_1_1jss.html#a40e55c8a5223e39f492bfb1215cbc9aa',1,'ripple::jss::JSS(pubkey_publisher)'],['../namespaceripple_1_1jss.html#aebc6a9c0935c49aba5010b9026ce880e',1,'ripple::jss::JSS(pubkey_validator)'],['../namespaceripple_1_1jss.html#ae45158a42c79f0f50aed8c8cc0553d30',1,'ripple::jss::JSS(public_key)'],['../namespaceripple_1_1jss.html#a6a2f90321e9be56fd5a344c431aa95ea',1,'ripple::jss::JSS(public_key_hex)'],['../namespaceripple_1_1jss.html#a671b12f8ca23cfd12363ec4b1f723d6b',1,'ripple::jss::JSS(published_ledger)'],['../namespaceripple_1_1jss.html#aa75a8d5cb609d4cceb2d15eb13212e43',1,'ripple::jss::JSS(publisher_lists)'],['../namespaceripple_1_1jss.html#a27f2611bb5cb26cb7dd7523bc0ad0dee',1,'ripple::jss::JSS(quality)'],['../namespaceripple_1_1jss.html#ad03aa2d2fd83909d2e237a463010f121',1,'ripple::jss::JSS(quality_in)'],['../namespaceripple_1_1jss.html#a65e4d5e35f00f6cdae89ba256619d4ef',1,'ripple::jss::JSS(quality_out)'],['../namespaceripple_1_1jss.html#a7151e1b6cd5e6b1be198a56cd01597ef',1,'ripple::jss::JSS(queue)'],['../namespaceripple_1_1jss.html#a1b1fb3bd7ac8c3663af34bd384ae2355',1,'ripple::jss::JSS(queue_data)'],['../namespaceripple_1_1jss.html#ad88d8e74f87b163bf99549092aaf4b20',1,'ripple::jss::JSS(queued)'],['../namespaceripple_1_1jss.html#a9ccfabf15341bdacf0ac717557a0af23',1,'ripple::jss::JSS(queued_duration_us)'],['../namespaceripple_1_1jss.html#ae32a9da487a082aff61a78419b1a4b44',1,'ripple::jss::JSS(random)'],['../namespaceripple_1_1jss.html#ae2351e897c6dca3c3aab25bb17086100',1,'ripple::jss::JSS(raw_meta)'],['../namespaceripple_1_1jss.html#a47b7654a9a4eef538dc7f309780e061c',1,'ripple::jss::JSS(receive_currencies)'],['../namespaceripple_1_1jss.html#a4b7000091c118b53355d3b8d198d3971',1,'ripple::jss::JSS(reference_level)'],['../namespaceripple_1_1jss.html#a266812190eb5b39cf50d8cff6301fd68',1,'ripple::jss::JSS(refresh_interval)'],['../namespaceripple_1_1jss.html#a853d712e533630145a9070d8de85c79c',1,'ripple::jss::JSS(refresh_interval_min)'],['../namespaceripple_1_1jss.html#a946b6283b24392f9786b2ca7e61d11be',1,'ripple::jss::JSS(regular_seed)'],['../namespaceripple_1_1jss.html#a16710749bcca2b74e4ce87362c895550',1,'ripple::jss::JSS(remaining)'],['../namespaceripple_1_1jss.html#aaa1fb1f97e994f096b2720c0177b1b64',1,'ripple::jss::JSS(remote)'],['../namespaceripple_1_1jss.html#a1ddddc3f0a35d9b0dc63eefe5d329ece',1,'ripple::jss::JSS(request)'],['../namespaceripple_1_1jss.html#a031ab5db8b438db6e044bb615dcd437f',1,'ripple::jss::JSS(requested)'],['../namespaceripple_1_1jss.html#a23b89ac7132b73c99b2c4eeb6a7d5ba8',1,'ripple::jss::JSS(reservations)'],['../namespaceripple_1_1jss.html#a06e38430b8efacb449dae68e3e4bd719',1,'ripple::jss::JSS(reserve_base)'],['../namespaceripple_1_1jss.html#ad3f0b63bc2dc00989d74e5e2a98d8cef',1,'ripple::jss::JSS(reserve_base_xrp)'],['../namespaceripple_1_1jss.html#a434d67df095e4b93d2888329a312f249',1,'ripple::jss::JSS(reserve_inc)'],['../namespaceripple_1_1jss.html#a30d26962060ab84f953bd174d741ef35',1,'ripple::jss::JSS(reserve_inc_xrp)'],['../namespaceripple_1_1jss.html#afa9140cf9fc26b240b3cf9d7fd9a543a',1,'ripple::jss::JSS(response)'],['../namespaceripple_1_1jss.html#ab002c1b47c7b6c1196acae240c368fd8',1,'ripple::jss::JSS(result)'],['../namespaceripple_1_1jss.html#aad2d58ba32ffb0f05e20ec574f739730',1,'ripple::jss::JSS(ripple_lines)'],['../namespaceripple_1_1jss.html#a833d63c2022621a71bca7c976fcbe2c4',1,'ripple::jss::JSS(ripple_state)'],['../namespaceripple_1_1jss.html#aceed5baff161853077dd6dc6156a59c7',1,'ripple::jss::JSS(ripplerpc)'],['../namespaceripple_1_1jss.html#ae0d5803772678f19be9d7f4bd8b39fac',1,'ripple::jss::JSS(role)'],['../namespaceripple_1_1jss.html#acfb087c654466263af799d1ef4415621',1,'ripple::jss::JSS(rpc)'],['../namespaceripple_1_1jss.html#aee7d0dc691e3014ab6e0241581527dd0',1,'ripple::jss::JSS(rt_accounts)'],['../namespaceripple_1_1jss.html#ac10cf2f8c791afac756962bfdf0f0e03',1,'ripple::jss::JSS(running_duration_us)'],['../namespaceripple_1_1jss.html#ac20f25e4c6699c9a11bb2dbdbfbd35b9',1,'ripple::jss::JSS(search_depth)'],['../namespaceripple_1_1jss.html#a33fdabee7255bc9cc0e6e02e969fd299',1,'ripple::jss::JSS(searched_all)'],['../namespaceripple_1_1jss.html#ab4bf22346e3ce730490fbac54e554319',1,'ripple::jss::JSS(secret)'],['../namespaceripple_1_1jss.html#a769765c53f57269b83469eb86fc43a2a',1,'ripple::jss::JSS(seed)'],['../namespaceripple_1_1jss.html#a18388591c49bdd58426717b896454422',1,'ripple::jss::JSS(seed_hex)'],['../namespaceripple_1_1jss.html#a19c5c81ca6ad9e1d521ffe82d8bc82bf',1,'ripple::jss::JSS(send_currencies)'],['../namespaceripple_1_1jss.html#a6558b4b11170f4fcde5bd6785543db00',1,'ripple::jss::JSS(send_max)'],['../namespaceripple_1_1jss.html#a21e87d098bb9496f57815da1ed358268',1,'ripple::jss::JSS(seq)'],['../namespaceripple_1_1jss.html#a945891671330ca1451741d6a01ce6c26',1,'ripple::jss::JSS(seqNum)'],['../namespaceripple_1_1jss.html#ae76e64937bdbbe06eb62cb73d3db5b44',1,'ripple::jss::JSS(sequence)'],['../namespaceripple_1_1jss.html#a6bcffda6c02a858abbeecdf9e58d6d19',1,'ripple::jss::JSS(sequence_count)'],['../namespaceripple_1_1jss.html#a87398173e2f3a0763f49b9144f247394',1,'ripple::jss::JSS(server_domain)'],['../namespaceripple_1_1jss.html#ae8685ce87a27424455d732e70d6749e9',1,'ripple::jss::JSS(server_state)'],['../namespaceripple_1_1jss.html#a72748915540b0400ebdfd7d350940dd5',1,'ripple::jss::JSS(server_state_duration_us)'],['../namespaceripple_1_1jss.html#af11133bbbb71606c744f48cf7cc73ffc',1,'ripple::jss::JSS(server_status)'],['../namespaceripple_1_1jss.html#aaaf7f7ce7cef0bc80576bce7dd083191',1,'ripple::jss::JSS(server_version)'],['../namespaceripple_1_1jss.html#a215e9223a6ae3e03e928c0052194dce2',1,'ripple::jss::JSS(settle_delay)'],['../namespaceripple_1_1jss.html#ab446d169fde4c5d39607f455ef7409d1',1,'ripple::jss::JSS(severity)'],['../namespaceripple_1_1jss.html#aa1162195b20caadd962d37ad3166e123',1,'ripple::jss::JSS(shards)'],['../namespaceripple_1_1jss.html#ad1550695b4ced1ef2148768548629164',1,'ripple::jss::JSS(signature)'],['../namespaceripple_1_1jss.html#a27e7424f63a6ba421a741a060883a9eb',1,'ripple::jss::JSS(signature_verified)'],['../namespaceripple_1_1jss.html#a33cf28c33911e126a41f5a52cc2aa76f',1,'ripple::jss::JSS(signing_key)'],['../namespaceripple_1_1jss.html#a0774d2833b9d21039c9d915b80ba5fd6',1,'ripple::jss::JSS(signing_keys)'],['../namespaceripple_1_1jss.html#a04d13dd9fcb31ff9cd99da7ef25ea89c',1,'ripple::jss::JSS(signing_time)'],['../namespaceripple_1_1jss.html#a20f00ada4190a5f544e941b43a36c381',1,'ripple::jss::JSS(signer_list)'],['../namespaceripple_1_1jss.html#a5077d3e4db756f7aa886582b511f3e89',1,'ripple::jss::JSS(signer_lists)'],['../namespaceripple_1_1jss.html#a1c5210d6f3f79fd228eba85b3feabe0c',1,'ripple::jss::JSS(snapshot)'],['../namespaceripple_1_1jss.html#a61c4b74cb35954d878c11c38dbb0254f',1,'ripple::jss::JSS(source_account)'],['../namespaceripple_1_1jss.html#ad8a759db804a103c90e042ab4608311d',1,'ripple::jss::JSS(source_amount)'],['../namespaceripple_1_1jss.html#a968ac5fa6e358f5193e20dc6a101f976',1,'ripple::jss::JSS(source_currencies)'],['../namespaceripple_1_1jss.html#ae01769c00a852c87146be4838c09ee5a',1,'ripple::jss::JSS(source_tag)'],['../namespaceripple_1_1jss.html#a1f82e43f1a1cc57d6a8041df58147f4b',1,'ripple::jss::JSS(stand_alone)'],['../namespaceripple_1_1jss.html#ae05699a4fc7b4f776ec152d5b669d1d4',1,'ripple::jss::JSS(start)'],['../namespaceripple_1_1jss.html#a5beb9c603c6cfda1046a50f82afe9cc1',1,'ripple::jss::JSS(started)'],['../namespaceripple_1_1jss.html#af92f75263b26ca0241b6fe0ef589c8aa',1,'ripple::jss::JSS(state)'],['../namespaceripple_1_1jss.html#ac084abe0606a3c9744be7b65bfeaacb3',1,'ripple::jss::JSS(state_accounting)'],['../namespaceripple_1_1jss.html#aa99a557008270f1242d9b52f96f4be9c',1,'ripple::jss::JSS(state_now)'],['../namespaceripple_1_1jss.html#a99c005c5372a36bdc9701d33927a8ef1',1,'ripple::jss::JSS(status)'],['../namespaceripple_1_1jss.html#a6c3c1b21b83ecd9cde9b44c88d122a54',1,'ripple::jss::JSS(stop)'],['../namespaceripple_1_1jss.html#ac86d222f149d24b7d9e76f3130eb1269',1,'ripple::jss::JSS(stop_history_tx_only)'],['../namespaceripple_1_1jss.html#a195530af42c8a054953f4059fe8656df',1,'ripple::jss::JSS(storedSeqs)'],['../namespaceripple_1_1jss.html#a6acad949a2216ac90b3dad8d1adfadbf',1,'ripple::jss::JSS(streams)'],['../namespaceripple_1_1jss.html#aa24b295ccb87952511a3765611ee8a15',1,'ripple::jss::JSS(strict)'],['../namespaceripple_1_1jss.html#a581b4c11fce8f5c5b4f29f6bccce313e',1,'ripple::jss::JSS(sub_index)'],['../namespaceripple_1_1jss.html#aaaced786b6acbd66d6abc597e30aa44b',1,'ripple::jss::JSS(subcommand)'],['../namespaceripple_1_1jss.html#adabda57626831652b07085fc47e18696',1,'ripple::jss::JSS(success)'],['../namespaceripple_1_1jss.html#a171adf01fa70537328e34d8bdf5dfd57',1,'ripple::jss::JSS(supported)'],['../namespaceripple_1_1jss.html#a178fffb2f1426d3203e6e390e4d117fd',1,'ripple::jss::JSS(system_time_offset)'],['../namespaceripple_1_1jss.html#a8617ac2597ab5a7a90518b677b6b42a7',1,'ripple::jss::JSS(tag)'],['../namespaceripple_1_1jss.html#a701bdeea142b039b979776a828d16eba',1,'ripple::jss::JSS(taker)'],['../namespaceripple_1_1jss.html#a02821ca009e61f5a8252b97b9e4180f7',1,'ripple::jss::JSS(taker_gets)'],['../namespaceripple_1_1jss.html#a64796224848c31756b72ea7b94b33a16',1,'ripple::jss::JSS(taker_gets_funded)'],['../namespaceripple_1_1jss.html#adbe5fd10d28a75bd2d459892e99a6dd6',1,'ripple::jss::JSS(taker_pays)'],['../namespaceripple_1_1jss.html#aba7b6f1e4b78fe190129102c0555c036',1,'ripple::jss::JSS(taker_pays_funded)'],['../namespaceripple_1_1jss.html#af4a7790c97568179536f320eb5495607',1,'ripple::jss::JSS(threshold)'],['../namespaceripple_1_1jss.html#ae76e9ff4efa8ac76093ac8db412b20fe',1,'ripple::jss::JSS(ticket)'],['../namespaceripple_1_1jss.html#aaca215628a9d1510b6a5f393e8b64938',1,'ripple::jss::JSS(ticket_count)'],['../namespaceripple_1_1jss.html#a37bc74d8038b2baf2a4a203ae5a98d14',1,'ripple::jss::JSS(ticket_seq)'],['../namespaceripple_1_1jss.html#aa0aefbfa4e0f02fdbd53c8212991e02e',1,'ripple::jss::JSS(time)'],['../namespaceripple_1_1jss.html#aae8c9fa4189cd14b5481764a80418d7f',1,'ripple::jss::JSS(timeouts)'],['../namespaceripple_1_1jss.html#a77cbaa22a5bdecbd66da66fb5820905f',1,'ripple::jss::JSS(track)'],['../namespaceripple_1_1jss.html#abc7bcf1d46991c52aab8ed71c2c39592',1,'ripple::jss::JSS(traffic)'],['../namespaceripple_1_1jss.html#a2712ee652daa312fbbe0ea559fc7a244',1,'ripple::jss::JSS(total)'],['../namespaceripple_1_1jss.html#a2401f0b58d3bcf911cdd2b01d0b5cc73',1,'ripple::jss::JSS(totalCoins)'],['../namespaceripple_1_1jss.html#a116f5be949510e9ba0b5bc2cb2174815',1,'ripple::jss::JSS(total_bytes_recv)'],['../namespaceripple_1_1jss.html#a6653e44f5fbc21357fc41f0906d3b8ff',1,'ripple::jss::JSS(total_bytes_sent)'],['../namespaceripple_1_1jss.html#a5ab7a11fe58d083882f5ef160a96152d',1,'ripple::jss::JSS(total_coins)'],['../namespaceripple_1_1jss.html#a09708673233aa9b917055a4a053c486c',1,'ripple::jss::JSS(transTreeHash)'],['../namespaceripple_1_1jss.html#a4fc64264521261517967946a0bd3e630',1,'ripple::jss::JSS(transaction)'],['../namespaceripple_1_1jss.html#a42451283f3361e807289eb9f4941e93c',1,'ripple::jss::JSS(transaction_hash)'],['../namespaceripple_1_1jss.html#a8b6af48f3017969cae2253810d4d51fe',1,'ripple::jss::JSS(transactions)'],['../namespaceripple_1_1jss.html#ab5eda56ff95b22c358e5a237d8849f99',1,'ripple::jss::JSS(transitions)'],['../namespaceripple_1_1jss.html#a34d8eae8d2b916452314077d756f3a33',1,'ripple::jss::JSS(treenode_cache_size)'],['../namespaceripple_1_1jss.html#ad11e2e38cee9bfb6e85d9332bf546673',1,'ripple::jss::JSS(treenode_track_size)'],['../namespaceripple_1_1jss.html#aec7fcc1cd1de8307905ccedc76087536',1,'ripple::jss::JSS(trusted)'],['../namespaceripple_1_1jss.html#acf98fda3acdd812fc38f3d88405c973a',1,'ripple::jss::JSS(trusted_validator_keys)'],['../namespaceripple_1_1jss.html#aff19f11ae3e412c143fd802ce95e3463',1,'ripple::jss::JSS(tx)'],['../namespaceripple_1_1jss.html#a2486fcbdabb916a03d2029ab7e334341',1,'ripple::jss::JSS(tx_blob)'],['../namespaceripple_1_1jss.html#ab00747a2463a29db7c24115668e4a218',1,'ripple::jss::JSS(tx_hash)'],['../namespaceripple_1_1jss.html#aaebee3c317fcd8d7fbf7835bc4885aaf',1,'ripple::jss::JSS(tx_json)'],['../namespaceripple_1_1jss.html#ae1b09a0893f0887b848b8f153881eabb',1,'ripple::jss::JSS(tx_signing_hash)'],['../namespaceripple_1_1jss.html#ab690506c55f1c3dea2366caa593f8618',1,'ripple::jss::JSS(tx_unsigned)'],['../namespaceripple_1_1jss.html#a296e5fddfe53df3407fb75d46dee564f',1,'ripple::jss::JSS(txn_count)'],['../namespaceripple_1_1jss.html#acab1e95b00be21ffedd8aa078dde7cd5',1,'ripple::jss::JSS(txr_tx_cnt)'],['../namespaceripple_1_1jss.html#a52d18a5e83bf6ab15ecce1334560c7e3',1,'ripple::jss::JSS(txr_tx_sz)'],['../namespaceripple_1_1jss.html#a41af8cbc748a25f66931d1d33409901e',1,'ripple::jss::JSS(txr_have_txs_cnt)'],['../namespaceripple_1_1jss.html#a0cf79a4087e506da0c5b72625f01d192',1,'ripple::jss::JSS(txr_have_txs_sz)'],['../namespaceripple_1_1jss.html#a41e744430bf72f353fc2072a4ccc7d9e',1,'ripple::jss::JSS(txr_get_ledger_cnt)'],['../namespaceripple_1_1jss.html#abd86cc67feedb69c1f907a1e7063f45f',1,'ripple::jss::JSS(txr_get_ledger_sz)'],['../namespaceripple_1_1jss.html#acf0f73154e59a125ffc0c878e4998dd1',1,'ripple::jss::JSS(txr_ledger_data_cnt)'],['../namespaceripple_1_1jss.html#a42d3c6ff6d89f4297a15ee9d4b937158',1,'ripple::jss::JSS(txr_ledger_data_sz)'],['../namespaceripple_1_1jss.html#a9bb4d6e35e93700daecb12fd88b612c6',1,'ripple::jss::JSS(txr_transactions_cnt)'],['../namespaceripple_1_1jss.html#ac1abacd761ec7abfde83e583a70b0ea4',1,'ripple::jss::JSS(txr_transactions_sz)'],['../namespaceripple_1_1jss.html#a7932ad94678f2e615bf4559597c7f747',1,'ripple::jss::JSS(txr_selected_cnt)'],['../namespaceripple_1_1jss.html#a38e7e398a4f5f39c70ad238f9a1e1284',1,'ripple::jss::JSS(txr_suppressed_cnt)'],['../namespaceripple_1_1jss.html#a98440d1c5861994f6ed7fe83d579fc7b',1,'ripple::jss::JSS(txr_not_enabled_cnt)'],['../namespaceripple_1_1jss.html#aef1d8a23e1687341917fb9868494a3ca',1,'ripple::jss::JSS(txr_missing_tx_freq)'],['../namespaceripple_1_1jss.html#aeea2f2283a26d946766e83a715a9d682',1,'ripple::jss::JSS(txs)'],['../namespaceripple_1_1jss.html#a4d947f1743784ee61ebf4090d71fddc5',1,'ripple::jss::JSS(type)'],['../namespaceripple_1_1jss.html#a4fd5d1d92b073012943c2c6321067a6a',1,'ripple::jss::JSS(type_hex)'],['../namespaceripple_1_1jss.html#ac9f70ad0f04a1e5c013454fe8498136a',1,'ripple::jss::JSS(unl)'],['../namespaceripple_1_1jss.html#a18b6349dc9baba53df47742046f87b84',1,'ripple::jss::JSS(unlimited)'],['../namespaceripple_1_1jss.html#a49b9cf76b96ecb10fd56ca60a5ca4a90',1,'ripple::jss::JSS(uptime)'],['../namespaceripple_1_1jss.html#a931f36a44b3befdf1144cb23079a5778',1,'ripple::jss::JSS(uri)'],['../namespaceripple_1_1jss.html#a19aa5a2ded46fc0bbdef06f94519307b',1,'ripple::jss::JSS(url)'],['../namespaceripple_1_1jss.html#a7efaf53739fb251d5f8c0a3e39749128',1,'ripple::jss::JSS(url_password)'],['../namespaceripple_1_1jss.html#ad99fed5324eb171dda2b0485f9e196ed',1,'ripple::jss::JSS(url_username)'],['../namespaceripple_1_1jss.html#afcc64ff37edbdcae6d325f795c329fa6',1,'ripple::jss::JSS(urlgravatar)'],['../namespaceripple_1_1jss.html#a21df51066f1bd04f2f46de6c835a3745',1,'ripple::jss::JSS(username)'],['../namespaceripple_1_1jss.html#a19f7bcc12694cce39b5cb2f691e19d93',1,'ripple::jss::JSS(validated)'],['../namespaceripple_1_1jss.html#af7dfda6a45ee8bf86a52a5c6ef1103ae',1,'ripple::jss::JSS(validator_list_expires)'],['../namespaceripple_1_1jss.html#a82c322f00316e6c5ec9efca237643c0c',1,'ripple::jss::JSS(validator_list)'],['../namespaceripple_1_1jss.html#aa096955b80eb72f6ba4270ceef77de6e',1,'ripple::jss::JSS(validators)'],['../namespaceripple_1_1jss.html#a77fc5cca493d30ace52fcffcc257cb66',1,'ripple::jss::JSS(validated_hash)'],['../namespaceripple_1_1jss.html#a123b084cc0a9278567659d15eb1b02f4',1,'ripple::jss::JSS(validated_ledger)'],['../namespaceripple_1_1jss.html#ac26a6a1588aa98da4764463cd1ccf8cb',1,'ripple::jss::JSS(validated_ledger_index)'],['../namespaceripple_1_1jss.html#a92af4ce13e5469199a2792e123c5093a',1,'ripple::jss::JSS(validated_ledgers)'],['../namespaceripple_1_1jss.html#a65a44ddaf50cbb605df0ecb6100c6dad',1,'ripple::jss::JSS(validation_key)'],['../namespaceripple_1_1jss.html#a4097f5bd132eba42ac020894dcdebbbc',1,'ripple::jss::JSS(validation_private_key)'],['../namespaceripple_1_1jss.html#afc2e2ddf081505d3f3953c453134c4a3',1,'ripple::jss::JSS(validation_public_key)'],['../namespaceripple_1_1jss.html#a39ee6d6525f21b026d3acde9640f4d01',1,'ripple::jss::JSS(validation_quorum)'],['../namespaceripple_1_1jss.html#ac1c4476298f3af82f4862a751b6a5c51',1,'ripple::jss::JSS(validation_seed)'],['../namespaceripple_1_1jss.html#a4fad99c083f9a0d3c893dc182b6c9b7e',1,'ripple::jss::JSS(validations)'],['../namespaceripple_1_1jss.html#a1026d74d260210a1a72b293a83c62540',1,'ripple::jss::JSS(validator_sites)'],['../namespaceripple_1_1jss.html#ab779bcbb56f78f33545b48dafc909b46',1,'ripple::jss::JSS(value)'],['../namespaceripple_1_1jss.html#a691ab416cda11bd50eb11d79d3d6421e',1,'ripple::jss::JSS(version)'],['../namespaceripple_1_1jss.html#a4d492f7cf0e166e2e77c94a868a5722f',1,'ripple::jss::JSS(vetoed)'],['../namespaceripple_1_1jss.html#a40ea182ffa1551e97f1550a227ab568a',1,'ripple::jss::JSS(volume_a)'],['../namespaceripple_1_1jss.html#a5f19a805966938981c73fb822b7322c9',1,'ripple::jss::JSS(volume_b)'],['../namespaceripple_1_1jss.html#aa9754b78ba9927ed4dfc2e84dbdde57a',1,'ripple::jss::JSS(vote)'],['../namespaceripple_1_1jss.html#a12c2d74d1d3bd19009bb51812ae9660b',1,'ripple::jss::JSS(warning)'],['../namespaceripple_1_1jss.html#a5256b8c6a73d3df50ed6cbe9e30017d2',1,'ripple::jss::JSS(warnings)'],['../namespaceripple_1_1jss.html#a9f11131401702545899bbb3c2d60c93f',1,'ripple::jss::JSS(workers)'],['../namespaceripple_1_1jss.html#aee00e3f88c564bb0f87afeac6f1a3dff',1,'ripple::jss::JSS(write_load)'],['../namespaceripple_1_1jss.html#a970df0e4e5b3c0f64876bdde0292eef0',1,'ripple::jss::JSS(NegativeUNL)']]], ['jt_4818',['jt',['../classripple_1_1test_1_1jtx_1_1Env.html#ac97544537f03e62be698194aabe47a32',1,'ripple::test::jtx::Env']]], ['jt_5f_4819',['jt_',['../classripple_1_1test_1_1jtx_1_1Env__ss_1_1SignSubmitRunner.html#a7daf1020e2e88bf3a31849bb60657762',1,'ripple::test::jtx::Env_ss::SignSubmitRunner']]], ['jtaccept_4820',['jtACCEPT',['../namespaceripple.html#ae0f54f8ce649d639bf3e2b295347e17aa6cb3ab75be280799814794706cb2e4c1',1,'ripple']]], diff --git a/search/functions_a.js b/search/functions_a.js index 4de252f390..e75af62528 100644 --- a/search/functions_a.js +++ b/search/functions_a.js @@ -19,7 +19,7 @@ var searchData= ['jsonrpcclient_18490',['JSONRPCClient',['../classripple_1_1test_1_1JSONRPCClient.html#a97e5f08d509240c3d0f0b5be2c16e95c',1,'ripple::test::JSONRPCClient']]], ['jsonrpcrequest_18491',['JSONRPCRequest',['../namespaceripple.html#aa5bf57e1a7b6f174338fefbdfbc6ded6',1,'ripple']]], ['jsontouint64_18492',['jsonToUint64',['../classripple_1_1PerfLog__test.html#a204aad50a8e6454b4435afb7b97473c5',1,'ripple::PerfLog_test']]], - ['jss_18493',['JSS',['../namespaceripple_1_1jss.html#aa3f15d192c86a0f1522a1b98e82cb646',1,'ripple::jss::JSS(AL_size)'],['../namespaceripple_1_1jss.html#ac61e73edfd5f2e64e6ebf6eb021e81df',1,'ripple::jss::JSS(AL_hit_rate)'],['../namespaceripple_1_1jss.html#a8db30c15e1db9ea5e0fd5408ba2f2c2c',1,'ripple::jss::JSS(Account)'],['../namespaceripple_1_1jss.html#a3a864855b794ba13acf7c597d2211ba9',1,'ripple::jss::JSS(AccountDelete)'],['../namespaceripple_1_1jss.html#ada80bb65c82d27159382848a22d429be',1,'ripple::jss::JSS(AccountRoot)'],['../namespaceripple_1_1jss.html#a369b5f1021cdb9da296627e05fc75796',1,'ripple::jss::JSS(AccountSet)'],['../namespaceripple_1_1jss.html#a7ff652aa1f30727a88b3939538535980',1,'ripple::jss::JSS(Amendments)'],['../namespaceripple_1_1jss.html#ab07b5297f249d63372389a2f3452896a',1,'ripple::jss::JSS(Amount)'],['../namespaceripple_1_1jss.html#a0e9fa6c30fc4550634d5ae7823acffe1',1,'ripple::jss::JSS(Check)'],['../namespaceripple_1_1jss.html#ab66dd566267dbb672b15f4f65e87b349',1,'ripple::jss::JSS(CheckCancel)'],['../namespaceripple_1_1jss.html#a78c9616d726b95aaddbde47b922c158a',1,'ripple::jss::JSS(CheckCash)'],['../namespaceripple_1_1jss.html#a7ae1310b0f6f95cad5591480b2c14e0b',1,'ripple::jss::JSS(CheckCreate)'],['../namespaceripple_1_1jss.html#a677a739cb9cb21c44ad922ce99d2ec18',1,'ripple::jss::JSS(ClearFlag)'],['../namespaceripple_1_1jss.html#aaf3a34266841e872aed3dd48643ec9d7',1,'ripple::jss::JSS(DeliverMin)'],['../namespaceripple_1_1jss.html#a0564fc95b000147f54d363e7c08362d5',1,'ripple::jss::JSS(DepositPreauth)'],['../namespaceripple_1_1jss.html#a34b307cccb458abb3c759236cd1f680c',1,'ripple::jss::JSS(Destination)'],['../namespaceripple_1_1jss.html#afdc3e555fa475d011b0548f1d2278644',1,'ripple::jss::JSS(DirectoryNode)'],['../namespaceripple_1_1jss.html#af873eca785d9dcfc019b8af9b9e32be4',1,'ripple::jss::JSS(EnableAmendment)'],['../namespaceripple_1_1jss.html#af0bf8a97e8554ab5580b4b7c68897174',1,'ripple::jss::JSS(Escrow)'],['../namespaceripple_1_1jss.html#af5a44636462b3a7a8f16a01b7820988b',1,'ripple::jss::JSS(EscrowCancel)'],['../namespaceripple_1_1jss.html#ab56e3d7a1a82e634836a2352a4f75d89',1,'ripple::jss::JSS(EscrowCreate)'],['../namespaceripple_1_1jss.html#a205e25b14f2a793c7a35cd53e1c5c001',1,'ripple::jss::JSS(EscrowFinish)'],['../namespaceripple_1_1jss.html#a5d027d84a098e41c1569776f89d9ba34',1,'ripple::jss::JSS(Fee)'],['../namespaceripple_1_1jss.html#add0b43cdc17136e275323ba3ef33a740',1,'ripple::jss::JSS(FeeSettings)'],['../namespaceripple_1_1jss.html#a50b91de2bf71ae5bf58ebc8ccccde418',1,'ripple::jss::JSS(Flags)'],['../namespaceripple_1_1jss.html#a3a47f90c201cfbf6f67ebefb609618c1',1,'ripple::jss::JSS(incomplete_shards)'],['../namespaceripple_1_1jss.html#ac3e2ec0dacc9e82ff767b714534e785f',1,'ripple::jss::JSS(Invalid)'],['../namespaceripple_1_1jss.html#aba1bac42850f770c911b803754af95d6',1,'ripple::jss::JSS(LastLedgerSequence)'],['../namespaceripple_1_1jss.html#a31b9ae773dc45e76dbdb16a4429311b6',1,'ripple::jss::JSS(LedgerHashes)'],['../namespaceripple_1_1jss.html#a517b1ac3bc55dab67fc46d054d308d0f',1,'ripple::jss::JSS(LimitAmount)'],['../namespaceripple_1_1jss.html#ac8fb3d5a950a917f0296a3129c541328',1,'ripple::jss::JSS(NFTokenBurn)'],['../namespaceripple_1_1jss.html#a8f1cf7b6ac97c23fa57bf5be54c1a125',1,'ripple::jss::JSS(NFTokenMint)'],['../namespaceripple_1_1jss.html#a0b4e92344813da533188cc06aca48a42',1,'ripple::jss::JSS(NFTokenOffer)'],['../namespaceripple_1_1jss.html#af9f19b47917635c537b15603cbf79508',1,'ripple::jss::JSS(NFTokenAcceptOffer)'],['../namespaceripple_1_1jss.html#a07549a859614baeba638c051da3072c8',1,'ripple::jss::JSS(NFTokenCancelOffer)'],['../namespaceripple_1_1jss.html#a99011cb6a1beb12b0a5466105affb81c',1,'ripple::jss::JSS(NFTokenCreateOffer)'],['../namespaceripple_1_1jss.html#afdf3b5ef83a99353dc891aa4be65f55f',1,'ripple::jss::JSS(NFTokenPage)'],['../namespaceripple_1_1jss.html#aa3b8a8a100795d22bd8ebd1191d04334',1,'ripple::jss::JSS(Offer)'],['../namespaceripple_1_1jss.html#ad386540d68a0b66403620e32067c6b6f',1,'ripple::jss::JSS(OfferCancel)'],['../namespaceripple_1_1jss.html#a543263da8c69111d363fa4d7f6452436',1,'ripple::jss::JSS(OfferCreate)'],['../namespaceripple_1_1jss.html#a10481a73fbbd7aa82ac5f8f4da08dc9b',1,'ripple::jss::JSS(OfferSequence)'],['../namespaceripple_1_1jss.html#aaf85234a34ee722516942773cac03556',1,'ripple::jss::JSS(Paths)'],['../namespaceripple_1_1jss.html#aa569e292fa2ac885b0eca312e81748e1',1,'ripple::jss::JSS(PayChannel)'],['../namespaceripple_1_1jss.html#ad216120b00aafd90ddb45038b485e7ae',1,'ripple::jss::JSS(Payment)'],['../namespaceripple_1_1jss.html#a4053936c64c222862921e37976aa44f0',1,'ripple::jss::JSS(PaymentChannelClaim)'],['../namespaceripple_1_1jss.html#a2aebc07b117cd8a96b846bb6a52c482f',1,'ripple::jss::JSS(PaymentChannelCreate)'],['../namespaceripple_1_1jss.html#a73d3838f3b79655aea8fd816d365d352',1,'ripple::jss::JSS(PaymentChannelFund)'],['../namespaceripple_1_1jss.html#abd9a4a1632f2d66e2cdde77e51973694',1,'ripple::jss::JSS(RippleState)'],['../namespaceripple_1_1jss.html#a762b9a30fa5865acb705007d6119416d',1,'ripple::jss::JSS(SLE_hit_rate)'],['../namespaceripple_1_1jss.html#a18d7874a3fcb6025b19479ad6213e1d9',1,'ripple::jss::JSS(SetFee)'],['../namespaceripple_1_1jss.html#a089a45f999e0ed833457f6e8ea666e53',1,'ripple::jss::JSS(UNLModify)'],['../namespaceripple_1_1jss.html#a8d27790628b0e3d6999142e1dbb7e364',1,'ripple::jss::JSS(SettleDelay)'],['../namespaceripple_1_1jss.html#aeaeec46c8fcc70a0da27549dd300c585',1,'ripple::jss::JSS(SendMax)'],['../namespaceripple_1_1jss.html#a1e87baad67dbd8e9d7cebcf929f585ff',1,'ripple::jss::JSS(Sequence)'],['../namespaceripple_1_1jss.html#ac9c94aaa2b70ad19441beeafc514f321',1,'ripple::jss::JSS(SetFlag)'],['../namespaceripple_1_1jss.html#aaae9a1668d267e6e289190fd03b07846',1,'ripple::jss::JSS(SetRegularKey)'],['../namespaceripple_1_1jss.html#a44fed3fa16b86426fa0897b1c4662479',1,'ripple::jss::JSS(SignerList)'],['../namespaceripple_1_1jss.html#aa8e3c6dc981efac70d8380352a78a98f',1,'ripple::jss::JSS(SignerListSet)'],['../namespaceripple_1_1jss.html#adcbf0a1c425bb779ac641e3447fa1c11',1,'ripple::jss::JSS(SigningPubKey)'],['../namespaceripple_1_1jss.html#a6e8e299d7f23355d94776a0887347cbf',1,'ripple::jss::JSS(TakerGets)'],['../namespaceripple_1_1jss.html#aa82b390bb0a103e48bc0d0afc3f1362a',1,'ripple::jss::JSS(TakerPays)'],['../namespaceripple_1_1jss.html#a513261f38f09eac38cfaacc79cca716a',1,'ripple::jss::JSS(Ticket)'],['../namespaceripple_1_1jss.html#af69b45379ff4fded9363b0ae8ee39c52',1,'ripple::jss::JSS(TicketCreate)'],['../namespaceripple_1_1jss.html#a5d8556bf9a3175aa7f6a95b40dd089e3',1,'ripple::jss::JSS(TxnSignature)'],['../namespaceripple_1_1jss.html#aadca9c9073b4c06631f01e6bdf23b983',1,'ripple::jss::JSS(TransactionType)'],['../namespaceripple_1_1jss.html#a1bb0afe8a513adb11e17df2e7add4df7',1,'ripple::jss::JSS(TransferRate)'],['../namespaceripple_1_1jss.html#a65f0e39c7cf387a7bcb3f46b00fb2b02',1,'ripple::jss::JSS(TrustSet)'],['../namespaceripple_1_1jss.html#ac712f1d90be66bdc07c327a285e31a95',1,'ripple::jss::JSS(aborted)'],['../namespaceripple_1_1jss.html#a8cc4d76f970dbab56ad8cc8952b581a7',1,'ripple::jss::JSS(accepted)'],['../namespaceripple_1_1jss.html#a8c52cfc5bd3b44f34bf65173d4d5e01f',1,'ripple::jss::JSS(account)'],['../namespaceripple_1_1jss.html#a4f68be93e599d1224880936ad033e65b',1,'ripple::jss::JSS(accountState)'],['../namespaceripple_1_1jss.html#a25f19eb852186e5e5fb4ad2bec13c286',1,'ripple::jss::JSS(accountTreeHash)'],['../namespaceripple_1_1jss.html#ab34ed1ee2308c28119b210cd3430ebc0',1,'ripple::jss::JSS(account_data)'],['../namespaceripple_1_1jss.html#a4b9e0df02faf624e6f59a543ace49328',1,'ripple::jss::JSS(account_hash)'],['../namespaceripple_1_1jss.html#ab96081f052c56b37d4afd16dc8d22460',1,'ripple::jss::JSS(account_id)'],['../namespaceripple_1_1jss.html#aec087ae757ba6749af161fbf9e064c9b',1,'ripple::jss::JSS(account_nfts)'],['../namespaceripple_1_1jss.html#a2673c740f247eb00d49884b60943d9d6',1,'ripple::jss::JSS(account_objects)'],['../namespaceripple_1_1jss.html#ac7d0bbd29a6df5afae59c3d33784778d',1,'ripple::jss::JSS(account_root)'],['../namespaceripple_1_1jss.html#a008137e7571fdf90c002f9e8563d6569',1,'ripple::jss::JSS(account_sequence_next)'],['../namespaceripple_1_1jss.html#af4b967d1b5b3992a3cfd7b5cf71ccebc',1,'ripple::jss::JSS(account_sequence_available)'],['../namespaceripple_1_1jss.html#ad3a33adca25cf9078fce877138e4ab69',1,'ripple::jss::JSS(account_history_tx_stream)'],['../namespaceripple_1_1jss.html#ad94173ed88f1e34e2bfd03ee98e93dab',1,'ripple::jss::JSS(account_history_tx_index)'],['../namespaceripple_1_1jss.html#a617092ce024f895abe5f32957de115b4',1,'ripple::jss::JSS(account_history_tx_first)'],['../namespaceripple_1_1jss.html#a1cceb08aa3b1ef65fc48b5ee68e087b4',1,'ripple::jss::JSS(accounts)'],['../namespaceripple_1_1jss.html#aefb1f16bf3daf8f678cf76d181b40b46',1,'ripple::jss::JSS(accounts_proposed)'],['../namespaceripple_1_1jss.html#a79876642f9736c3db303f92a91a90bad',1,'ripple::jss::JSS(action)'],['../namespaceripple_1_1jss.html#aba70083161fb6978e3892bb8cbb26076',1,'ripple::jss::JSS(acquiring)'],['../namespaceripple_1_1jss.html#a7f0559695a7cd6c2432d98e2a02ed320',1,'ripple::jss::JSS(address)'],['../namespaceripple_1_1jss.html#a54f412b0d88f112435dcf0086adc03d8',1,'ripple::jss::JSS(affected)'],['../namespaceripple_1_1jss.html#a11e83bbfe9c41cf1a4e097dff802e63d',1,'ripple::jss::JSS(age)'],['../namespaceripple_1_1jss.html#af7bb47b5e83616e04ae9114c2d0c3a8e',1,'ripple::jss::JSS(alternatives)'],['../namespaceripple_1_1jss.html#a78ad17ba9f3cd952c0f995ce716542a2',1,'ripple::jss::JSS(amendment_blocked)'],['../namespaceripple_1_1jss.html#a9f1a9a511f58627a3f34032b3d22b095',1,'ripple::jss::JSS(amendments)'],['../namespaceripple_1_1jss.html#adf6438aab6db5d1576e44513e50ea1a6',1,'ripple::jss::JSS(amount)'],['../namespaceripple_1_1jss.html#a00a5b11ca23d029ae11ac2521cba99d2',1,'ripple::jss::JSS(api_version)'],['../namespaceripple_1_1jss.html#a475d2415f159a064bca7b7d714545f2a',1,'ripple::jss::JSS(api_version_low)'],['../namespaceripple_1_1jss.html#a894e5350a357338043b5543eb05ee5f9',1,'ripple::jss::JSS(applied)'],['../namespaceripple_1_1jss.html#aaf73127d96f85403418f2a3a8e9e9780',1,'ripple::jss::JSS(asks)'],['../namespaceripple_1_1jss.html#a556712161628a8c62e0bd7796666a426',1,'ripple::jss::JSS(assets)'],['../namespaceripple_1_1jss.html#aa20cc3fa17795d30395032a15b22abaf',1,'ripple::jss::JSS(authorized)'],['../namespaceripple_1_1jss.html#a3fe07845962f562b9351bbfe6337d2bf',1,'ripple::jss::JSS(auth_change)'],['../namespaceripple_1_1jss.html#a1689c6c2501dff6d31411216f4803fc2',1,'ripple::jss::JSS(auth_change_queued)'],['../namespaceripple_1_1jss.html#ada65039482a5cf5ef237f631326a4737',1,'ripple::jss::JSS(available)'],['../namespaceripple_1_1jss.html#a54a90bc889257dfd81e55ead7318f489',1,'ripple::jss::JSS(avg_bps_recv)'],['../namespaceripple_1_1jss.html#acb856bd10e512c19d86311b32e736c67',1,'ripple::jss::JSS(avg_bps_sent)'],['../namespaceripple_1_1jss.html#a8d3ac99ecbd10440e8e42fbb9ef3bd33',1,'ripple::jss::JSS(balance)'],['../namespaceripple_1_1jss.html#a22d2ca178a31207ea154db35d940e13c',1,'ripple::jss::JSS(balances)'],['../namespaceripple_1_1jss.html#a98317c55c194b081a21049c0005f1455',1,'ripple::jss::JSS(base)'],['../namespaceripple_1_1jss.html#a95591af524eb233bdb2b67380a262af3',1,'ripple::jss::JSS(base_fee)'],['../namespaceripple_1_1jss.html#ae1f6ae218b8a43f3a01247a6c2e32d2e',1,'ripple::jss::JSS(base_fee_drops)'],['../namespaceripple_1_1jss.html#a0dc657f2e92d03564502ca2d33bf9a14',1,'ripple::jss::JSS(base_fee_xrp)'],['../namespaceripple_1_1jss.html#ab53f1e5442b9a607f568a3a7d6a8a1eb',1,'ripple::jss::JSS(bids)'],['../namespaceripple_1_1jss.html#afffa2bf3dd597d522e66d72f4b16715b',1,'ripple::jss::JSS(binary)'],['../namespaceripple_1_1jss.html#a2ae0ac445216c042b16acd304e4bba60',1,'ripple::jss::JSS(blob)'],['../namespaceripple_1_1jss.html#a67720dea6165add6786ceed769430d06',1,'ripple::jss::JSS(blobs_v2)'],['../namespaceripple_1_1jss.html#afe151e69000427a198547770d2e6a435',1,'ripple::jss::JSS(books)'],['../namespaceripple_1_1jss.html#abbe5597d53d3751edcfd0abcd37bbcc5',1,'ripple::jss::JSS(both)'],['../namespaceripple_1_1jss.html#a16090621156a35f61afd7ffb67566879',1,'ripple::jss::JSS(both_sides)'],['../namespaceripple_1_1jss.html#acb1ba33f0bd6d83ba18fbe47955e1b9a',1,'ripple::jss::JSS(broadcast)'],['../namespaceripple_1_1jss.html#a2dbe9dcde7829371b2c3fa9d7ae5fa6c',1,'ripple::jss::JSS(build_path)'],['../namespaceripple_1_1jss.html#a5d41f8ada0cd210a47ea5dc84d105b73',1,'ripple::jss::JSS(build_version)'],['../namespaceripple_1_1jss.html#af83eafeb049a2f4e091e116b6dce101d',1,'ripple::jss::JSS(cancel_after)'],['../namespaceripple_1_1jss.html#a62f2cce44125b7ab9f1da7503610bb20',1,'ripple::jss::JSS(can_delete)'],['../namespaceripple_1_1jss.html#a636ea66af76536c1e1ebf421f4771853',1,'ripple::jss::JSS(changes)'],['../namespaceripple_1_1jss.html#ab20d6181608e37a4485d0d3141880312',1,'ripple::jss::JSS(channel_id)'],['../namespaceripple_1_1jss.html#a1f5dc64f057a7dc4ee6dd2c262c272f3',1,'ripple::jss::JSS(channels)'],['../namespaceripple_1_1jss.html#a9a2d94d94db798b705f15f932587329b',1,'ripple::jss::JSS(check)'],['../namespaceripple_1_1jss.html#aceff8d50279309d0b04633645b8e4bbf',1,'ripple::jss::JSS(check_nodes)'],['../namespaceripple_1_1jss.html#a018957e41a9c09f4ac9c64a10505d9c3',1,'ripple::jss::JSS(clear)'],['../namespaceripple_1_1jss.html#af151d9fb24624f9b3b7753eb53e2b488',1,'ripple::jss::JSS(close)'],['../namespaceripple_1_1jss.html#a18b2db60fa2f7d62bb92f69a27732abc',1,'ripple::jss::JSS(close_flags)'],['../namespaceripple_1_1jss.html#a79e23f6d60683f30b689dc4d4f296e8f',1,'ripple::jss::JSS(close_time)'],['../namespaceripple_1_1jss.html#ad6fd1868c22504ddb2335fe9bdbb964a',1,'ripple::jss::JSS(close_time_estimated)'],['../namespaceripple_1_1jss.html#ae9c49c54d55673fdbe0f98eaf2b1498e',1,'ripple::jss::JSS(close_time_human)'],['../namespaceripple_1_1jss.html#a828e3e1ac6ed05e4959773ab91cca81a',1,'ripple::jss::JSS(close_time_offset)'],['../namespaceripple_1_1jss.html#ace51eb83f24e0e9b302a76fe79f8db2f',1,'ripple::jss::JSS(close_time_resolution)'],['../namespaceripple_1_1jss.html#a165df8fbec91afb04a872b3e253b2220',1,'ripple::jss::JSS(closed)'],['../namespaceripple_1_1jss.html#a4e2d085d756f1cb68fce0abbc301d593',1,'ripple::jss::JSS(closed_ledger)'],['../namespaceripple_1_1jss.html#a3ebf1c7c458683d047e84871004e431f',1,'ripple::jss::JSS(cluster)'],['../namespaceripple_1_1jss.html#a37ff9544629a3f3f3c9304a4fa6b72e3',1,'ripple::jss::JSS(code)'],['../namespaceripple_1_1jss.html#a96b1217aff7b43d946abf67137db4dd1',1,'ripple::jss::JSS(command)'],['../namespaceripple_1_1jss.html#a595e875b3abf64a1e0b1188258b6fec1',1,'ripple::jss::JSS(complete)'],['../namespaceripple_1_1jss.html#a8cf35568f265f3ff3e86be414fd59e30',1,'ripple::jss::JSS(complete_ledgers)'],['../namespaceripple_1_1jss.html#a40942d4ff375349468a6bcd3635bd5a3',1,'ripple::jss::JSS(complete_shards)'],['../namespaceripple_1_1jss.html#a0c60508e93d100288b77e535dcc68783',1,'ripple::jss::JSS(consensus)'],['../namespaceripple_1_1jss.html#a8efbbfdebd5c5c73b59183ab96e70327',1,'ripple::jss::JSS(converge_time)'],['../namespaceripple_1_1jss.html#aba21f8c3da711ddec3e9ff44614b6969',1,'ripple::jss::JSS(converge_time_s)'],['../namespaceripple_1_1jss.html#a34bcabf9ad6eb489c5ed0748bea87bb1',1,'ripple::jss::JSS(cookie)'],['../namespaceripple_1_1jss.html#a1c9f4c32e6ff40abb3619b77c3ab6859',1,'ripple::jss::JSS(count)'],['../namespaceripple_1_1jss.html#a5b4a6ab68dee440737c3d7fdd2602871',1,'ripple::jss::JSS(counters)'],['../namespaceripple_1_1jss.html#a692112be4dc2b3084a866259a0ee0b65',1,'ripple::jss::JSS(currency_a)'],['../namespaceripple_1_1jss.html#a9e01b2b112f22799e576f73ed32558c2',1,'ripple::jss::JSS(currency_b)'],['../namespaceripple_1_1jss.html#ae84898736b98bf3b31adefa36765a91f',1,'ripple::jss::JSS(currentShard)'],['../namespaceripple_1_1jss.html#aaf19a6e638c44070d76082827c9a45a8',1,'ripple::jss::JSS(currentShardIndex)'],['../namespaceripple_1_1jss.html#afaf1f1eb0d7d3d1366a80de132c9539a',1,'ripple::jss::JSS(currency)'],['../namespaceripple_1_1jss.html#a36b04fc468f4165afdca8582c12b8661',1,'ripple::jss::JSS(current)'],['../namespaceripple_1_1jss.html#abc322074e7bc31b172ca148510ee211b',1,'ripple::jss::JSS(current_activities)'],['../namespaceripple_1_1jss.html#ac3feb332f7a784c7bdcc65ea1bb59c5f',1,'ripple::jss::JSS(current_ledger_size)'],['../namespaceripple_1_1jss.html#adb9262572038a865a8a96972740373d4',1,'ripple::jss::JSS(current_queue_size)'],['../namespaceripple_1_1jss.html#aec5a2a0a34243ed7abdbf9c1b190faaf',1,'ripple::jss::JSS(data)'],['../namespaceripple_1_1jss.html#ad3773ddc6bd0f25864e58702fe15effb',1,'ripple::jss::JSS(date)'],['../namespaceripple_1_1jss.html#a59351c42acf7193d30ea8c697aec84e2',1,'ripple::jss::JSS(dbKBLedger)'],['../namespaceripple_1_1jss.html#afd28b513ff83ed8471f354e177c27877',1,'ripple::jss::JSS(dbKBTotal)'],['../namespaceripple_1_1jss.html#ae65c4ec94c53671c4e7c37a9b130b451',1,'ripple::jss::JSS(dbKBTransaction)'],['../namespaceripple_1_1jss.html#ad3d18b1e79b66cec6a80ee3c9fc6fe58',1,'ripple::jss::JSS(debug_signing)'],['../namespaceripple_1_1jss.html#a9cd813dc373394e7afc835e1f5810266',1,'ripple::jss::JSS(deletion_blockers_only)'],['../namespaceripple_1_1jss.html#ad49f4c69287015ee8925188acc6477df',1,'ripple::jss::JSS(delivered_amount)'],['../namespaceripple_1_1jss.html#ae8a81aea60229512eea47b8703b9d9e1',1,'ripple::jss::JSS(deposit_authorized)'],['../namespaceripple_1_1jss.html#a506f596977236e4f7a379f1e8977eb24',1,'ripple::jss::JSS(deposit_preauth)'],['../namespaceripple_1_1jss.html#a6fff84046845c0b5d67b93a47ccdd857',1,'ripple::jss::JSS(deprecated)'],['../namespaceripple_1_1jss.html#a3d3975b0ac0a60af806c166d73fb9473',1,'ripple::jss::JSS(descending)'],['../namespaceripple_1_1jss.html#acfb39a018c819fefb53c0f3592714c7f',1,'ripple::jss::JSS(description)'],['../namespaceripple_1_1jss.html#a8fd8eb022bdb13345c6faff5b045a2bc',1,'ripple::jss::JSS(destination)'],['../namespaceripple_1_1jss.html#a8b454341a1834cf0c1e04dbf198a68ee',1,'ripple::jss::JSS(destination_account)'],['../namespaceripple_1_1jss.html#a98b0c210c816cedcd84833b7352a81d8',1,'ripple::jss::JSS(destination_amount)'],['../namespaceripple_1_1jss.html#a5d3f0125e3f6ea39bba35cd91adcebf6',1,'ripple::jss::JSS(destination_currencies)'],['../namespaceripple_1_1jss.html#a93e20077e82505daddf76639df83f270',1,'ripple::jss::JSS(destination_tag)'],['../namespaceripple_1_1jss.html#a33f43524db42b7b02b0a66d6dfb03a32',1,'ripple::jss::JSS(details)'],['../namespaceripple_1_1jss.html#a875aa8bd78378ce579f180f1134abfe6',1,'ripple::jss::JSS(dir_entry)'],['../namespaceripple_1_1jss.html#aecaf77ad6aa35e4523db08d31a8d0359',1,'ripple::jss::JSS(dir_index)'],['../namespaceripple_1_1jss.html#aa1b1c547651f7d0534ce00c3d045e84e',1,'ripple::jss::JSS(dir_root)'],['../namespaceripple_1_1jss.html#a3e89c1411b1c83620ab26594f0e9fe3e',1,'ripple::jss::JSS(directory)'],['../namespaceripple_1_1jss.html#a2add4259b579ec0b7b577ac79cd4547b',1,'ripple::jss::JSS(domain)'],['../namespaceripple_1_1jss.html#afb7c4905c64523f9257b4e3ad37c96e7',1,'ripple::jss::JSS(drops)'],['../namespaceripple_1_1jss.html#acd0817ff6c9da856d6a7198b1507b7bf',1,'ripple::jss::JSS(duration_us)'],['../namespaceripple_1_1jss.html#ad68912f634979603fa9734eeb6512655',1,'ripple::jss::JSS(effective)'],['../namespaceripple_1_1jss.html#a398e71b098c4089a757958062738d764',1,'ripple::jss::JSS(enabled)'],['../namespaceripple_1_1jss.html#ae5118b2033ffb5fce9d6710965a319a3',1,'ripple::jss::JSS(engine_result)'],['../namespaceripple_1_1jss.html#afeb39ec5fcd8c2355e89ca0fc8cae300',1,'ripple::jss::JSS(engine_result_code)'],['../namespaceripple_1_1jss.html#a0b4fe6d4a69b64493bc49c78619229e1',1,'ripple::jss::JSS(engine_result_message)'],['../namespaceripple_1_1jss.html#a29f075af7a947aa1eeb9c9c017aa1c5b',1,'ripple::jss::JSS(ephemeral_key)'],['../namespaceripple_1_1jss.html#aae6e3761f93b5fcfb075e67f99b4602e',1,'ripple::jss::JSS(error)'],['../namespaceripple_1_1jss.html#a0370f775a0d14ee0c9dfeac8b4806a16',1,'ripple::jss::JSS(errored)'],['../namespaceripple_1_1jss.html#a6d5680deffd5a636d1c563d939e27dde',1,'ripple::jss::JSS(error_code)'],['../namespaceripple_1_1jss.html#a2704d55bdbedc84e1cc40d1357fa788a',1,'ripple::jss::JSS(error_exception)'],['../namespaceripple_1_1jss.html#a61623fb7591f317d23f3811bb3caef2b',1,'ripple::jss::JSS(error_message)'],['../namespaceripple_1_1jss.html#a7206959dc2bba27b954f6acb9a6d050c',1,'ripple::jss::JSS(escrow)'],['../namespaceripple_1_1jss.html#a0b774122d2fae57d48a179cceda99c65',1,'ripple::jss::JSS(expand)'],['../namespaceripple_1_1jss.html#a21cf049d34c243a54727c4b6a8650253',1,'ripple::jss::JSS(expected_date)'],['../namespaceripple_1_1jss.html#af0ec96bf32d542e3bf27120e5a0538f2',1,'ripple::jss::JSS(expected_date_UTC)'],['../namespaceripple_1_1jss.html#ad3faef86179a660bc23170e096a212fd',1,'ripple::jss::JSS(expected_ledger_size)'],['../namespaceripple_1_1jss.html#a2951f3d0d0e756b9623b03e10cc83e13',1,'ripple::jss::JSS(expiration)'],['../namespaceripple_1_1jss.html#afb656d6325fef64a1e10399568735a0b',1,'ripple::jss::JSS(fail_hard)'],['../namespaceripple_1_1jss.html#ac15059fe46cbfcd61fd073c0af432a7c',1,'ripple::jss::JSS(failed)'],['../namespaceripple_1_1jss.html#ab7ad13f436fe30db027ba0ee37f4f33f',1,'ripple::jss::JSS(feature)'],['../namespaceripple_1_1jss.html#a0b4d7ef0eed5b9d06c02d6c883fcd387',1,'ripple::jss::JSS(features)'],['../namespaceripple_1_1jss.html#a58bbfb30a5805800847e0e9bf338a247',1,'ripple::jss::JSS(fee)'],['../namespaceripple_1_1jss.html#ae6d0c17a1b5c98b3a1f482f1205d9a12',1,'ripple::jss::JSS(fee_base)'],['../namespaceripple_1_1jss.html#a391fe9a28d31e33c6fc13475f57cf2c9',1,'ripple::jss::JSS(fee_div_max)'],['../namespaceripple_1_1jss.html#af0b1e7a8d76a926b01b7eaa028bbea46',1,'ripple::jss::JSS(fee_level)'],['../namespaceripple_1_1jss.html#aca8f86c3e5e6eb887899e7ee8bc0df7e',1,'ripple::jss::JSS(fee_mult_max)'],['../namespaceripple_1_1jss.html#a215d4f60eff867cd2c084e47e50a634e',1,'ripple::jss::JSS(fee_ref)'],['../namespaceripple_1_1jss.html#a18a9254962f7b987daca625b58b97ab7',1,'ripple::jss::JSS(fetch_pack)'],['../namespaceripple_1_1jss.html#a1d3b972f322b00065a0ef477ae22ba7b',1,'ripple::jss::JSS(first)'],['../namespaceripple_1_1jss.html#a18c045692285619aa6c595092710a51f',1,'ripple::jss::JSS(firstSequence)'],['../namespaceripple_1_1jss.html#af8a54cfef2aae02c9aeea61822e2f8c8',1,'ripple::jss::JSS(firstShardIndex)'],['../namespaceripple_1_1jss.html#a032838c5d8db1bdc76bcab5468995e9c',1,'ripple::jss::JSS(finished)'],['../namespaceripple_1_1jss.html#a46bf0460849388d3c788a79475da7b9e',1,'ripple::jss::JSS(fix_txns)'],['../namespaceripple_1_1jss.html#ab015225765c7465956d7248de13fa836',1,'ripple::jss::JSS(flags)'],['../namespaceripple_1_1jss.html#abb4f36b2f14a61c19f6cb026fb5a2cde',1,'ripple::jss::JSS(forward)'],['../namespaceripple_1_1jss.html#ae11bc6df38ffffd6cdba11058d9f450e',1,'ripple::jss::JSS(freeze)'],['../namespaceripple_1_1jss.html#abadfba906869530654549a2903f3b467',1,'ripple::jss::JSS(freeze_peer)'],['../namespaceripple_1_1jss.html#abae39ee9010b7cecf956add9ae5c9e81',1,'ripple::jss::JSS(frozen_balances)'],['../namespaceripple_1_1jss.html#ad5c07ed50d451e1da919232d119c0966',1,'ripple::jss::JSS(full)'],['../namespaceripple_1_1jss.html#adc78f312cddb8bb99c88c21db7cb7d4e',1,'ripple::jss::JSS(full_reply)'],['../namespaceripple_1_1jss.html#a237dcb272333b56a5ee89cc6147a5ecd',1,'ripple::jss::JSS(fullbelow_size)'],['../namespaceripple_1_1jss.html#a83ae7878ac025ef9562deca56776439f',1,'ripple::jss::JSS(good)'],['../namespaceripple_1_1jss.html#ad39f40f57e1aaa1121515da7cce1cac9',1,'ripple::jss::JSS(hash)'],['../namespaceripple_1_1jss.html#afaa2945fd9dd118b9a3bb058bc22cb3c',1,'ripple::jss::JSS(hashes)'],['../namespaceripple_1_1jss.html#a29703852e6ac4d8e5e4c0adeb7a03632',1,'ripple::jss::JSS(have_header)'],['../namespaceripple_1_1jss.html#a0ed3527e30f4af562c1b52210d9a22f8',1,'ripple::jss::JSS(have_state)'],['../namespaceripple_1_1jss.html#ad9e4342ddb4e120f1f2deba85b8888b0',1,'ripple::jss::JSS(have_transactions)'],['../namespaceripple_1_1jss.html#afba54f374631b9f33350dce8c358f447',1,'ripple::jss::JSS(high)'],['../namespaceripple_1_1jss.html#ac2d270ee51d74be36d4a1a6ecc9a33d5',1,'ripple::jss::JSS(highest_sequence)'],['../namespaceripple_1_1jss.html#a820e84cdb69d387b1cc0e3836df0742f',1,'ripple::jss::JSS(highest_ticket)'],['../namespaceripple_1_1jss.html#afc5eb500ed30b44d1cdba061f4cbf59f',1,'ripple::jss::JSS(historical_perminute)'],['../namespaceripple_1_1jss.html#a46834411d84b7901465087a4ad98043a',1,'ripple::jss::JSS(hostid)'],['../namespaceripple_1_1jss.html#ae1d31e9c62441a6aa13535443476724c',1,'ripple::jss::JSS(hotwallet)'],['../namespaceripple_1_1jss.html#aec7d9c55f43c8b74ed535a2cbd8efeb0',1,'ripple::jss::JSS(id)'],['../namespaceripple_1_1jss.html#aafdbabe0d2d3fbcc03944c6cce33e9f3',1,'ripple::jss::JSS(ident)'],['../namespaceripple_1_1jss.html#aaa69a01a572916e73ccf2f4d513f9ab6',1,'ripple::jss::JSS(ignore_default)'],['../namespaceripple_1_1jss.html#abef52d6643f645cbb8864a134912bb25',1,'ripple::jss::JSS(inLedger)'],['../namespaceripple_1_1jss.html#ac124c60c2739c9837a88336162221c0b',1,'ripple::jss::JSS(inbound)'],['../namespaceripple_1_1jss.html#a34e8647bf74e7c136db537717e02f8f7',1,'ripple::jss::JSS(index)'],['../namespaceripple_1_1jss.html#a6f04c49d9122ed3be42c66692af3b3ae',1,'ripple::jss::JSS(info)'],['../namespaceripple_1_1jss.html#a98b32b94f74b793aa56b9b38c754e0c4',1,'ripple::jss::JSS(initial_sync_duration_us)'],['../namespaceripple_1_1jss.html#a2a907e5f04837f9c2388b648d1c3eeb2',1,'ripple::jss::JSS(internal_command)'],['../namespaceripple_1_1jss.html#ac8a338bdcf84803d61a5bc78810372fb',1,'ripple::jss::JSS(invalid_API_version)'],['../namespaceripple_1_1jss.html#af1177a9dfd442428127cf177737736a2',1,'ripple::jss::JSS(io_latency_ms)'],['../namespaceripple_1_1jss.html#a862f68b5891afa2eb547ec3f9b682d5f',1,'ripple::jss::JSS(ip)'],['../namespaceripple_1_1jss.html#a7e299a1871aecf886aa10b578c6545c0',1,'ripple::jss::JSS(issuer)'],['../namespaceripple_1_1jss.html#a8e2c359715479cdc1457576fcdaa1bce',1,'ripple::jss::JSS(job)'],['../namespaceripple_1_1jss.html#a173c811816e2dc2171e713b4cb4ca8bf',1,'ripple::jss::JSS(job_queue)'],['../namespaceripple_1_1jss.html#a4180ceb26394ec47ed00284996c9b5d8',1,'ripple::jss::JSS(jobs)'],['../namespaceripple_1_1jss.html#a0afcf3006ab72333c31530b7351857c6',1,'ripple::jss::JSS(jsonrpc)'],['../namespaceripple_1_1jss.html#a641417496c5a7634abfc852bbd0eb9d7',1,'ripple::jss::JSS(jq_trans_overflow)'],['../namespaceripple_1_1jss.html#adecb26ce36b6b9762d766e2ab3396dc9',1,'ripple::jss::JSS(kept)'],['../namespaceripple_1_1jss.html#a406f85e2c5ae01882773cb4b09070f2b',1,'ripple::jss::JSS(key)'],['../namespaceripple_1_1jss.html#a427a778204fa66a55c3683ed000c1e9c',1,'ripple::jss::JSS(key_type)'],['../namespaceripple_1_1jss.html#aeae6972c9a347179222e4c3ca437ea42',1,'ripple::jss::JSS(latency)'],['../namespaceripple_1_1jss.html#a3ff236a09100028b3cf7649f08742e01',1,'ripple::jss::JSS(last)'],['../namespaceripple_1_1jss.html#a0571e3121cad11e1a751f2de565931c3',1,'ripple::jss::JSS(lastSequence)'],['../namespaceripple_1_1jss.html#ae9ae06a52b93b74cdefe1edbe438c4bd',1,'ripple::jss::JSS(lastShardIndex)'],['../namespaceripple_1_1jss.html#ab46428949d3e39914238f5f8cc0f2551',1,'ripple::jss::JSS(last_close)'],['../namespaceripple_1_1jss.html#a7ee6521d32812087edec35dc47ca1781',1,'ripple::jss::JSS(last_refresh_time)'],['../namespaceripple_1_1jss.html#aef21c6b9d2a8339207b1cb4949f24e72',1,'ripple::jss::JSS(last_refresh_status)'],['../namespaceripple_1_1jss.html#a1714928cf2b78f86feaf169a5a52c644',1,'ripple::jss::JSS(last_refresh_message)'],['../namespaceripple_1_1jss.html#a992bc8de5c39f87a28aa26d343c11e32',1,'ripple::jss::JSS(ledger)'],['../namespaceripple_1_1jss.html#a675bf95ddfed251aeedce8eaaa748cbe',1,'ripple::jss::JSS(ledger_current_index)'],['../namespaceripple_1_1jss.html#af3306e6b1b2d6b4ee00372b94eb7ef0a',1,'ripple::jss::JSS(ledger_data)'],['../namespaceripple_1_1jss.html#aaeb14d8510ef99859f296a789e51f088',1,'ripple::jss::JSS(ledger_hash)'],['../namespaceripple_1_1jss.html#a08df679178e9ac6201ca5d85d3bf8e38',1,'ripple::jss::JSS(ledger_hit_rate)'],['../namespaceripple_1_1jss.html#a2c7231c67e2a5a5dab79fde4e24ce6d5',1,'ripple::jss::JSS(ledger_index)'],['../namespaceripple_1_1jss.html#a047aecac6e8b1272f2f1bd6bd4f59b6b',1,'ripple::jss::JSS(ledger_index_max)'],['../namespaceripple_1_1jss.html#ac4d1c3618248ee0fadfc5ebdaf90ab21',1,'ripple::jss::JSS(ledger_index_min)'],['../namespaceripple_1_1jss.html#ab06c7c81e25495e0466163e3b6cc5ecc',1,'ripple::jss::JSS(ledger_max)'],['../namespaceripple_1_1jss.html#a8f9dcace83a46f1f1e12e10bafaec465',1,'ripple::jss::JSS(ledger_min)'],['../namespaceripple_1_1jss.html#a5b7555b733a4e1a0c5ec94f30751f470',1,'ripple::jss::JSS(ledger_time)'],['../namespaceripple_1_1jss.html#a72b110f05042e0e6da706fe6aadac75d',1,'ripple::jss::JSS(levels)'],['../namespaceripple_1_1jss.html#aa3afe635c40b7eba919b88f7d6ffa058',1,'ripple::jss::JSS(limit)'],['../namespaceripple_1_1jss.html#a5bea40cc26d67ea2f069fd6bc22d4b98',1,'ripple::jss::JSS(limit_peer)'],['../namespaceripple_1_1jss.html#ab9c3372089b08854d1edc3d7a8ac442c',1,'ripple::jss::JSS(lines)'],['../namespaceripple_1_1jss.html#a556ba5c427b4de420ba4fa95ccc8588b',1,'ripple::jss::JSS(list)'],['../namespaceripple_1_1jss.html#a4c6cccb2d97e9d74e0e7b84e638f4cbb',1,'ripple::jss::JSS(load)'],['../namespaceripple_1_1jss.html#a383ec9b21645a71314feed235281ec3d',1,'ripple::jss::JSS(load_base)'],['../namespaceripple_1_1jss.html#abf0c49f3f1d0b325d70e51bcad949eed',1,'ripple::jss::JSS(load_factor)'],['../namespaceripple_1_1jss.html#a6802d5c244124e8668e648c1eb35d13f',1,'ripple::jss::JSS(load_factor_cluster)'],['../namespaceripple_1_1jss.html#a90d596bc1be1e33aae7c1b4bbab85788',1,'ripple::jss::JSS(load_factor_fee_escalation)'],['../namespaceripple_1_1jss.html#aa34ec46a165e26160681a9bf02f47e8e',1,'ripple::jss::JSS(load_factor_fee_queue)'],['../namespaceripple_1_1jss.html#a13ba923543ae78606621a921f6d73f2f',1,'ripple::jss::JSS(load_factor_fee_reference)'],['../namespaceripple_1_1jss.html#a6a11292900910bfbc6250dc4b64dcadc',1,'ripple::jss::JSS(load_factor_local)'],['../namespaceripple_1_1jss.html#a4ed9602bfc5613fb72bba4bf6578b9b6',1,'ripple::jss::JSS(load_factor_net)'],['../namespaceripple_1_1jss.html#a245b4eda0af317f71dd64201e5de6c85',1,'ripple::jss::JSS(load_factor_server)'],['../namespaceripple_1_1jss.html#a373f4468b245935e969e055534b02dac',1,'ripple::jss::JSS(load_fee)'],['../namespaceripple_1_1jss.html#abd1f5c593f4a84b51f61fb98b1947f3f',1,'ripple::jss::JSS(local)'],['../namespaceripple_1_1jss.html#aac8e8f4c448f28283f3260e5726e16b7',1,'ripple::jss::JSS(local_txs)'],['../namespaceripple_1_1jss.html#a066a511baab3a42710ee18b1467d0e64',1,'ripple::jss::JSS(local_static_keys)'],['../namespaceripple_1_1jss.html#ac5483f7a3d46b7255c08b6ed06b59328',1,'ripple::jss::JSS(low)'],['../namespaceripple_1_1jss.html#ae22c1de160239666c2978a4ed8d0c08d',1,'ripple::jss::JSS(lowest_sequence)'],['../namespaceripple_1_1jss.html#a390ad84f4ee9211b8dfc8f9ba4afb1c9',1,'ripple::jss::JSS(lowest_ticket)'],['../namespaceripple_1_1jss.html#af626284ae3dc6049b95e9b0e4f7a2e15',1,'ripple::jss::JSS(majority)'],['../namespaceripple_1_1jss.html#ad2bd13dd26ddb7dcbab1a30d0ad5d585',1,'ripple::jss::JSS(manifest)'],['../namespaceripple_1_1jss.html#ac0bfb550d212b03bfd8e2148bd045177',1,'ripple::jss::JSS(marker)'],['../namespaceripple_1_1jss.html#adc0d3b81f16a66efb835a20963fa7a91',1,'ripple::jss::JSS(master_key)'],['../namespaceripple_1_1jss.html#a6ffbe65da7d08e8aa9fbdd569c3f803f',1,'ripple::jss::JSS(master_seed)'],['../namespaceripple_1_1jss.html#a90cb226d586e3a3974187f5a4917ccb8',1,'ripple::jss::JSS(master_seed_hex)'],['../namespaceripple_1_1jss.html#a2bb59f1e2ccc8fcf1022765b055ac8e8',1,'ripple::jss::JSS(master_signature)'],['../namespaceripple_1_1jss.html#a8c5be9f9c158869fbe745859a13c0a39',1,'ripple::jss::JSS(max_ledger)'],['../namespaceripple_1_1jss.html#af778b000f84666324b93a0c06a98b6e1',1,'ripple::jss::JSS(max_queue_size)'],['../namespaceripple_1_1jss.html#a8c3c692cc17a76c63a0961c9dcfd8792',1,'ripple::jss::JSS(max_spend_drops)'],['../namespaceripple_1_1jss.html#a2a597026393c9d7ab75e808201a8e7ed',1,'ripple::jss::JSS(max_spend_drops_total)'],['../namespaceripple_1_1jss.html#aedb5564b792c8255001275b457df1cd7',1,'ripple::jss::JSS(median_fee)'],['../namespaceripple_1_1jss.html#a4f81aef1a9bcae2f074b31ee373b94d9',1,'ripple::jss::JSS(median_level)'],['../namespaceripple_1_1jss.html#a5cd54ed1066847300869c4f6f4b624be',1,'ripple::jss::JSS(message)'],['../namespaceripple_1_1jss.html#a5a96309cb3f861cef5cd4f2ac6a44625',1,'ripple::jss::JSS(meta)'],['../namespaceripple_1_1jss.html#a90582d8dae6b02654a960471c58a6dfd',1,'ripple::jss::JSS(metaData)'],['../namespaceripple_1_1jss.html#a7bdf102a1b27098110dead1372aa9b5e',1,'ripple::jss::JSS(metadata)'],['../namespaceripple_1_1jss.html#a5d9075b1c58ae9c75f9592da61924c93',1,'ripple::jss::JSS(method)'],['../namespaceripple_1_1jss.html#a8681bb5e03eefa86e3659a614ebd07ff',1,'ripple::jss::JSS(methods)'],['../namespaceripple_1_1jss.html#afd388f8eb1116c9890c0b9b66f9b4698',1,'ripple::jss::JSS(metrics)'],['../namespaceripple_1_1jss.html#a0036690b962026ff10c95307a5a65b87',1,'ripple::jss::JSS(min_count)'],['../namespaceripple_1_1jss.html#a544b34a294393261eed39f96860ef21d',1,'ripple::jss::JSS(min_ledger)'],['../namespaceripple_1_1jss.html#a3ec35c73fd9a79fbd39d141d9490f1b5',1,'ripple::jss::JSS(minimum_fee)'],['../namespaceripple_1_1jss.html#a43c27472d5aa7bfd0268742c7fa9d78a',1,'ripple::jss::JSS(minimum_level)'],['../namespaceripple_1_1jss.html#a435c67595d4fb9eda997fc38148c5992',1,'ripple::jss::JSS(missingCommand)'],['../namespaceripple_1_1jss.html#a7d4c42927e3deaf2718257b187945bd1',1,'ripple::jss::JSS(name)'],['../namespaceripple_1_1jss.html#a4d1bee255ff817c13039f01b578bd04e',1,'ripple::jss::JSS(needed_state_hashes)'],['../namespaceripple_1_1jss.html#a0873b466701543ba534e57b4f29c87ce',1,'ripple::jss::JSS(needed_transaction_hashes)'],['../namespaceripple_1_1jss.html#ade22bdc9faf2b34a0ad6895de567b17e',1,'ripple::jss::JSS(network_id)'],['../namespaceripple_1_1jss.html#a70f97400a3740fd6ff4a4808d96fa385',1,'ripple::jss::JSS(network_ledger)'],['../namespaceripple_1_1jss.html#a5314dd903b04bfb0be2a2fb5e9f5e943',1,'ripple::jss::JSS(next_refresh_time)'],['../namespaceripple_1_1jss.html#a0f208889b443f105e3d4d2a37d89dff2',1,'ripple::jss::JSS(nft_id)'],['../namespaceripple_1_1jss.html#a0d2354620b5d5fd20e08e865fbaf4dec',1,'ripple::jss::JSS(nft_offer)'],['../namespaceripple_1_1jss.html#af96e6b8ada045d9895c3b13e2fdd1f5f',1,'ripple::jss::JSS(nft_offer_index)'],['../namespaceripple_1_1jss.html#a6408f29a93408770cb7124876ad935ad',1,'ripple::jss::JSS(nft_page)'],['../namespaceripple_1_1jss.html#ac903b8674b95c58a9bf72e1f54a78ac7',1,'ripple::jss::JSS(nft_serial)'],['../namespaceripple_1_1jss.html#a098e303535d59f2a1c222346648af4e1',1,'ripple::jss::JSS(no_ripple)'],['../namespaceripple_1_1jss.html#a62085c1b921768741e00af54424dabe8',1,'ripple::jss::JSS(no_ripple_peer)'],['../namespaceripple_1_1jss.html#a5ce1412776f6628085ada99ae860c496',1,'ripple::jss::JSS(node)'],['../namespaceripple_1_1jss.html#a0cdc2371c0dd8d4f4faa58126a532193',1,'ripple::jss::JSS(node_binary)'],['../namespaceripple_1_1jss.html#a89afdea55b77ffd7c0c5f92ec55f6f06',1,'ripple::jss::JSS(node_read_bytes)'],['../namespaceripple_1_1jss.html#a1f76320b1f860ab0e2510496b25f84d5',1,'ripple::jss::JSS(node_read_errors)'],['../namespaceripple_1_1jss.html#a4d767ff4480ea95fef87f65280c32341',1,'ripple::jss::JSS(node_read_retries)'],['../namespaceripple_1_1jss.html#a37c493225502be5ff30227fb6f5a8ea9',1,'ripple::jss::JSS(node_reads_hit)'],['../namespaceripple_1_1jss.html#a22fac9837a20d746c926090feccfde41',1,'ripple::jss::JSS(node_reads_total)'],['../namespaceripple_1_1jss.html#a2d1927386a4f598a1fac81248719eb29',1,'ripple::jss::JSS(node_reads_duration_us)'],['../namespaceripple_1_1jss.html#ade0100e0c0f7185673cb60099f69ef39',1,'ripple::jss::JSS(node_size)'],['../namespaceripple_1_1jss.html#a115fc43a11cbf6662f80bc28e7cf9cb7',1,'ripple::jss::JSS(nodestore)'],['../namespaceripple_1_1jss.html#aebc8390afa967a29debdc5bf919f29a5',1,'ripple::jss::JSS(node_writes)'],['../namespaceripple_1_1jss.html#ae1a55e6dc828b545c246bce2fd5f612b',1,'ripple::jss::JSS(node_written_bytes)'],['../namespaceripple_1_1jss.html#a77238346f1b44643500210cd3d424553',1,'ripple::jss::JSS(node_writes_duration_us)'],['../namespaceripple_1_1jss.html#af32cc33872d30172ae95d39280f76c0d',1,'ripple::jss::JSS(node_write_retries)'],['../namespaceripple_1_1jss.html#a344b30d62916b0ac04ca7c99322b4c4d',1,'ripple::jss::JSS(node_writes_delayed)'],['../namespaceripple_1_1jss.html#a4c1c6394675679df4cbccfcf6669e415',1,'ripple::jss::JSS(obligations)'],['../namespaceripple_1_1jss.html#a01ab5926a0cc9e85eb8cabf137949287',1,'ripple::jss::JSS(offer)'],['../namespaceripple_1_1jss.html#a0d05c76a6523c8b9322876f900118c12',1,'ripple::jss::JSS(offers)'],['../namespaceripple_1_1jss.html#add2923b71f2b172f1194f98309a2e241',1,'ripple::jss::JSS(offline)'],['../namespaceripple_1_1jss.html#a6cbba2e11f288b221785c2ba8c7ef660',1,'ripple::jss::JSS(offset)'],['../namespaceripple_1_1jss.html#a74a2a83ae37909eea587bb4fc93d4d3d',1,'ripple::jss::JSS(open)'],['../namespaceripple_1_1jss.html#a17303714c81b985a736e2a6d4a377ed7',1,'ripple::jss::JSS(open_ledger_cost)'],['../namespaceripple_1_1jss.html#a1958ad7592fcfbe13fdceb1e965b54cf',1,'ripple::jss::JSS(open_ledger_fee)'],['../namespaceripple_1_1jss.html#a1f5eeb938cd57eaec4f680ec5e626051',1,'ripple::jss::JSS(open_ledger_level)'],['../namespaceripple_1_1jss.html#aa9cfe2151c29a8c510fc66523d88c409',1,'ripple::jss::JSS(owner)'],['../namespaceripple_1_1jss.html#a6984e6a016f86b4559beb39101d970ad',1,'ripple::jss::JSS(owner_funds)'],['../namespaceripple_1_1jss.html#a54d8e4416540559d3b2c7f68e9160303',1,'ripple::jss::JSS(page_index)'],['../namespaceripple_1_1jss.html#af39b84953ad76f2caab306726e10cdce',1,'ripple::jss::JSS(params)'],['../namespaceripple_1_1jss.html#a72de494d7ba36760386c50b2d947fd18',1,'ripple::jss::JSS(parent_close_time)'],['../namespaceripple_1_1jss.html#aa9ba5e244629a133b8c6c24dd5388e6d',1,'ripple::jss::JSS(parent_hash)'],['../namespaceripple_1_1jss.html#afd0df8b37f6f52b0f690338508187086',1,'ripple::jss::JSS(partition)'],['../namespaceripple_1_1jss.html#a86461ac8d22c5d7011d8a5a2438095b3',1,'ripple::jss::JSS(passphrase)'],['../namespaceripple_1_1jss.html#a41a4b92b7d4a072018c395e42d7eb867',1,'ripple::jss::JSS(password)'],['../namespaceripple_1_1jss.html#af624b4728b1943720cbe71f5ff390943',1,'ripple::jss::JSS(paths)'],['../namespaceripple_1_1jss.html#abb3be6225bed3b89300ea12e3d48fc16',1,'ripple::jss::JSS(paths_canonical)'],['../namespaceripple_1_1jss.html#a6c0933e11f6a25f959ff939a3045e0ac',1,'ripple::jss::JSS(paths_computed)'],['../namespaceripple_1_1jss.html#a3d861d419d20d538b86e2ab710673645',1,'ripple::jss::JSS(payment_channel)'],['../namespaceripple_1_1jss.html#a59b7bc58e5605b228176d8b7509a8c65',1,'ripple::jss::JSS(peer)'],['../namespaceripple_1_1jss.html#ad8ff0d62f2883de7f8905311ed406103',1,'ripple::jss::JSS(peer_authorized)'],['../namespaceripple_1_1jss.html#ad8bb0359456f031169a4c6ddec5c129a',1,'ripple::jss::JSS(peer_id)'],['../namespaceripple_1_1jss.html#a7e1a66a281df46a5ed4e01b14c899e38',1,'ripple::jss::JSS(peers)'],['../namespaceripple_1_1jss.html#a88d37f07b853e2c1f60a31f424ffd5ce',1,'ripple::jss::JSS(peer_disconnects)'],['../namespaceripple_1_1jss.html#a129c4f438a7222b0d4ab097a9b4bd814',1,'ripple::jss::JSS(peer_disconnects_resources)'],['../namespaceripple_1_1jss.html#aadf5b61855beac3c7038de8009f4ce73',1,'ripple::jss::JSS(port)'],['../namespaceripple_1_1jss.html#afdb2d45c51e33968c1ff8ae7253e74f6',1,'ripple::jss::JSS(previous)'],['../namespaceripple_1_1jss.html#acdeff6961b45ef1da68dce5b1e7335de',1,'ripple::jss::JSS(previous_ledger)'],['../namespaceripple_1_1jss.html#aae7a0aeb3b8036a6a881a0e8d5154625',1,'ripple::jss::JSS(proof)'],['../namespaceripple_1_1jss.html#a3a888a411dcef169a956cae089a33573',1,'ripple::jss::JSS(propose_seq)'],['../namespaceripple_1_1jss.html#a109e160e7f01eda1c4e0b2f62b044f3c',1,'ripple::jss::JSS(proposers)'],['../namespaceripple_1_1jss.html#addd2ba49519cf4c184288ab57b3a4115',1,'ripple::jss::JSS(protocol)'],['../namespaceripple_1_1jss.html#aca834f8a93d2b4610b0da7c0095978af',1,'ripple::jss::JSS(proxied)'],['../namespaceripple_1_1jss.html#a156846a12e4481025f044acf1382c383',1,'ripple::jss::JSS(pubkey_node)'],['../namespaceripple_1_1jss.html#a40e55c8a5223e39f492bfb1215cbc9aa',1,'ripple::jss::JSS(pubkey_publisher)'],['../namespaceripple_1_1jss.html#aebc6a9c0935c49aba5010b9026ce880e',1,'ripple::jss::JSS(pubkey_validator)'],['../namespaceripple_1_1jss.html#ae45158a42c79f0f50aed8c8cc0553d30',1,'ripple::jss::JSS(public_key)'],['../namespaceripple_1_1jss.html#a6a2f90321e9be56fd5a344c431aa95ea',1,'ripple::jss::JSS(public_key_hex)'],['../namespaceripple_1_1jss.html#a671b12f8ca23cfd12363ec4b1f723d6b',1,'ripple::jss::JSS(published_ledger)'],['../namespaceripple_1_1jss.html#aa75a8d5cb609d4cceb2d15eb13212e43',1,'ripple::jss::JSS(publisher_lists)'],['../namespaceripple_1_1jss.html#a27f2611bb5cb26cb7dd7523bc0ad0dee',1,'ripple::jss::JSS(quality)'],['../namespaceripple_1_1jss.html#ad03aa2d2fd83909d2e237a463010f121',1,'ripple::jss::JSS(quality_in)'],['../namespaceripple_1_1jss.html#a65e4d5e35f00f6cdae89ba256619d4ef',1,'ripple::jss::JSS(quality_out)'],['../namespaceripple_1_1jss.html#a7151e1b6cd5e6b1be198a56cd01597ef',1,'ripple::jss::JSS(queue)'],['../namespaceripple_1_1jss.html#a1b1fb3bd7ac8c3663af34bd384ae2355',1,'ripple::jss::JSS(queue_data)'],['../namespaceripple_1_1jss.html#ad88d8e74f87b163bf99549092aaf4b20',1,'ripple::jss::JSS(queued)'],['../namespaceripple_1_1jss.html#a9ccfabf15341bdacf0ac717557a0af23',1,'ripple::jss::JSS(queued_duration_us)'],['../namespaceripple_1_1jss.html#ae32a9da487a082aff61a78419b1a4b44',1,'ripple::jss::JSS(random)'],['../namespaceripple_1_1jss.html#ae2351e897c6dca3c3aab25bb17086100',1,'ripple::jss::JSS(raw_meta)'],['../namespaceripple_1_1jss.html#a47b7654a9a4eef538dc7f309780e061c',1,'ripple::jss::JSS(receive_currencies)'],['../namespaceripple_1_1jss.html#a4b7000091c118b53355d3b8d198d3971',1,'ripple::jss::JSS(reference_level)'],['../namespaceripple_1_1jss.html#a266812190eb5b39cf50d8cff6301fd68',1,'ripple::jss::JSS(refresh_interval)'],['../namespaceripple_1_1jss.html#a853d712e533630145a9070d8de85c79c',1,'ripple::jss::JSS(refresh_interval_min)'],['../namespaceripple_1_1jss.html#a946b6283b24392f9786b2ca7e61d11be',1,'ripple::jss::JSS(regular_seed)'],['../namespaceripple_1_1jss.html#a16710749bcca2b74e4ce87362c895550',1,'ripple::jss::JSS(remaining)'],['../namespaceripple_1_1jss.html#aaa1fb1f97e994f096b2720c0177b1b64',1,'ripple::jss::JSS(remote)'],['../namespaceripple_1_1jss.html#a1ddddc3f0a35d9b0dc63eefe5d329ece',1,'ripple::jss::JSS(request)'],['../namespaceripple_1_1jss.html#a031ab5db8b438db6e044bb615dcd437f',1,'ripple::jss::JSS(requested)'],['../namespaceripple_1_1jss.html#a23b89ac7132b73c99b2c4eeb6a7d5ba8',1,'ripple::jss::JSS(reservations)'],['../namespaceripple_1_1jss.html#a06e38430b8efacb449dae68e3e4bd719',1,'ripple::jss::JSS(reserve_base)'],['../namespaceripple_1_1jss.html#ae6b3865c1704255f9507dca6a2ce3e98',1,'ripple::jss::JSS(reserve_base_drops)'],['../namespaceripple_1_1jss.html#ad3f0b63bc2dc00989d74e5e2a98d8cef',1,'ripple::jss::JSS(reserve_base_xrp)'],['../namespaceripple_1_1jss.html#a434d67df095e4b93d2888329a312f249',1,'ripple::jss::JSS(reserve_inc)'],['../namespaceripple_1_1jss.html#abb8aec1a0a86ebf39d93d26c9ad36825',1,'ripple::jss::JSS(reserve_inc_drops)'],['../namespaceripple_1_1jss.html#a30d26962060ab84f953bd174d741ef35',1,'ripple::jss::JSS(reserve_inc_xrp)'],['../namespaceripple_1_1jss.html#afa9140cf9fc26b240b3cf9d7fd9a543a',1,'ripple::jss::JSS(response)'],['../namespaceripple_1_1jss.html#ab002c1b47c7b6c1196acae240c368fd8',1,'ripple::jss::JSS(result)'],['../namespaceripple_1_1jss.html#aad2d58ba32ffb0f05e20ec574f739730',1,'ripple::jss::JSS(ripple_lines)'],['../namespaceripple_1_1jss.html#a833d63c2022621a71bca7c976fcbe2c4',1,'ripple::jss::JSS(ripple_state)'],['../namespaceripple_1_1jss.html#aceed5baff161853077dd6dc6156a59c7',1,'ripple::jss::JSS(ripplerpc)'],['../namespaceripple_1_1jss.html#ae0d5803772678f19be9d7f4bd8b39fac',1,'ripple::jss::JSS(role)'],['../namespaceripple_1_1jss.html#acfb087c654466263af799d1ef4415621',1,'ripple::jss::JSS(rpc)'],['../namespaceripple_1_1jss.html#aee7d0dc691e3014ab6e0241581527dd0',1,'ripple::jss::JSS(rt_accounts)'],['../namespaceripple_1_1jss.html#ac10cf2f8c791afac756962bfdf0f0e03',1,'ripple::jss::JSS(running_duration_us)'],['../namespaceripple_1_1jss.html#ac20f25e4c6699c9a11bb2dbdbfbd35b9',1,'ripple::jss::JSS(search_depth)'],['../namespaceripple_1_1jss.html#a33fdabee7255bc9cc0e6e02e969fd299',1,'ripple::jss::JSS(searched_all)'],['../namespaceripple_1_1jss.html#ab4bf22346e3ce730490fbac54e554319',1,'ripple::jss::JSS(secret)'],['../namespaceripple_1_1jss.html#a769765c53f57269b83469eb86fc43a2a',1,'ripple::jss::JSS(seed)'],['../namespaceripple_1_1jss.html#a18388591c49bdd58426717b896454422',1,'ripple::jss::JSS(seed_hex)'],['../namespaceripple_1_1jss.html#a19c5c81ca6ad9e1d521ffe82d8bc82bf',1,'ripple::jss::JSS(send_currencies)'],['../namespaceripple_1_1jss.html#a6558b4b11170f4fcde5bd6785543db00',1,'ripple::jss::JSS(send_max)'],['../namespaceripple_1_1jss.html#a21e87d098bb9496f57815da1ed358268',1,'ripple::jss::JSS(seq)'],['../namespaceripple_1_1jss.html#a945891671330ca1451741d6a01ce6c26',1,'ripple::jss::JSS(seqNum)'],['../namespaceripple_1_1jss.html#ae76e64937bdbbe06eb62cb73d3db5b44',1,'ripple::jss::JSS(sequence)'],['../namespaceripple_1_1jss.html#a6bcffda6c02a858abbeecdf9e58d6d19',1,'ripple::jss::JSS(sequence_count)'],['../namespaceripple_1_1jss.html#a87398173e2f3a0763f49b9144f247394',1,'ripple::jss::JSS(server_domain)'],['../namespaceripple_1_1jss.html#ae8685ce87a27424455d732e70d6749e9',1,'ripple::jss::JSS(server_state)'],['../namespaceripple_1_1jss.html#a72748915540b0400ebdfd7d350940dd5',1,'ripple::jss::JSS(server_state_duration_us)'],['../namespaceripple_1_1jss.html#af11133bbbb71606c744f48cf7cc73ffc',1,'ripple::jss::JSS(server_status)'],['../namespaceripple_1_1jss.html#aaaf7f7ce7cef0bc80576bce7dd083191',1,'ripple::jss::JSS(server_version)'],['../namespaceripple_1_1jss.html#a215e9223a6ae3e03e928c0052194dce2',1,'ripple::jss::JSS(settle_delay)'],['../namespaceripple_1_1jss.html#ab446d169fde4c5d39607f455ef7409d1',1,'ripple::jss::JSS(severity)'],['../namespaceripple_1_1jss.html#aa1162195b20caadd962d37ad3166e123',1,'ripple::jss::JSS(shards)'],['../namespaceripple_1_1jss.html#ad1550695b4ced1ef2148768548629164',1,'ripple::jss::JSS(signature)'],['../namespaceripple_1_1jss.html#a27e7424f63a6ba421a741a060883a9eb',1,'ripple::jss::JSS(signature_verified)'],['../namespaceripple_1_1jss.html#a33cf28c33911e126a41f5a52cc2aa76f',1,'ripple::jss::JSS(signing_key)'],['../namespaceripple_1_1jss.html#a0774d2833b9d21039c9d915b80ba5fd6',1,'ripple::jss::JSS(signing_keys)'],['../namespaceripple_1_1jss.html#a04d13dd9fcb31ff9cd99da7ef25ea89c',1,'ripple::jss::JSS(signing_time)'],['../namespaceripple_1_1jss.html#a20f00ada4190a5f544e941b43a36c381',1,'ripple::jss::JSS(signer_list)'],['../namespaceripple_1_1jss.html#a5077d3e4db756f7aa886582b511f3e89',1,'ripple::jss::JSS(signer_lists)'],['../namespaceripple_1_1jss.html#a1c5210d6f3f79fd228eba85b3feabe0c',1,'ripple::jss::JSS(snapshot)'],['../namespaceripple_1_1jss.html#a61c4b74cb35954d878c11c38dbb0254f',1,'ripple::jss::JSS(source_account)'],['../namespaceripple_1_1jss.html#ad8a759db804a103c90e042ab4608311d',1,'ripple::jss::JSS(source_amount)'],['../namespaceripple_1_1jss.html#a968ac5fa6e358f5193e20dc6a101f976',1,'ripple::jss::JSS(source_currencies)'],['../namespaceripple_1_1jss.html#ae01769c00a852c87146be4838c09ee5a',1,'ripple::jss::JSS(source_tag)'],['../namespaceripple_1_1jss.html#a1f82e43f1a1cc57d6a8041df58147f4b',1,'ripple::jss::JSS(stand_alone)'],['../namespaceripple_1_1jss.html#ae05699a4fc7b4f776ec152d5b669d1d4',1,'ripple::jss::JSS(start)'],['../namespaceripple_1_1jss.html#a5beb9c603c6cfda1046a50f82afe9cc1',1,'ripple::jss::JSS(started)'],['../namespaceripple_1_1jss.html#af92f75263b26ca0241b6fe0ef589c8aa',1,'ripple::jss::JSS(state)'],['../namespaceripple_1_1jss.html#ac084abe0606a3c9744be7b65bfeaacb3',1,'ripple::jss::JSS(state_accounting)'],['../namespaceripple_1_1jss.html#aa99a557008270f1242d9b52f96f4be9c',1,'ripple::jss::JSS(state_now)'],['../namespaceripple_1_1jss.html#a99c005c5372a36bdc9701d33927a8ef1',1,'ripple::jss::JSS(status)'],['../namespaceripple_1_1jss.html#a6c3c1b21b83ecd9cde9b44c88d122a54',1,'ripple::jss::JSS(stop)'],['../namespaceripple_1_1jss.html#ac86d222f149d24b7d9e76f3130eb1269',1,'ripple::jss::JSS(stop_history_tx_only)'],['../namespaceripple_1_1jss.html#a195530af42c8a054953f4059fe8656df',1,'ripple::jss::JSS(storedSeqs)'],['../namespaceripple_1_1jss.html#a6acad949a2216ac90b3dad8d1adfadbf',1,'ripple::jss::JSS(streams)'],['../namespaceripple_1_1jss.html#aa24b295ccb87952511a3765611ee8a15',1,'ripple::jss::JSS(strict)'],['../namespaceripple_1_1jss.html#a581b4c11fce8f5c5b4f29f6bccce313e',1,'ripple::jss::JSS(sub_index)'],['../namespaceripple_1_1jss.html#aaaced786b6acbd66d6abc597e30aa44b',1,'ripple::jss::JSS(subcommand)'],['../namespaceripple_1_1jss.html#adabda57626831652b07085fc47e18696',1,'ripple::jss::JSS(success)'],['../namespaceripple_1_1jss.html#a171adf01fa70537328e34d8bdf5dfd57',1,'ripple::jss::JSS(supported)'],['../namespaceripple_1_1jss.html#a178fffb2f1426d3203e6e390e4d117fd',1,'ripple::jss::JSS(system_time_offset)'],['../namespaceripple_1_1jss.html#a8617ac2597ab5a7a90518b677b6b42a7',1,'ripple::jss::JSS(tag)'],['../namespaceripple_1_1jss.html#a701bdeea142b039b979776a828d16eba',1,'ripple::jss::JSS(taker)'],['../namespaceripple_1_1jss.html#a02821ca009e61f5a8252b97b9e4180f7',1,'ripple::jss::JSS(taker_gets)'],['../namespaceripple_1_1jss.html#a64796224848c31756b72ea7b94b33a16',1,'ripple::jss::JSS(taker_gets_funded)'],['../namespaceripple_1_1jss.html#adbe5fd10d28a75bd2d459892e99a6dd6',1,'ripple::jss::JSS(taker_pays)'],['../namespaceripple_1_1jss.html#aba7b6f1e4b78fe190129102c0555c036',1,'ripple::jss::JSS(taker_pays_funded)'],['../namespaceripple_1_1jss.html#af4a7790c97568179536f320eb5495607',1,'ripple::jss::JSS(threshold)'],['../namespaceripple_1_1jss.html#ae76e9ff4efa8ac76093ac8db412b20fe',1,'ripple::jss::JSS(ticket)'],['../namespaceripple_1_1jss.html#aaca215628a9d1510b6a5f393e8b64938',1,'ripple::jss::JSS(ticket_count)'],['../namespaceripple_1_1jss.html#a37bc74d8038b2baf2a4a203ae5a98d14',1,'ripple::jss::JSS(ticket_seq)'],['../namespaceripple_1_1jss.html#aa0aefbfa4e0f02fdbd53c8212991e02e',1,'ripple::jss::JSS(time)'],['../namespaceripple_1_1jss.html#aae8c9fa4189cd14b5481764a80418d7f',1,'ripple::jss::JSS(timeouts)'],['../namespaceripple_1_1jss.html#a77cbaa22a5bdecbd66da66fb5820905f',1,'ripple::jss::JSS(track)'],['../namespaceripple_1_1jss.html#abc7bcf1d46991c52aab8ed71c2c39592',1,'ripple::jss::JSS(traffic)'],['../namespaceripple_1_1jss.html#a2712ee652daa312fbbe0ea559fc7a244',1,'ripple::jss::JSS(total)'],['../namespaceripple_1_1jss.html#a2401f0b58d3bcf911cdd2b01d0b5cc73',1,'ripple::jss::JSS(totalCoins)'],['../namespaceripple_1_1jss.html#a116f5be949510e9ba0b5bc2cb2174815',1,'ripple::jss::JSS(total_bytes_recv)'],['../namespaceripple_1_1jss.html#a6653e44f5fbc21357fc41f0906d3b8ff',1,'ripple::jss::JSS(total_bytes_sent)'],['../namespaceripple_1_1jss.html#a5ab7a11fe58d083882f5ef160a96152d',1,'ripple::jss::JSS(total_coins)'],['../namespaceripple_1_1jss.html#a09708673233aa9b917055a4a053c486c',1,'ripple::jss::JSS(transTreeHash)'],['../namespaceripple_1_1jss.html#a4fc64264521261517967946a0bd3e630',1,'ripple::jss::JSS(transaction)'],['../namespaceripple_1_1jss.html#a42451283f3361e807289eb9f4941e93c',1,'ripple::jss::JSS(transaction_hash)'],['../namespaceripple_1_1jss.html#a8b6af48f3017969cae2253810d4d51fe',1,'ripple::jss::JSS(transactions)'],['../namespaceripple_1_1jss.html#ab5eda56ff95b22c358e5a237d8849f99',1,'ripple::jss::JSS(transitions)'],['../namespaceripple_1_1jss.html#a34d8eae8d2b916452314077d756f3a33',1,'ripple::jss::JSS(treenode_cache_size)'],['../namespaceripple_1_1jss.html#ad11e2e38cee9bfb6e85d9332bf546673',1,'ripple::jss::JSS(treenode_track_size)'],['../namespaceripple_1_1jss.html#aec7fcc1cd1de8307905ccedc76087536',1,'ripple::jss::JSS(trusted)'],['../namespaceripple_1_1jss.html#acf98fda3acdd812fc38f3d88405c973a',1,'ripple::jss::JSS(trusted_validator_keys)'],['../namespaceripple_1_1jss.html#aff19f11ae3e412c143fd802ce95e3463',1,'ripple::jss::JSS(tx)'],['../namespaceripple_1_1jss.html#a2486fcbdabb916a03d2029ab7e334341',1,'ripple::jss::JSS(tx_blob)'],['../namespaceripple_1_1jss.html#ab00747a2463a29db7c24115668e4a218',1,'ripple::jss::JSS(tx_hash)'],['../namespaceripple_1_1jss.html#aaebee3c317fcd8d7fbf7835bc4885aaf',1,'ripple::jss::JSS(tx_json)'],['../namespaceripple_1_1jss.html#ae1b09a0893f0887b848b8f153881eabb',1,'ripple::jss::JSS(tx_signing_hash)'],['../namespaceripple_1_1jss.html#ab690506c55f1c3dea2366caa593f8618',1,'ripple::jss::JSS(tx_unsigned)'],['../namespaceripple_1_1jss.html#a296e5fddfe53df3407fb75d46dee564f',1,'ripple::jss::JSS(txn_count)'],['../namespaceripple_1_1jss.html#acab1e95b00be21ffedd8aa078dde7cd5',1,'ripple::jss::JSS(txr_tx_cnt)'],['../namespaceripple_1_1jss.html#a52d18a5e83bf6ab15ecce1334560c7e3',1,'ripple::jss::JSS(txr_tx_sz)'],['../namespaceripple_1_1jss.html#a41af8cbc748a25f66931d1d33409901e',1,'ripple::jss::JSS(txr_have_txs_cnt)'],['../namespaceripple_1_1jss.html#a0cf79a4087e506da0c5b72625f01d192',1,'ripple::jss::JSS(txr_have_txs_sz)'],['../namespaceripple_1_1jss.html#a41e744430bf72f353fc2072a4ccc7d9e',1,'ripple::jss::JSS(txr_get_ledger_cnt)'],['../namespaceripple_1_1jss.html#abd86cc67feedb69c1f907a1e7063f45f',1,'ripple::jss::JSS(txr_get_ledger_sz)'],['../namespaceripple_1_1jss.html#acf0f73154e59a125ffc0c878e4998dd1',1,'ripple::jss::JSS(txr_ledger_data_cnt)'],['../namespaceripple_1_1jss.html#a42d3c6ff6d89f4297a15ee9d4b937158',1,'ripple::jss::JSS(txr_ledger_data_sz)'],['../namespaceripple_1_1jss.html#a9bb4d6e35e93700daecb12fd88b612c6',1,'ripple::jss::JSS(txr_transactions_cnt)'],['../namespaceripple_1_1jss.html#ac1abacd761ec7abfde83e583a70b0ea4',1,'ripple::jss::JSS(txr_transactions_sz)'],['../namespaceripple_1_1jss.html#a7932ad94678f2e615bf4559597c7f747',1,'ripple::jss::JSS(txr_selected_cnt)'],['../namespaceripple_1_1jss.html#a38e7e398a4f5f39c70ad238f9a1e1284',1,'ripple::jss::JSS(txr_suppressed_cnt)'],['../namespaceripple_1_1jss.html#a98440d1c5861994f6ed7fe83d579fc7b',1,'ripple::jss::JSS(txr_not_enabled_cnt)'],['../namespaceripple_1_1jss.html#aef1d8a23e1687341917fb9868494a3ca',1,'ripple::jss::JSS(txr_missing_tx_freq)'],['../namespaceripple_1_1jss.html#aeea2f2283a26d946766e83a715a9d682',1,'ripple::jss::JSS(txs)'],['../namespaceripple_1_1jss.html#a4d947f1743784ee61ebf4090d71fddc5',1,'ripple::jss::JSS(type)'],['../namespaceripple_1_1jss.html#a4fd5d1d92b073012943c2c6321067a6a',1,'ripple::jss::JSS(type_hex)'],['../namespaceripple_1_1jss.html#ac9f70ad0f04a1e5c013454fe8498136a',1,'ripple::jss::JSS(unl)'],['../namespaceripple_1_1jss.html#a18b6349dc9baba53df47742046f87b84',1,'ripple::jss::JSS(unlimited)'],['../namespaceripple_1_1jss.html#a49b9cf76b96ecb10fd56ca60a5ca4a90',1,'ripple::jss::JSS(uptime)'],['../namespaceripple_1_1jss.html#a931f36a44b3befdf1144cb23079a5778',1,'ripple::jss::JSS(uri)'],['../namespaceripple_1_1jss.html#a19aa5a2ded46fc0bbdef06f94519307b',1,'ripple::jss::JSS(url)'],['../namespaceripple_1_1jss.html#a7efaf53739fb251d5f8c0a3e39749128',1,'ripple::jss::JSS(url_password)'],['../namespaceripple_1_1jss.html#ad99fed5324eb171dda2b0485f9e196ed',1,'ripple::jss::JSS(url_username)'],['../namespaceripple_1_1jss.html#afcc64ff37edbdcae6d325f795c329fa6',1,'ripple::jss::JSS(urlgravatar)'],['../namespaceripple_1_1jss.html#a21df51066f1bd04f2f46de6c835a3745',1,'ripple::jss::JSS(username)'],['../namespaceripple_1_1jss.html#a19f7bcc12694cce39b5cb2f691e19d93',1,'ripple::jss::JSS(validated)'],['../namespaceripple_1_1jss.html#af7dfda6a45ee8bf86a52a5c6ef1103ae',1,'ripple::jss::JSS(validator_list_expires)'],['../namespaceripple_1_1jss.html#a82c322f00316e6c5ec9efca237643c0c',1,'ripple::jss::JSS(validator_list)'],['../namespaceripple_1_1jss.html#aa096955b80eb72f6ba4270ceef77de6e',1,'ripple::jss::JSS(validators)'],['../namespaceripple_1_1jss.html#a77fc5cca493d30ace52fcffcc257cb66',1,'ripple::jss::JSS(validated_hash)'],['../namespaceripple_1_1jss.html#a123b084cc0a9278567659d15eb1b02f4',1,'ripple::jss::JSS(validated_ledger)'],['../namespaceripple_1_1jss.html#ac26a6a1588aa98da4764463cd1ccf8cb',1,'ripple::jss::JSS(validated_ledger_index)'],['../namespaceripple_1_1jss.html#a92af4ce13e5469199a2792e123c5093a',1,'ripple::jss::JSS(validated_ledgers)'],['../namespaceripple_1_1jss.html#a65a44ddaf50cbb605df0ecb6100c6dad',1,'ripple::jss::JSS(validation_key)'],['../namespaceripple_1_1jss.html#a4097f5bd132eba42ac020894dcdebbbc',1,'ripple::jss::JSS(validation_private_key)'],['../namespaceripple_1_1jss.html#afc2e2ddf081505d3f3953c453134c4a3',1,'ripple::jss::JSS(validation_public_key)'],['../namespaceripple_1_1jss.html#a39ee6d6525f21b026d3acde9640f4d01',1,'ripple::jss::JSS(validation_quorum)'],['../namespaceripple_1_1jss.html#ac1c4476298f3af82f4862a751b6a5c51',1,'ripple::jss::JSS(validation_seed)'],['../namespaceripple_1_1jss.html#a4fad99c083f9a0d3c893dc182b6c9b7e',1,'ripple::jss::JSS(validations)'],['../namespaceripple_1_1jss.html#a1026d74d260210a1a72b293a83c62540',1,'ripple::jss::JSS(validator_sites)'],['../namespaceripple_1_1jss.html#ab779bcbb56f78f33545b48dafc909b46',1,'ripple::jss::JSS(value)'],['../namespaceripple_1_1jss.html#a691ab416cda11bd50eb11d79d3d6421e',1,'ripple::jss::JSS(version)'],['../namespaceripple_1_1jss.html#a4d492f7cf0e166e2e77c94a868a5722f',1,'ripple::jss::JSS(vetoed)'],['../namespaceripple_1_1jss.html#a40ea182ffa1551e97f1550a227ab568a',1,'ripple::jss::JSS(volume_a)'],['../namespaceripple_1_1jss.html#a5f19a805966938981c73fb822b7322c9',1,'ripple::jss::JSS(volume_b)'],['../namespaceripple_1_1jss.html#aa9754b78ba9927ed4dfc2e84dbdde57a',1,'ripple::jss::JSS(vote)'],['../namespaceripple_1_1jss.html#a12c2d74d1d3bd19009bb51812ae9660b',1,'ripple::jss::JSS(warning)'],['../namespaceripple_1_1jss.html#a5256b8c6a73d3df50ed6cbe9e30017d2',1,'ripple::jss::JSS(warnings)'],['../namespaceripple_1_1jss.html#a9f11131401702545899bbb3c2d60c93f',1,'ripple::jss::JSS(workers)'],['../namespaceripple_1_1jss.html#aee00e3f88c564bb0f87afeac6f1a3dff',1,'ripple::jss::JSS(write_load)'],['../namespaceripple_1_1jss.html#a970df0e4e5b3c0f64876bdde0292eef0',1,'ripple::jss::JSS(NegativeUNL)']]], + ['jss_18493',['JSS',['../namespaceripple_1_1jss.html#aa3f15d192c86a0f1522a1b98e82cb646',1,'ripple::jss::JSS(AL_size)'],['../namespaceripple_1_1jss.html#ac61e73edfd5f2e64e6ebf6eb021e81df',1,'ripple::jss::JSS(AL_hit_rate)'],['../namespaceripple_1_1jss.html#a8db30c15e1db9ea5e0fd5408ba2f2c2c',1,'ripple::jss::JSS(Account)'],['../namespaceripple_1_1jss.html#a3a864855b794ba13acf7c597d2211ba9',1,'ripple::jss::JSS(AccountDelete)'],['../namespaceripple_1_1jss.html#ada80bb65c82d27159382848a22d429be',1,'ripple::jss::JSS(AccountRoot)'],['../namespaceripple_1_1jss.html#a369b5f1021cdb9da296627e05fc75796',1,'ripple::jss::JSS(AccountSet)'],['../namespaceripple_1_1jss.html#a7ff652aa1f30727a88b3939538535980',1,'ripple::jss::JSS(Amendments)'],['../namespaceripple_1_1jss.html#ab07b5297f249d63372389a2f3452896a',1,'ripple::jss::JSS(Amount)'],['../namespaceripple_1_1jss.html#a0e9fa6c30fc4550634d5ae7823acffe1',1,'ripple::jss::JSS(Check)'],['../namespaceripple_1_1jss.html#ab66dd566267dbb672b15f4f65e87b349',1,'ripple::jss::JSS(CheckCancel)'],['../namespaceripple_1_1jss.html#a78c9616d726b95aaddbde47b922c158a',1,'ripple::jss::JSS(CheckCash)'],['../namespaceripple_1_1jss.html#a7ae1310b0f6f95cad5591480b2c14e0b',1,'ripple::jss::JSS(CheckCreate)'],['../namespaceripple_1_1jss.html#a677a739cb9cb21c44ad922ce99d2ec18',1,'ripple::jss::JSS(ClearFlag)'],['../namespaceripple_1_1jss.html#aaf3a34266841e872aed3dd48643ec9d7',1,'ripple::jss::JSS(DeliverMin)'],['../namespaceripple_1_1jss.html#a0564fc95b000147f54d363e7c08362d5',1,'ripple::jss::JSS(DepositPreauth)'],['../namespaceripple_1_1jss.html#a34b307cccb458abb3c759236cd1f680c',1,'ripple::jss::JSS(Destination)'],['../namespaceripple_1_1jss.html#afdc3e555fa475d011b0548f1d2278644',1,'ripple::jss::JSS(DirectoryNode)'],['../namespaceripple_1_1jss.html#af873eca785d9dcfc019b8af9b9e32be4',1,'ripple::jss::JSS(EnableAmendment)'],['../namespaceripple_1_1jss.html#af0bf8a97e8554ab5580b4b7c68897174',1,'ripple::jss::JSS(Escrow)'],['../namespaceripple_1_1jss.html#af5a44636462b3a7a8f16a01b7820988b',1,'ripple::jss::JSS(EscrowCancel)'],['../namespaceripple_1_1jss.html#ab56e3d7a1a82e634836a2352a4f75d89',1,'ripple::jss::JSS(EscrowCreate)'],['../namespaceripple_1_1jss.html#a205e25b14f2a793c7a35cd53e1c5c001',1,'ripple::jss::JSS(EscrowFinish)'],['../namespaceripple_1_1jss.html#a5d027d84a098e41c1569776f89d9ba34',1,'ripple::jss::JSS(Fee)'],['../namespaceripple_1_1jss.html#add0b43cdc17136e275323ba3ef33a740',1,'ripple::jss::JSS(FeeSettings)'],['../namespaceripple_1_1jss.html#a50b91de2bf71ae5bf58ebc8ccccde418',1,'ripple::jss::JSS(Flags)'],['../namespaceripple_1_1jss.html#a3a47f90c201cfbf6f67ebefb609618c1',1,'ripple::jss::JSS(incomplete_shards)'],['../namespaceripple_1_1jss.html#ac3e2ec0dacc9e82ff767b714534e785f',1,'ripple::jss::JSS(Invalid)'],['../namespaceripple_1_1jss.html#aba1bac42850f770c911b803754af95d6',1,'ripple::jss::JSS(LastLedgerSequence)'],['../namespaceripple_1_1jss.html#a31b9ae773dc45e76dbdb16a4429311b6',1,'ripple::jss::JSS(LedgerHashes)'],['../namespaceripple_1_1jss.html#a517b1ac3bc55dab67fc46d054d308d0f',1,'ripple::jss::JSS(LimitAmount)'],['../namespaceripple_1_1jss.html#ac8fb3d5a950a917f0296a3129c541328',1,'ripple::jss::JSS(NFTokenBurn)'],['../namespaceripple_1_1jss.html#a8f1cf7b6ac97c23fa57bf5be54c1a125',1,'ripple::jss::JSS(NFTokenMint)'],['../namespaceripple_1_1jss.html#a0b4e92344813da533188cc06aca48a42',1,'ripple::jss::JSS(NFTokenOffer)'],['../namespaceripple_1_1jss.html#af9f19b47917635c537b15603cbf79508',1,'ripple::jss::JSS(NFTokenAcceptOffer)'],['../namespaceripple_1_1jss.html#a07549a859614baeba638c051da3072c8',1,'ripple::jss::JSS(NFTokenCancelOffer)'],['../namespaceripple_1_1jss.html#a99011cb6a1beb12b0a5466105affb81c',1,'ripple::jss::JSS(NFTokenCreateOffer)'],['../namespaceripple_1_1jss.html#afdf3b5ef83a99353dc891aa4be65f55f',1,'ripple::jss::JSS(NFTokenPage)'],['../namespaceripple_1_1jss.html#aa3b8a8a100795d22bd8ebd1191d04334',1,'ripple::jss::JSS(Offer)'],['../namespaceripple_1_1jss.html#ad386540d68a0b66403620e32067c6b6f',1,'ripple::jss::JSS(OfferCancel)'],['../namespaceripple_1_1jss.html#a543263da8c69111d363fa4d7f6452436',1,'ripple::jss::JSS(OfferCreate)'],['../namespaceripple_1_1jss.html#a10481a73fbbd7aa82ac5f8f4da08dc9b',1,'ripple::jss::JSS(OfferSequence)'],['../namespaceripple_1_1jss.html#aaf85234a34ee722516942773cac03556',1,'ripple::jss::JSS(Paths)'],['../namespaceripple_1_1jss.html#aa569e292fa2ac885b0eca312e81748e1',1,'ripple::jss::JSS(PayChannel)'],['../namespaceripple_1_1jss.html#ad216120b00aafd90ddb45038b485e7ae',1,'ripple::jss::JSS(Payment)'],['../namespaceripple_1_1jss.html#a4053936c64c222862921e37976aa44f0',1,'ripple::jss::JSS(PaymentChannelClaim)'],['../namespaceripple_1_1jss.html#a2aebc07b117cd8a96b846bb6a52c482f',1,'ripple::jss::JSS(PaymentChannelCreate)'],['../namespaceripple_1_1jss.html#a73d3838f3b79655aea8fd816d365d352',1,'ripple::jss::JSS(PaymentChannelFund)'],['../namespaceripple_1_1jss.html#abd9a4a1632f2d66e2cdde77e51973694',1,'ripple::jss::JSS(RippleState)'],['../namespaceripple_1_1jss.html#a762b9a30fa5865acb705007d6119416d',1,'ripple::jss::JSS(SLE_hit_rate)'],['../namespaceripple_1_1jss.html#a18d7874a3fcb6025b19479ad6213e1d9',1,'ripple::jss::JSS(SetFee)'],['../namespaceripple_1_1jss.html#a089a45f999e0ed833457f6e8ea666e53',1,'ripple::jss::JSS(UNLModify)'],['../namespaceripple_1_1jss.html#a8d27790628b0e3d6999142e1dbb7e364',1,'ripple::jss::JSS(SettleDelay)'],['../namespaceripple_1_1jss.html#aeaeec46c8fcc70a0da27549dd300c585',1,'ripple::jss::JSS(SendMax)'],['../namespaceripple_1_1jss.html#a1e87baad67dbd8e9d7cebcf929f585ff',1,'ripple::jss::JSS(Sequence)'],['../namespaceripple_1_1jss.html#ac9c94aaa2b70ad19441beeafc514f321',1,'ripple::jss::JSS(SetFlag)'],['../namespaceripple_1_1jss.html#aaae9a1668d267e6e289190fd03b07846',1,'ripple::jss::JSS(SetRegularKey)'],['../namespaceripple_1_1jss.html#a44fed3fa16b86426fa0897b1c4662479',1,'ripple::jss::JSS(SignerList)'],['../namespaceripple_1_1jss.html#aa8e3c6dc981efac70d8380352a78a98f',1,'ripple::jss::JSS(SignerListSet)'],['../namespaceripple_1_1jss.html#adcbf0a1c425bb779ac641e3447fa1c11',1,'ripple::jss::JSS(SigningPubKey)'],['../namespaceripple_1_1jss.html#a6e8e299d7f23355d94776a0887347cbf',1,'ripple::jss::JSS(TakerGets)'],['../namespaceripple_1_1jss.html#aa82b390bb0a103e48bc0d0afc3f1362a',1,'ripple::jss::JSS(TakerPays)'],['../namespaceripple_1_1jss.html#a513261f38f09eac38cfaacc79cca716a',1,'ripple::jss::JSS(Ticket)'],['../namespaceripple_1_1jss.html#af69b45379ff4fded9363b0ae8ee39c52',1,'ripple::jss::JSS(TicketCreate)'],['../namespaceripple_1_1jss.html#a5d8556bf9a3175aa7f6a95b40dd089e3',1,'ripple::jss::JSS(TxnSignature)'],['../namespaceripple_1_1jss.html#aadca9c9073b4c06631f01e6bdf23b983',1,'ripple::jss::JSS(TransactionType)'],['../namespaceripple_1_1jss.html#a1bb0afe8a513adb11e17df2e7add4df7',1,'ripple::jss::JSS(TransferRate)'],['../namespaceripple_1_1jss.html#a65f0e39c7cf387a7bcb3f46b00fb2b02',1,'ripple::jss::JSS(TrustSet)'],['../namespaceripple_1_1jss.html#ac712f1d90be66bdc07c327a285e31a95',1,'ripple::jss::JSS(aborted)'],['../namespaceripple_1_1jss.html#a8cc4d76f970dbab56ad8cc8952b581a7',1,'ripple::jss::JSS(accepted)'],['../namespaceripple_1_1jss.html#a8c52cfc5bd3b44f34bf65173d4d5e01f',1,'ripple::jss::JSS(account)'],['../namespaceripple_1_1jss.html#a4f68be93e599d1224880936ad033e65b',1,'ripple::jss::JSS(accountState)'],['../namespaceripple_1_1jss.html#a25f19eb852186e5e5fb4ad2bec13c286',1,'ripple::jss::JSS(accountTreeHash)'],['../namespaceripple_1_1jss.html#ab34ed1ee2308c28119b210cd3430ebc0',1,'ripple::jss::JSS(account_data)'],['../namespaceripple_1_1jss.html#a4b9e0df02faf624e6f59a543ace49328',1,'ripple::jss::JSS(account_hash)'],['../namespaceripple_1_1jss.html#ab96081f052c56b37d4afd16dc8d22460',1,'ripple::jss::JSS(account_id)'],['../namespaceripple_1_1jss.html#aec087ae757ba6749af161fbf9e064c9b',1,'ripple::jss::JSS(account_nfts)'],['../namespaceripple_1_1jss.html#a2673c740f247eb00d49884b60943d9d6',1,'ripple::jss::JSS(account_objects)'],['../namespaceripple_1_1jss.html#ac7d0bbd29a6df5afae59c3d33784778d',1,'ripple::jss::JSS(account_root)'],['../namespaceripple_1_1jss.html#a008137e7571fdf90c002f9e8563d6569',1,'ripple::jss::JSS(account_sequence_next)'],['../namespaceripple_1_1jss.html#af4b967d1b5b3992a3cfd7b5cf71ccebc',1,'ripple::jss::JSS(account_sequence_available)'],['../namespaceripple_1_1jss.html#ad3a33adca25cf9078fce877138e4ab69',1,'ripple::jss::JSS(account_history_tx_stream)'],['../namespaceripple_1_1jss.html#ad94173ed88f1e34e2bfd03ee98e93dab',1,'ripple::jss::JSS(account_history_tx_index)'],['../namespaceripple_1_1jss.html#a617092ce024f895abe5f32957de115b4',1,'ripple::jss::JSS(account_history_tx_first)'],['../namespaceripple_1_1jss.html#a1cceb08aa3b1ef65fc48b5ee68e087b4',1,'ripple::jss::JSS(accounts)'],['../namespaceripple_1_1jss.html#aefb1f16bf3daf8f678cf76d181b40b46',1,'ripple::jss::JSS(accounts_proposed)'],['../namespaceripple_1_1jss.html#a79876642f9736c3db303f92a91a90bad',1,'ripple::jss::JSS(action)'],['../namespaceripple_1_1jss.html#aba70083161fb6978e3892bb8cbb26076',1,'ripple::jss::JSS(acquiring)'],['../namespaceripple_1_1jss.html#a7f0559695a7cd6c2432d98e2a02ed320',1,'ripple::jss::JSS(address)'],['../namespaceripple_1_1jss.html#a54f412b0d88f112435dcf0086adc03d8',1,'ripple::jss::JSS(affected)'],['../namespaceripple_1_1jss.html#a11e83bbfe9c41cf1a4e097dff802e63d',1,'ripple::jss::JSS(age)'],['../namespaceripple_1_1jss.html#af7bb47b5e83616e04ae9114c2d0c3a8e',1,'ripple::jss::JSS(alternatives)'],['../namespaceripple_1_1jss.html#a78ad17ba9f3cd952c0f995ce716542a2',1,'ripple::jss::JSS(amendment_blocked)'],['../namespaceripple_1_1jss.html#a9f1a9a511f58627a3f34032b3d22b095',1,'ripple::jss::JSS(amendments)'],['../namespaceripple_1_1jss.html#adf6438aab6db5d1576e44513e50ea1a6',1,'ripple::jss::JSS(amount)'],['../namespaceripple_1_1jss.html#a00a5b11ca23d029ae11ac2521cba99d2',1,'ripple::jss::JSS(api_version)'],['../namespaceripple_1_1jss.html#a475d2415f159a064bca7b7d714545f2a',1,'ripple::jss::JSS(api_version_low)'],['../namespaceripple_1_1jss.html#a894e5350a357338043b5543eb05ee5f9',1,'ripple::jss::JSS(applied)'],['../namespaceripple_1_1jss.html#aaf73127d96f85403418f2a3a8e9e9780',1,'ripple::jss::JSS(asks)'],['../namespaceripple_1_1jss.html#a556712161628a8c62e0bd7796666a426',1,'ripple::jss::JSS(assets)'],['../namespaceripple_1_1jss.html#aa20cc3fa17795d30395032a15b22abaf',1,'ripple::jss::JSS(authorized)'],['../namespaceripple_1_1jss.html#a3fe07845962f562b9351bbfe6337d2bf',1,'ripple::jss::JSS(auth_change)'],['../namespaceripple_1_1jss.html#a1689c6c2501dff6d31411216f4803fc2',1,'ripple::jss::JSS(auth_change_queued)'],['../namespaceripple_1_1jss.html#ada65039482a5cf5ef237f631326a4737',1,'ripple::jss::JSS(available)'],['../namespaceripple_1_1jss.html#a54a90bc889257dfd81e55ead7318f489',1,'ripple::jss::JSS(avg_bps_recv)'],['../namespaceripple_1_1jss.html#acb856bd10e512c19d86311b32e736c67',1,'ripple::jss::JSS(avg_bps_sent)'],['../namespaceripple_1_1jss.html#a8d3ac99ecbd10440e8e42fbb9ef3bd33',1,'ripple::jss::JSS(balance)'],['../namespaceripple_1_1jss.html#a22d2ca178a31207ea154db35d940e13c',1,'ripple::jss::JSS(balances)'],['../namespaceripple_1_1jss.html#a98317c55c194b081a21049c0005f1455',1,'ripple::jss::JSS(base)'],['../namespaceripple_1_1jss.html#a95591af524eb233bdb2b67380a262af3',1,'ripple::jss::JSS(base_fee)'],['../namespaceripple_1_1jss.html#a0dc657f2e92d03564502ca2d33bf9a14',1,'ripple::jss::JSS(base_fee_xrp)'],['../namespaceripple_1_1jss.html#ab53f1e5442b9a607f568a3a7d6a8a1eb',1,'ripple::jss::JSS(bids)'],['../namespaceripple_1_1jss.html#afffa2bf3dd597d522e66d72f4b16715b',1,'ripple::jss::JSS(binary)'],['../namespaceripple_1_1jss.html#a2ae0ac445216c042b16acd304e4bba60',1,'ripple::jss::JSS(blob)'],['../namespaceripple_1_1jss.html#a67720dea6165add6786ceed769430d06',1,'ripple::jss::JSS(blobs_v2)'],['../namespaceripple_1_1jss.html#afe151e69000427a198547770d2e6a435',1,'ripple::jss::JSS(books)'],['../namespaceripple_1_1jss.html#abbe5597d53d3751edcfd0abcd37bbcc5',1,'ripple::jss::JSS(both)'],['../namespaceripple_1_1jss.html#a16090621156a35f61afd7ffb67566879',1,'ripple::jss::JSS(both_sides)'],['../namespaceripple_1_1jss.html#acb1ba33f0bd6d83ba18fbe47955e1b9a',1,'ripple::jss::JSS(broadcast)'],['../namespaceripple_1_1jss.html#a2dbe9dcde7829371b2c3fa9d7ae5fa6c',1,'ripple::jss::JSS(build_path)'],['../namespaceripple_1_1jss.html#a5d41f8ada0cd210a47ea5dc84d105b73',1,'ripple::jss::JSS(build_version)'],['../namespaceripple_1_1jss.html#af83eafeb049a2f4e091e116b6dce101d',1,'ripple::jss::JSS(cancel_after)'],['../namespaceripple_1_1jss.html#a62f2cce44125b7ab9f1da7503610bb20',1,'ripple::jss::JSS(can_delete)'],['../namespaceripple_1_1jss.html#a636ea66af76536c1e1ebf421f4771853',1,'ripple::jss::JSS(changes)'],['../namespaceripple_1_1jss.html#ab20d6181608e37a4485d0d3141880312',1,'ripple::jss::JSS(channel_id)'],['../namespaceripple_1_1jss.html#a1f5dc64f057a7dc4ee6dd2c262c272f3',1,'ripple::jss::JSS(channels)'],['../namespaceripple_1_1jss.html#a9a2d94d94db798b705f15f932587329b',1,'ripple::jss::JSS(check)'],['../namespaceripple_1_1jss.html#aceff8d50279309d0b04633645b8e4bbf',1,'ripple::jss::JSS(check_nodes)'],['../namespaceripple_1_1jss.html#a018957e41a9c09f4ac9c64a10505d9c3',1,'ripple::jss::JSS(clear)'],['../namespaceripple_1_1jss.html#af151d9fb24624f9b3b7753eb53e2b488',1,'ripple::jss::JSS(close)'],['../namespaceripple_1_1jss.html#a18b2db60fa2f7d62bb92f69a27732abc',1,'ripple::jss::JSS(close_flags)'],['../namespaceripple_1_1jss.html#a79e23f6d60683f30b689dc4d4f296e8f',1,'ripple::jss::JSS(close_time)'],['../namespaceripple_1_1jss.html#ad6fd1868c22504ddb2335fe9bdbb964a',1,'ripple::jss::JSS(close_time_estimated)'],['../namespaceripple_1_1jss.html#ae9c49c54d55673fdbe0f98eaf2b1498e',1,'ripple::jss::JSS(close_time_human)'],['../namespaceripple_1_1jss.html#a828e3e1ac6ed05e4959773ab91cca81a',1,'ripple::jss::JSS(close_time_offset)'],['../namespaceripple_1_1jss.html#ace51eb83f24e0e9b302a76fe79f8db2f',1,'ripple::jss::JSS(close_time_resolution)'],['../namespaceripple_1_1jss.html#a165df8fbec91afb04a872b3e253b2220',1,'ripple::jss::JSS(closed)'],['../namespaceripple_1_1jss.html#a4e2d085d756f1cb68fce0abbc301d593',1,'ripple::jss::JSS(closed_ledger)'],['../namespaceripple_1_1jss.html#a3ebf1c7c458683d047e84871004e431f',1,'ripple::jss::JSS(cluster)'],['../namespaceripple_1_1jss.html#a37ff9544629a3f3f3c9304a4fa6b72e3',1,'ripple::jss::JSS(code)'],['../namespaceripple_1_1jss.html#a96b1217aff7b43d946abf67137db4dd1',1,'ripple::jss::JSS(command)'],['../namespaceripple_1_1jss.html#a595e875b3abf64a1e0b1188258b6fec1',1,'ripple::jss::JSS(complete)'],['../namespaceripple_1_1jss.html#a8cf35568f265f3ff3e86be414fd59e30',1,'ripple::jss::JSS(complete_ledgers)'],['../namespaceripple_1_1jss.html#a40942d4ff375349468a6bcd3635bd5a3',1,'ripple::jss::JSS(complete_shards)'],['../namespaceripple_1_1jss.html#a0c60508e93d100288b77e535dcc68783',1,'ripple::jss::JSS(consensus)'],['../namespaceripple_1_1jss.html#a8efbbfdebd5c5c73b59183ab96e70327',1,'ripple::jss::JSS(converge_time)'],['../namespaceripple_1_1jss.html#aba21f8c3da711ddec3e9ff44614b6969',1,'ripple::jss::JSS(converge_time_s)'],['../namespaceripple_1_1jss.html#a34bcabf9ad6eb489c5ed0748bea87bb1',1,'ripple::jss::JSS(cookie)'],['../namespaceripple_1_1jss.html#a1c9f4c32e6ff40abb3619b77c3ab6859',1,'ripple::jss::JSS(count)'],['../namespaceripple_1_1jss.html#a5b4a6ab68dee440737c3d7fdd2602871',1,'ripple::jss::JSS(counters)'],['../namespaceripple_1_1jss.html#a692112be4dc2b3084a866259a0ee0b65',1,'ripple::jss::JSS(currency_a)'],['../namespaceripple_1_1jss.html#a9e01b2b112f22799e576f73ed32558c2',1,'ripple::jss::JSS(currency_b)'],['../namespaceripple_1_1jss.html#ae84898736b98bf3b31adefa36765a91f',1,'ripple::jss::JSS(currentShard)'],['../namespaceripple_1_1jss.html#aaf19a6e638c44070d76082827c9a45a8',1,'ripple::jss::JSS(currentShardIndex)'],['../namespaceripple_1_1jss.html#afaf1f1eb0d7d3d1366a80de132c9539a',1,'ripple::jss::JSS(currency)'],['../namespaceripple_1_1jss.html#a36b04fc468f4165afdca8582c12b8661',1,'ripple::jss::JSS(current)'],['../namespaceripple_1_1jss.html#abc322074e7bc31b172ca148510ee211b',1,'ripple::jss::JSS(current_activities)'],['../namespaceripple_1_1jss.html#ac3feb332f7a784c7bdcc65ea1bb59c5f',1,'ripple::jss::JSS(current_ledger_size)'],['../namespaceripple_1_1jss.html#adb9262572038a865a8a96972740373d4',1,'ripple::jss::JSS(current_queue_size)'],['../namespaceripple_1_1jss.html#aec5a2a0a34243ed7abdbf9c1b190faaf',1,'ripple::jss::JSS(data)'],['../namespaceripple_1_1jss.html#ad3773ddc6bd0f25864e58702fe15effb',1,'ripple::jss::JSS(date)'],['../namespaceripple_1_1jss.html#a59351c42acf7193d30ea8c697aec84e2',1,'ripple::jss::JSS(dbKBLedger)'],['../namespaceripple_1_1jss.html#afd28b513ff83ed8471f354e177c27877',1,'ripple::jss::JSS(dbKBTotal)'],['../namespaceripple_1_1jss.html#ae65c4ec94c53671c4e7c37a9b130b451',1,'ripple::jss::JSS(dbKBTransaction)'],['../namespaceripple_1_1jss.html#ad3d18b1e79b66cec6a80ee3c9fc6fe58',1,'ripple::jss::JSS(debug_signing)'],['../namespaceripple_1_1jss.html#a9cd813dc373394e7afc835e1f5810266',1,'ripple::jss::JSS(deletion_blockers_only)'],['../namespaceripple_1_1jss.html#ad49f4c69287015ee8925188acc6477df',1,'ripple::jss::JSS(delivered_amount)'],['../namespaceripple_1_1jss.html#ae8a81aea60229512eea47b8703b9d9e1',1,'ripple::jss::JSS(deposit_authorized)'],['../namespaceripple_1_1jss.html#a506f596977236e4f7a379f1e8977eb24',1,'ripple::jss::JSS(deposit_preauth)'],['../namespaceripple_1_1jss.html#a6fff84046845c0b5d67b93a47ccdd857',1,'ripple::jss::JSS(deprecated)'],['../namespaceripple_1_1jss.html#a3d3975b0ac0a60af806c166d73fb9473',1,'ripple::jss::JSS(descending)'],['../namespaceripple_1_1jss.html#acfb39a018c819fefb53c0f3592714c7f',1,'ripple::jss::JSS(description)'],['../namespaceripple_1_1jss.html#a8fd8eb022bdb13345c6faff5b045a2bc',1,'ripple::jss::JSS(destination)'],['../namespaceripple_1_1jss.html#a8b454341a1834cf0c1e04dbf198a68ee',1,'ripple::jss::JSS(destination_account)'],['../namespaceripple_1_1jss.html#a98b0c210c816cedcd84833b7352a81d8',1,'ripple::jss::JSS(destination_amount)'],['../namespaceripple_1_1jss.html#a5d3f0125e3f6ea39bba35cd91adcebf6',1,'ripple::jss::JSS(destination_currencies)'],['../namespaceripple_1_1jss.html#a93e20077e82505daddf76639df83f270',1,'ripple::jss::JSS(destination_tag)'],['../namespaceripple_1_1jss.html#a33f43524db42b7b02b0a66d6dfb03a32',1,'ripple::jss::JSS(details)'],['../namespaceripple_1_1jss.html#a875aa8bd78378ce579f180f1134abfe6',1,'ripple::jss::JSS(dir_entry)'],['../namespaceripple_1_1jss.html#aecaf77ad6aa35e4523db08d31a8d0359',1,'ripple::jss::JSS(dir_index)'],['../namespaceripple_1_1jss.html#aa1b1c547651f7d0534ce00c3d045e84e',1,'ripple::jss::JSS(dir_root)'],['../namespaceripple_1_1jss.html#a3e89c1411b1c83620ab26594f0e9fe3e',1,'ripple::jss::JSS(directory)'],['../namespaceripple_1_1jss.html#a2add4259b579ec0b7b577ac79cd4547b',1,'ripple::jss::JSS(domain)'],['../namespaceripple_1_1jss.html#afb7c4905c64523f9257b4e3ad37c96e7',1,'ripple::jss::JSS(drops)'],['../namespaceripple_1_1jss.html#acd0817ff6c9da856d6a7198b1507b7bf',1,'ripple::jss::JSS(duration_us)'],['../namespaceripple_1_1jss.html#ad68912f634979603fa9734eeb6512655',1,'ripple::jss::JSS(effective)'],['../namespaceripple_1_1jss.html#a398e71b098c4089a757958062738d764',1,'ripple::jss::JSS(enabled)'],['../namespaceripple_1_1jss.html#ae5118b2033ffb5fce9d6710965a319a3',1,'ripple::jss::JSS(engine_result)'],['../namespaceripple_1_1jss.html#afeb39ec5fcd8c2355e89ca0fc8cae300',1,'ripple::jss::JSS(engine_result_code)'],['../namespaceripple_1_1jss.html#a0b4fe6d4a69b64493bc49c78619229e1',1,'ripple::jss::JSS(engine_result_message)'],['../namespaceripple_1_1jss.html#a29f075af7a947aa1eeb9c9c017aa1c5b',1,'ripple::jss::JSS(ephemeral_key)'],['../namespaceripple_1_1jss.html#aae6e3761f93b5fcfb075e67f99b4602e',1,'ripple::jss::JSS(error)'],['../namespaceripple_1_1jss.html#a0370f775a0d14ee0c9dfeac8b4806a16',1,'ripple::jss::JSS(errored)'],['../namespaceripple_1_1jss.html#a6d5680deffd5a636d1c563d939e27dde',1,'ripple::jss::JSS(error_code)'],['../namespaceripple_1_1jss.html#a2704d55bdbedc84e1cc40d1357fa788a',1,'ripple::jss::JSS(error_exception)'],['../namespaceripple_1_1jss.html#a61623fb7591f317d23f3811bb3caef2b',1,'ripple::jss::JSS(error_message)'],['../namespaceripple_1_1jss.html#a7206959dc2bba27b954f6acb9a6d050c',1,'ripple::jss::JSS(escrow)'],['../namespaceripple_1_1jss.html#a0b774122d2fae57d48a179cceda99c65',1,'ripple::jss::JSS(expand)'],['../namespaceripple_1_1jss.html#a21cf049d34c243a54727c4b6a8650253',1,'ripple::jss::JSS(expected_date)'],['../namespaceripple_1_1jss.html#af0ec96bf32d542e3bf27120e5a0538f2',1,'ripple::jss::JSS(expected_date_UTC)'],['../namespaceripple_1_1jss.html#ad3faef86179a660bc23170e096a212fd',1,'ripple::jss::JSS(expected_ledger_size)'],['../namespaceripple_1_1jss.html#a2951f3d0d0e756b9623b03e10cc83e13',1,'ripple::jss::JSS(expiration)'],['../namespaceripple_1_1jss.html#afb656d6325fef64a1e10399568735a0b',1,'ripple::jss::JSS(fail_hard)'],['../namespaceripple_1_1jss.html#ac15059fe46cbfcd61fd073c0af432a7c',1,'ripple::jss::JSS(failed)'],['../namespaceripple_1_1jss.html#ab7ad13f436fe30db027ba0ee37f4f33f',1,'ripple::jss::JSS(feature)'],['../namespaceripple_1_1jss.html#a0b4d7ef0eed5b9d06c02d6c883fcd387',1,'ripple::jss::JSS(features)'],['../namespaceripple_1_1jss.html#a58bbfb30a5805800847e0e9bf338a247',1,'ripple::jss::JSS(fee)'],['../namespaceripple_1_1jss.html#ae6d0c17a1b5c98b3a1f482f1205d9a12',1,'ripple::jss::JSS(fee_base)'],['../namespaceripple_1_1jss.html#a391fe9a28d31e33c6fc13475f57cf2c9',1,'ripple::jss::JSS(fee_div_max)'],['../namespaceripple_1_1jss.html#af0b1e7a8d76a926b01b7eaa028bbea46',1,'ripple::jss::JSS(fee_level)'],['../namespaceripple_1_1jss.html#aca8f86c3e5e6eb887899e7ee8bc0df7e',1,'ripple::jss::JSS(fee_mult_max)'],['../namespaceripple_1_1jss.html#a215d4f60eff867cd2c084e47e50a634e',1,'ripple::jss::JSS(fee_ref)'],['../namespaceripple_1_1jss.html#a18a9254962f7b987daca625b58b97ab7',1,'ripple::jss::JSS(fetch_pack)'],['../namespaceripple_1_1jss.html#a1d3b972f322b00065a0ef477ae22ba7b',1,'ripple::jss::JSS(first)'],['../namespaceripple_1_1jss.html#a18c045692285619aa6c595092710a51f',1,'ripple::jss::JSS(firstSequence)'],['../namespaceripple_1_1jss.html#af8a54cfef2aae02c9aeea61822e2f8c8',1,'ripple::jss::JSS(firstShardIndex)'],['../namespaceripple_1_1jss.html#a032838c5d8db1bdc76bcab5468995e9c',1,'ripple::jss::JSS(finished)'],['../namespaceripple_1_1jss.html#a46bf0460849388d3c788a79475da7b9e',1,'ripple::jss::JSS(fix_txns)'],['../namespaceripple_1_1jss.html#ab015225765c7465956d7248de13fa836',1,'ripple::jss::JSS(flags)'],['../namespaceripple_1_1jss.html#abb4f36b2f14a61c19f6cb026fb5a2cde',1,'ripple::jss::JSS(forward)'],['../namespaceripple_1_1jss.html#ae11bc6df38ffffd6cdba11058d9f450e',1,'ripple::jss::JSS(freeze)'],['../namespaceripple_1_1jss.html#abadfba906869530654549a2903f3b467',1,'ripple::jss::JSS(freeze_peer)'],['../namespaceripple_1_1jss.html#abae39ee9010b7cecf956add9ae5c9e81',1,'ripple::jss::JSS(frozen_balances)'],['../namespaceripple_1_1jss.html#ad5c07ed50d451e1da919232d119c0966',1,'ripple::jss::JSS(full)'],['../namespaceripple_1_1jss.html#adc78f312cddb8bb99c88c21db7cb7d4e',1,'ripple::jss::JSS(full_reply)'],['../namespaceripple_1_1jss.html#a237dcb272333b56a5ee89cc6147a5ecd',1,'ripple::jss::JSS(fullbelow_size)'],['../namespaceripple_1_1jss.html#a83ae7878ac025ef9562deca56776439f',1,'ripple::jss::JSS(good)'],['../namespaceripple_1_1jss.html#ad39f40f57e1aaa1121515da7cce1cac9',1,'ripple::jss::JSS(hash)'],['../namespaceripple_1_1jss.html#afaa2945fd9dd118b9a3bb058bc22cb3c',1,'ripple::jss::JSS(hashes)'],['../namespaceripple_1_1jss.html#a29703852e6ac4d8e5e4c0adeb7a03632',1,'ripple::jss::JSS(have_header)'],['../namespaceripple_1_1jss.html#a0ed3527e30f4af562c1b52210d9a22f8',1,'ripple::jss::JSS(have_state)'],['../namespaceripple_1_1jss.html#ad9e4342ddb4e120f1f2deba85b8888b0',1,'ripple::jss::JSS(have_transactions)'],['../namespaceripple_1_1jss.html#afba54f374631b9f33350dce8c358f447',1,'ripple::jss::JSS(high)'],['../namespaceripple_1_1jss.html#ac2d270ee51d74be36d4a1a6ecc9a33d5',1,'ripple::jss::JSS(highest_sequence)'],['../namespaceripple_1_1jss.html#a820e84cdb69d387b1cc0e3836df0742f',1,'ripple::jss::JSS(highest_ticket)'],['../namespaceripple_1_1jss.html#afc5eb500ed30b44d1cdba061f4cbf59f',1,'ripple::jss::JSS(historical_perminute)'],['../namespaceripple_1_1jss.html#a46834411d84b7901465087a4ad98043a',1,'ripple::jss::JSS(hostid)'],['../namespaceripple_1_1jss.html#ae1d31e9c62441a6aa13535443476724c',1,'ripple::jss::JSS(hotwallet)'],['../namespaceripple_1_1jss.html#aec7d9c55f43c8b74ed535a2cbd8efeb0',1,'ripple::jss::JSS(id)'],['../namespaceripple_1_1jss.html#aafdbabe0d2d3fbcc03944c6cce33e9f3',1,'ripple::jss::JSS(ident)'],['../namespaceripple_1_1jss.html#aaa69a01a572916e73ccf2f4d513f9ab6',1,'ripple::jss::JSS(ignore_default)'],['../namespaceripple_1_1jss.html#abef52d6643f645cbb8864a134912bb25',1,'ripple::jss::JSS(inLedger)'],['../namespaceripple_1_1jss.html#ac124c60c2739c9837a88336162221c0b',1,'ripple::jss::JSS(inbound)'],['../namespaceripple_1_1jss.html#a34e8647bf74e7c136db537717e02f8f7',1,'ripple::jss::JSS(index)'],['../namespaceripple_1_1jss.html#a6f04c49d9122ed3be42c66692af3b3ae',1,'ripple::jss::JSS(info)'],['../namespaceripple_1_1jss.html#a98b32b94f74b793aa56b9b38c754e0c4',1,'ripple::jss::JSS(initial_sync_duration_us)'],['../namespaceripple_1_1jss.html#a2a907e5f04837f9c2388b648d1c3eeb2',1,'ripple::jss::JSS(internal_command)'],['../namespaceripple_1_1jss.html#ac8a338bdcf84803d61a5bc78810372fb',1,'ripple::jss::JSS(invalid_API_version)'],['../namespaceripple_1_1jss.html#af1177a9dfd442428127cf177737736a2',1,'ripple::jss::JSS(io_latency_ms)'],['../namespaceripple_1_1jss.html#a862f68b5891afa2eb547ec3f9b682d5f',1,'ripple::jss::JSS(ip)'],['../namespaceripple_1_1jss.html#a7e299a1871aecf886aa10b578c6545c0',1,'ripple::jss::JSS(issuer)'],['../namespaceripple_1_1jss.html#a8e2c359715479cdc1457576fcdaa1bce',1,'ripple::jss::JSS(job)'],['../namespaceripple_1_1jss.html#a173c811816e2dc2171e713b4cb4ca8bf',1,'ripple::jss::JSS(job_queue)'],['../namespaceripple_1_1jss.html#a4180ceb26394ec47ed00284996c9b5d8',1,'ripple::jss::JSS(jobs)'],['../namespaceripple_1_1jss.html#a0afcf3006ab72333c31530b7351857c6',1,'ripple::jss::JSS(jsonrpc)'],['../namespaceripple_1_1jss.html#a641417496c5a7634abfc852bbd0eb9d7',1,'ripple::jss::JSS(jq_trans_overflow)'],['../namespaceripple_1_1jss.html#adecb26ce36b6b9762d766e2ab3396dc9',1,'ripple::jss::JSS(kept)'],['../namespaceripple_1_1jss.html#a406f85e2c5ae01882773cb4b09070f2b',1,'ripple::jss::JSS(key)'],['../namespaceripple_1_1jss.html#a427a778204fa66a55c3683ed000c1e9c',1,'ripple::jss::JSS(key_type)'],['../namespaceripple_1_1jss.html#aeae6972c9a347179222e4c3ca437ea42',1,'ripple::jss::JSS(latency)'],['../namespaceripple_1_1jss.html#a3ff236a09100028b3cf7649f08742e01',1,'ripple::jss::JSS(last)'],['../namespaceripple_1_1jss.html#a0571e3121cad11e1a751f2de565931c3',1,'ripple::jss::JSS(lastSequence)'],['../namespaceripple_1_1jss.html#ae9ae06a52b93b74cdefe1edbe438c4bd',1,'ripple::jss::JSS(lastShardIndex)'],['../namespaceripple_1_1jss.html#ab46428949d3e39914238f5f8cc0f2551',1,'ripple::jss::JSS(last_close)'],['../namespaceripple_1_1jss.html#a7ee6521d32812087edec35dc47ca1781',1,'ripple::jss::JSS(last_refresh_time)'],['../namespaceripple_1_1jss.html#aef21c6b9d2a8339207b1cb4949f24e72',1,'ripple::jss::JSS(last_refresh_status)'],['../namespaceripple_1_1jss.html#a1714928cf2b78f86feaf169a5a52c644',1,'ripple::jss::JSS(last_refresh_message)'],['../namespaceripple_1_1jss.html#a992bc8de5c39f87a28aa26d343c11e32',1,'ripple::jss::JSS(ledger)'],['../namespaceripple_1_1jss.html#a675bf95ddfed251aeedce8eaaa748cbe',1,'ripple::jss::JSS(ledger_current_index)'],['../namespaceripple_1_1jss.html#af3306e6b1b2d6b4ee00372b94eb7ef0a',1,'ripple::jss::JSS(ledger_data)'],['../namespaceripple_1_1jss.html#aaeb14d8510ef99859f296a789e51f088',1,'ripple::jss::JSS(ledger_hash)'],['../namespaceripple_1_1jss.html#a08df679178e9ac6201ca5d85d3bf8e38',1,'ripple::jss::JSS(ledger_hit_rate)'],['../namespaceripple_1_1jss.html#a2c7231c67e2a5a5dab79fde4e24ce6d5',1,'ripple::jss::JSS(ledger_index)'],['../namespaceripple_1_1jss.html#a047aecac6e8b1272f2f1bd6bd4f59b6b',1,'ripple::jss::JSS(ledger_index_max)'],['../namespaceripple_1_1jss.html#ac4d1c3618248ee0fadfc5ebdaf90ab21',1,'ripple::jss::JSS(ledger_index_min)'],['../namespaceripple_1_1jss.html#ab06c7c81e25495e0466163e3b6cc5ecc',1,'ripple::jss::JSS(ledger_max)'],['../namespaceripple_1_1jss.html#a8f9dcace83a46f1f1e12e10bafaec465',1,'ripple::jss::JSS(ledger_min)'],['../namespaceripple_1_1jss.html#a5b7555b733a4e1a0c5ec94f30751f470',1,'ripple::jss::JSS(ledger_time)'],['../namespaceripple_1_1jss.html#a72b110f05042e0e6da706fe6aadac75d',1,'ripple::jss::JSS(levels)'],['../namespaceripple_1_1jss.html#aa3afe635c40b7eba919b88f7d6ffa058',1,'ripple::jss::JSS(limit)'],['../namespaceripple_1_1jss.html#a5bea40cc26d67ea2f069fd6bc22d4b98',1,'ripple::jss::JSS(limit_peer)'],['../namespaceripple_1_1jss.html#ab9c3372089b08854d1edc3d7a8ac442c',1,'ripple::jss::JSS(lines)'],['../namespaceripple_1_1jss.html#a556ba5c427b4de420ba4fa95ccc8588b',1,'ripple::jss::JSS(list)'],['../namespaceripple_1_1jss.html#a4c6cccb2d97e9d74e0e7b84e638f4cbb',1,'ripple::jss::JSS(load)'],['../namespaceripple_1_1jss.html#a383ec9b21645a71314feed235281ec3d',1,'ripple::jss::JSS(load_base)'],['../namespaceripple_1_1jss.html#abf0c49f3f1d0b325d70e51bcad949eed',1,'ripple::jss::JSS(load_factor)'],['../namespaceripple_1_1jss.html#a6802d5c244124e8668e648c1eb35d13f',1,'ripple::jss::JSS(load_factor_cluster)'],['../namespaceripple_1_1jss.html#a90d596bc1be1e33aae7c1b4bbab85788',1,'ripple::jss::JSS(load_factor_fee_escalation)'],['../namespaceripple_1_1jss.html#aa34ec46a165e26160681a9bf02f47e8e',1,'ripple::jss::JSS(load_factor_fee_queue)'],['../namespaceripple_1_1jss.html#a13ba923543ae78606621a921f6d73f2f',1,'ripple::jss::JSS(load_factor_fee_reference)'],['../namespaceripple_1_1jss.html#a6a11292900910bfbc6250dc4b64dcadc',1,'ripple::jss::JSS(load_factor_local)'],['../namespaceripple_1_1jss.html#a4ed9602bfc5613fb72bba4bf6578b9b6',1,'ripple::jss::JSS(load_factor_net)'],['../namespaceripple_1_1jss.html#a245b4eda0af317f71dd64201e5de6c85',1,'ripple::jss::JSS(load_factor_server)'],['../namespaceripple_1_1jss.html#a373f4468b245935e969e055534b02dac',1,'ripple::jss::JSS(load_fee)'],['../namespaceripple_1_1jss.html#abd1f5c593f4a84b51f61fb98b1947f3f',1,'ripple::jss::JSS(local)'],['../namespaceripple_1_1jss.html#aac8e8f4c448f28283f3260e5726e16b7',1,'ripple::jss::JSS(local_txs)'],['../namespaceripple_1_1jss.html#a066a511baab3a42710ee18b1467d0e64',1,'ripple::jss::JSS(local_static_keys)'],['../namespaceripple_1_1jss.html#ac5483f7a3d46b7255c08b6ed06b59328',1,'ripple::jss::JSS(low)'],['../namespaceripple_1_1jss.html#ae22c1de160239666c2978a4ed8d0c08d',1,'ripple::jss::JSS(lowest_sequence)'],['../namespaceripple_1_1jss.html#a390ad84f4ee9211b8dfc8f9ba4afb1c9',1,'ripple::jss::JSS(lowest_ticket)'],['../namespaceripple_1_1jss.html#af626284ae3dc6049b95e9b0e4f7a2e15',1,'ripple::jss::JSS(majority)'],['../namespaceripple_1_1jss.html#ad2bd13dd26ddb7dcbab1a30d0ad5d585',1,'ripple::jss::JSS(manifest)'],['../namespaceripple_1_1jss.html#ac0bfb550d212b03bfd8e2148bd045177',1,'ripple::jss::JSS(marker)'],['../namespaceripple_1_1jss.html#adc0d3b81f16a66efb835a20963fa7a91',1,'ripple::jss::JSS(master_key)'],['../namespaceripple_1_1jss.html#a6ffbe65da7d08e8aa9fbdd569c3f803f',1,'ripple::jss::JSS(master_seed)'],['../namespaceripple_1_1jss.html#a90cb226d586e3a3974187f5a4917ccb8',1,'ripple::jss::JSS(master_seed_hex)'],['../namespaceripple_1_1jss.html#a2bb59f1e2ccc8fcf1022765b055ac8e8',1,'ripple::jss::JSS(master_signature)'],['../namespaceripple_1_1jss.html#a8c5be9f9c158869fbe745859a13c0a39',1,'ripple::jss::JSS(max_ledger)'],['../namespaceripple_1_1jss.html#af778b000f84666324b93a0c06a98b6e1',1,'ripple::jss::JSS(max_queue_size)'],['../namespaceripple_1_1jss.html#a8c3c692cc17a76c63a0961c9dcfd8792',1,'ripple::jss::JSS(max_spend_drops)'],['../namespaceripple_1_1jss.html#a2a597026393c9d7ab75e808201a8e7ed',1,'ripple::jss::JSS(max_spend_drops_total)'],['../namespaceripple_1_1jss.html#aedb5564b792c8255001275b457df1cd7',1,'ripple::jss::JSS(median_fee)'],['../namespaceripple_1_1jss.html#a4f81aef1a9bcae2f074b31ee373b94d9',1,'ripple::jss::JSS(median_level)'],['../namespaceripple_1_1jss.html#a5cd54ed1066847300869c4f6f4b624be',1,'ripple::jss::JSS(message)'],['../namespaceripple_1_1jss.html#a5a96309cb3f861cef5cd4f2ac6a44625',1,'ripple::jss::JSS(meta)'],['../namespaceripple_1_1jss.html#a90582d8dae6b02654a960471c58a6dfd',1,'ripple::jss::JSS(metaData)'],['../namespaceripple_1_1jss.html#a7bdf102a1b27098110dead1372aa9b5e',1,'ripple::jss::JSS(metadata)'],['../namespaceripple_1_1jss.html#a5d9075b1c58ae9c75f9592da61924c93',1,'ripple::jss::JSS(method)'],['../namespaceripple_1_1jss.html#a8681bb5e03eefa86e3659a614ebd07ff',1,'ripple::jss::JSS(methods)'],['../namespaceripple_1_1jss.html#afd388f8eb1116c9890c0b9b66f9b4698',1,'ripple::jss::JSS(metrics)'],['../namespaceripple_1_1jss.html#a0036690b962026ff10c95307a5a65b87',1,'ripple::jss::JSS(min_count)'],['../namespaceripple_1_1jss.html#a544b34a294393261eed39f96860ef21d',1,'ripple::jss::JSS(min_ledger)'],['../namespaceripple_1_1jss.html#a3ec35c73fd9a79fbd39d141d9490f1b5',1,'ripple::jss::JSS(minimum_fee)'],['../namespaceripple_1_1jss.html#a43c27472d5aa7bfd0268742c7fa9d78a',1,'ripple::jss::JSS(minimum_level)'],['../namespaceripple_1_1jss.html#a435c67595d4fb9eda997fc38148c5992',1,'ripple::jss::JSS(missingCommand)'],['../namespaceripple_1_1jss.html#a7d4c42927e3deaf2718257b187945bd1',1,'ripple::jss::JSS(name)'],['../namespaceripple_1_1jss.html#a4d1bee255ff817c13039f01b578bd04e',1,'ripple::jss::JSS(needed_state_hashes)'],['../namespaceripple_1_1jss.html#a0873b466701543ba534e57b4f29c87ce',1,'ripple::jss::JSS(needed_transaction_hashes)'],['../namespaceripple_1_1jss.html#ade22bdc9faf2b34a0ad6895de567b17e',1,'ripple::jss::JSS(network_id)'],['../namespaceripple_1_1jss.html#a70f97400a3740fd6ff4a4808d96fa385',1,'ripple::jss::JSS(network_ledger)'],['../namespaceripple_1_1jss.html#a5314dd903b04bfb0be2a2fb5e9f5e943',1,'ripple::jss::JSS(next_refresh_time)'],['../namespaceripple_1_1jss.html#a0f208889b443f105e3d4d2a37d89dff2',1,'ripple::jss::JSS(nft_id)'],['../namespaceripple_1_1jss.html#a0d2354620b5d5fd20e08e865fbaf4dec',1,'ripple::jss::JSS(nft_offer)'],['../namespaceripple_1_1jss.html#af96e6b8ada045d9895c3b13e2fdd1f5f',1,'ripple::jss::JSS(nft_offer_index)'],['../namespaceripple_1_1jss.html#a6408f29a93408770cb7124876ad935ad',1,'ripple::jss::JSS(nft_page)'],['../namespaceripple_1_1jss.html#ac903b8674b95c58a9bf72e1f54a78ac7',1,'ripple::jss::JSS(nft_serial)'],['../namespaceripple_1_1jss.html#a098e303535d59f2a1c222346648af4e1',1,'ripple::jss::JSS(no_ripple)'],['../namespaceripple_1_1jss.html#a62085c1b921768741e00af54424dabe8',1,'ripple::jss::JSS(no_ripple_peer)'],['../namespaceripple_1_1jss.html#a5ce1412776f6628085ada99ae860c496',1,'ripple::jss::JSS(node)'],['../namespaceripple_1_1jss.html#a0cdc2371c0dd8d4f4faa58126a532193',1,'ripple::jss::JSS(node_binary)'],['../namespaceripple_1_1jss.html#a89afdea55b77ffd7c0c5f92ec55f6f06',1,'ripple::jss::JSS(node_read_bytes)'],['../namespaceripple_1_1jss.html#a1f76320b1f860ab0e2510496b25f84d5',1,'ripple::jss::JSS(node_read_errors)'],['../namespaceripple_1_1jss.html#a4d767ff4480ea95fef87f65280c32341',1,'ripple::jss::JSS(node_read_retries)'],['../namespaceripple_1_1jss.html#a37c493225502be5ff30227fb6f5a8ea9',1,'ripple::jss::JSS(node_reads_hit)'],['../namespaceripple_1_1jss.html#a22fac9837a20d746c926090feccfde41',1,'ripple::jss::JSS(node_reads_total)'],['../namespaceripple_1_1jss.html#a2d1927386a4f598a1fac81248719eb29',1,'ripple::jss::JSS(node_reads_duration_us)'],['../namespaceripple_1_1jss.html#ade0100e0c0f7185673cb60099f69ef39',1,'ripple::jss::JSS(node_size)'],['../namespaceripple_1_1jss.html#a115fc43a11cbf6662f80bc28e7cf9cb7',1,'ripple::jss::JSS(nodestore)'],['../namespaceripple_1_1jss.html#aebc8390afa967a29debdc5bf919f29a5',1,'ripple::jss::JSS(node_writes)'],['../namespaceripple_1_1jss.html#ae1a55e6dc828b545c246bce2fd5f612b',1,'ripple::jss::JSS(node_written_bytes)'],['../namespaceripple_1_1jss.html#a77238346f1b44643500210cd3d424553',1,'ripple::jss::JSS(node_writes_duration_us)'],['../namespaceripple_1_1jss.html#af32cc33872d30172ae95d39280f76c0d',1,'ripple::jss::JSS(node_write_retries)'],['../namespaceripple_1_1jss.html#a344b30d62916b0ac04ca7c99322b4c4d',1,'ripple::jss::JSS(node_writes_delayed)'],['../namespaceripple_1_1jss.html#a4c1c6394675679df4cbccfcf6669e415',1,'ripple::jss::JSS(obligations)'],['../namespaceripple_1_1jss.html#a01ab5926a0cc9e85eb8cabf137949287',1,'ripple::jss::JSS(offer)'],['../namespaceripple_1_1jss.html#a0d05c76a6523c8b9322876f900118c12',1,'ripple::jss::JSS(offers)'],['../namespaceripple_1_1jss.html#add2923b71f2b172f1194f98309a2e241',1,'ripple::jss::JSS(offline)'],['../namespaceripple_1_1jss.html#a6cbba2e11f288b221785c2ba8c7ef660',1,'ripple::jss::JSS(offset)'],['../namespaceripple_1_1jss.html#a74a2a83ae37909eea587bb4fc93d4d3d',1,'ripple::jss::JSS(open)'],['../namespaceripple_1_1jss.html#a17303714c81b985a736e2a6d4a377ed7',1,'ripple::jss::JSS(open_ledger_cost)'],['../namespaceripple_1_1jss.html#a1958ad7592fcfbe13fdceb1e965b54cf',1,'ripple::jss::JSS(open_ledger_fee)'],['../namespaceripple_1_1jss.html#a1f5eeb938cd57eaec4f680ec5e626051',1,'ripple::jss::JSS(open_ledger_level)'],['../namespaceripple_1_1jss.html#aa9cfe2151c29a8c510fc66523d88c409',1,'ripple::jss::JSS(owner)'],['../namespaceripple_1_1jss.html#a6984e6a016f86b4559beb39101d970ad',1,'ripple::jss::JSS(owner_funds)'],['../namespaceripple_1_1jss.html#a54d8e4416540559d3b2c7f68e9160303',1,'ripple::jss::JSS(page_index)'],['../namespaceripple_1_1jss.html#af39b84953ad76f2caab306726e10cdce',1,'ripple::jss::JSS(params)'],['../namespaceripple_1_1jss.html#a72de494d7ba36760386c50b2d947fd18',1,'ripple::jss::JSS(parent_close_time)'],['../namespaceripple_1_1jss.html#aa9ba5e244629a133b8c6c24dd5388e6d',1,'ripple::jss::JSS(parent_hash)'],['../namespaceripple_1_1jss.html#afd0df8b37f6f52b0f690338508187086',1,'ripple::jss::JSS(partition)'],['../namespaceripple_1_1jss.html#a86461ac8d22c5d7011d8a5a2438095b3',1,'ripple::jss::JSS(passphrase)'],['../namespaceripple_1_1jss.html#a41a4b92b7d4a072018c395e42d7eb867',1,'ripple::jss::JSS(password)'],['../namespaceripple_1_1jss.html#af624b4728b1943720cbe71f5ff390943',1,'ripple::jss::JSS(paths)'],['../namespaceripple_1_1jss.html#abb3be6225bed3b89300ea12e3d48fc16',1,'ripple::jss::JSS(paths_canonical)'],['../namespaceripple_1_1jss.html#a6c0933e11f6a25f959ff939a3045e0ac',1,'ripple::jss::JSS(paths_computed)'],['../namespaceripple_1_1jss.html#a3d861d419d20d538b86e2ab710673645',1,'ripple::jss::JSS(payment_channel)'],['../namespaceripple_1_1jss.html#a59b7bc58e5605b228176d8b7509a8c65',1,'ripple::jss::JSS(peer)'],['../namespaceripple_1_1jss.html#ad8ff0d62f2883de7f8905311ed406103',1,'ripple::jss::JSS(peer_authorized)'],['../namespaceripple_1_1jss.html#ad8bb0359456f031169a4c6ddec5c129a',1,'ripple::jss::JSS(peer_id)'],['../namespaceripple_1_1jss.html#a7e1a66a281df46a5ed4e01b14c899e38',1,'ripple::jss::JSS(peers)'],['../namespaceripple_1_1jss.html#a88d37f07b853e2c1f60a31f424ffd5ce',1,'ripple::jss::JSS(peer_disconnects)'],['../namespaceripple_1_1jss.html#a129c4f438a7222b0d4ab097a9b4bd814',1,'ripple::jss::JSS(peer_disconnects_resources)'],['../namespaceripple_1_1jss.html#aadf5b61855beac3c7038de8009f4ce73',1,'ripple::jss::JSS(port)'],['../namespaceripple_1_1jss.html#afdb2d45c51e33968c1ff8ae7253e74f6',1,'ripple::jss::JSS(previous)'],['../namespaceripple_1_1jss.html#acdeff6961b45ef1da68dce5b1e7335de',1,'ripple::jss::JSS(previous_ledger)'],['../namespaceripple_1_1jss.html#aae7a0aeb3b8036a6a881a0e8d5154625',1,'ripple::jss::JSS(proof)'],['../namespaceripple_1_1jss.html#a3a888a411dcef169a956cae089a33573',1,'ripple::jss::JSS(propose_seq)'],['../namespaceripple_1_1jss.html#a109e160e7f01eda1c4e0b2f62b044f3c',1,'ripple::jss::JSS(proposers)'],['../namespaceripple_1_1jss.html#addd2ba49519cf4c184288ab57b3a4115',1,'ripple::jss::JSS(protocol)'],['../namespaceripple_1_1jss.html#aca834f8a93d2b4610b0da7c0095978af',1,'ripple::jss::JSS(proxied)'],['../namespaceripple_1_1jss.html#a156846a12e4481025f044acf1382c383',1,'ripple::jss::JSS(pubkey_node)'],['../namespaceripple_1_1jss.html#a40e55c8a5223e39f492bfb1215cbc9aa',1,'ripple::jss::JSS(pubkey_publisher)'],['../namespaceripple_1_1jss.html#aebc6a9c0935c49aba5010b9026ce880e',1,'ripple::jss::JSS(pubkey_validator)'],['../namespaceripple_1_1jss.html#ae45158a42c79f0f50aed8c8cc0553d30',1,'ripple::jss::JSS(public_key)'],['../namespaceripple_1_1jss.html#a6a2f90321e9be56fd5a344c431aa95ea',1,'ripple::jss::JSS(public_key_hex)'],['../namespaceripple_1_1jss.html#a671b12f8ca23cfd12363ec4b1f723d6b',1,'ripple::jss::JSS(published_ledger)'],['../namespaceripple_1_1jss.html#aa75a8d5cb609d4cceb2d15eb13212e43',1,'ripple::jss::JSS(publisher_lists)'],['../namespaceripple_1_1jss.html#a27f2611bb5cb26cb7dd7523bc0ad0dee',1,'ripple::jss::JSS(quality)'],['../namespaceripple_1_1jss.html#ad03aa2d2fd83909d2e237a463010f121',1,'ripple::jss::JSS(quality_in)'],['../namespaceripple_1_1jss.html#a65e4d5e35f00f6cdae89ba256619d4ef',1,'ripple::jss::JSS(quality_out)'],['../namespaceripple_1_1jss.html#a7151e1b6cd5e6b1be198a56cd01597ef',1,'ripple::jss::JSS(queue)'],['../namespaceripple_1_1jss.html#a1b1fb3bd7ac8c3663af34bd384ae2355',1,'ripple::jss::JSS(queue_data)'],['../namespaceripple_1_1jss.html#ad88d8e74f87b163bf99549092aaf4b20',1,'ripple::jss::JSS(queued)'],['../namespaceripple_1_1jss.html#a9ccfabf15341bdacf0ac717557a0af23',1,'ripple::jss::JSS(queued_duration_us)'],['../namespaceripple_1_1jss.html#ae32a9da487a082aff61a78419b1a4b44',1,'ripple::jss::JSS(random)'],['../namespaceripple_1_1jss.html#ae2351e897c6dca3c3aab25bb17086100',1,'ripple::jss::JSS(raw_meta)'],['../namespaceripple_1_1jss.html#a47b7654a9a4eef538dc7f309780e061c',1,'ripple::jss::JSS(receive_currencies)'],['../namespaceripple_1_1jss.html#a4b7000091c118b53355d3b8d198d3971',1,'ripple::jss::JSS(reference_level)'],['../namespaceripple_1_1jss.html#a266812190eb5b39cf50d8cff6301fd68',1,'ripple::jss::JSS(refresh_interval)'],['../namespaceripple_1_1jss.html#a853d712e533630145a9070d8de85c79c',1,'ripple::jss::JSS(refresh_interval_min)'],['../namespaceripple_1_1jss.html#a946b6283b24392f9786b2ca7e61d11be',1,'ripple::jss::JSS(regular_seed)'],['../namespaceripple_1_1jss.html#a16710749bcca2b74e4ce87362c895550',1,'ripple::jss::JSS(remaining)'],['../namespaceripple_1_1jss.html#aaa1fb1f97e994f096b2720c0177b1b64',1,'ripple::jss::JSS(remote)'],['../namespaceripple_1_1jss.html#a1ddddc3f0a35d9b0dc63eefe5d329ece',1,'ripple::jss::JSS(request)'],['../namespaceripple_1_1jss.html#a031ab5db8b438db6e044bb615dcd437f',1,'ripple::jss::JSS(requested)'],['../namespaceripple_1_1jss.html#a23b89ac7132b73c99b2c4eeb6a7d5ba8',1,'ripple::jss::JSS(reservations)'],['../namespaceripple_1_1jss.html#a06e38430b8efacb449dae68e3e4bd719',1,'ripple::jss::JSS(reserve_base)'],['../namespaceripple_1_1jss.html#ad3f0b63bc2dc00989d74e5e2a98d8cef',1,'ripple::jss::JSS(reserve_base_xrp)'],['../namespaceripple_1_1jss.html#a434d67df095e4b93d2888329a312f249',1,'ripple::jss::JSS(reserve_inc)'],['../namespaceripple_1_1jss.html#a30d26962060ab84f953bd174d741ef35',1,'ripple::jss::JSS(reserve_inc_xrp)'],['../namespaceripple_1_1jss.html#afa9140cf9fc26b240b3cf9d7fd9a543a',1,'ripple::jss::JSS(response)'],['../namespaceripple_1_1jss.html#ab002c1b47c7b6c1196acae240c368fd8',1,'ripple::jss::JSS(result)'],['../namespaceripple_1_1jss.html#aad2d58ba32ffb0f05e20ec574f739730',1,'ripple::jss::JSS(ripple_lines)'],['../namespaceripple_1_1jss.html#a833d63c2022621a71bca7c976fcbe2c4',1,'ripple::jss::JSS(ripple_state)'],['../namespaceripple_1_1jss.html#aceed5baff161853077dd6dc6156a59c7',1,'ripple::jss::JSS(ripplerpc)'],['../namespaceripple_1_1jss.html#ae0d5803772678f19be9d7f4bd8b39fac',1,'ripple::jss::JSS(role)'],['../namespaceripple_1_1jss.html#acfb087c654466263af799d1ef4415621',1,'ripple::jss::JSS(rpc)'],['../namespaceripple_1_1jss.html#aee7d0dc691e3014ab6e0241581527dd0',1,'ripple::jss::JSS(rt_accounts)'],['../namespaceripple_1_1jss.html#ac10cf2f8c791afac756962bfdf0f0e03',1,'ripple::jss::JSS(running_duration_us)'],['../namespaceripple_1_1jss.html#ac20f25e4c6699c9a11bb2dbdbfbd35b9',1,'ripple::jss::JSS(search_depth)'],['../namespaceripple_1_1jss.html#a33fdabee7255bc9cc0e6e02e969fd299',1,'ripple::jss::JSS(searched_all)'],['../namespaceripple_1_1jss.html#ab4bf22346e3ce730490fbac54e554319',1,'ripple::jss::JSS(secret)'],['../namespaceripple_1_1jss.html#a769765c53f57269b83469eb86fc43a2a',1,'ripple::jss::JSS(seed)'],['../namespaceripple_1_1jss.html#a18388591c49bdd58426717b896454422',1,'ripple::jss::JSS(seed_hex)'],['../namespaceripple_1_1jss.html#a19c5c81ca6ad9e1d521ffe82d8bc82bf',1,'ripple::jss::JSS(send_currencies)'],['../namespaceripple_1_1jss.html#a6558b4b11170f4fcde5bd6785543db00',1,'ripple::jss::JSS(send_max)'],['../namespaceripple_1_1jss.html#a21e87d098bb9496f57815da1ed358268',1,'ripple::jss::JSS(seq)'],['../namespaceripple_1_1jss.html#a945891671330ca1451741d6a01ce6c26',1,'ripple::jss::JSS(seqNum)'],['../namespaceripple_1_1jss.html#ae76e64937bdbbe06eb62cb73d3db5b44',1,'ripple::jss::JSS(sequence)'],['../namespaceripple_1_1jss.html#a6bcffda6c02a858abbeecdf9e58d6d19',1,'ripple::jss::JSS(sequence_count)'],['../namespaceripple_1_1jss.html#a87398173e2f3a0763f49b9144f247394',1,'ripple::jss::JSS(server_domain)'],['../namespaceripple_1_1jss.html#ae8685ce87a27424455d732e70d6749e9',1,'ripple::jss::JSS(server_state)'],['../namespaceripple_1_1jss.html#a72748915540b0400ebdfd7d350940dd5',1,'ripple::jss::JSS(server_state_duration_us)'],['../namespaceripple_1_1jss.html#af11133bbbb71606c744f48cf7cc73ffc',1,'ripple::jss::JSS(server_status)'],['../namespaceripple_1_1jss.html#aaaf7f7ce7cef0bc80576bce7dd083191',1,'ripple::jss::JSS(server_version)'],['../namespaceripple_1_1jss.html#a215e9223a6ae3e03e928c0052194dce2',1,'ripple::jss::JSS(settle_delay)'],['../namespaceripple_1_1jss.html#ab446d169fde4c5d39607f455ef7409d1',1,'ripple::jss::JSS(severity)'],['../namespaceripple_1_1jss.html#aa1162195b20caadd962d37ad3166e123',1,'ripple::jss::JSS(shards)'],['../namespaceripple_1_1jss.html#ad1550695b4ced1ef2148768548629164',1,'ripple::jss::JSS(signature)'],['../namespaceripple_1_1jss.html#a27e7424f63a6ba421a741a060883a9eb',1,'ripple::jss::JSS(signature_verified)'],['../namespaceripple_1_1jss.html#a33cf28c33911e126a41f5a52cc2aa76f',1,'ripple::jss::JSS(signing_key)'],['../namespaceripple_1_1jss.html#a0774d2833b9d21039c9d915b80ba5fd6',1,'ripple::jss::JSS(signing_keys)'],['../namespaceripple_1_1jss.html#a04d13dd9fcb31ff9cd99da7ef25ea89c',1,'ripple::jss::JSS(signing_time)'],['../namespaceripple_1_1jss.html#a20f00ada4190a5f544e941b43a36c381',1,'ripple::jss::JSS(signer_list)'],['../namespaceripple_1_1jss.html#a5077d3e4db756f7aa886582b511f3e89',1,'ripple::jss::JSS(signer_lists)'],['../namespaceripple_1_1jss.html#a1c5210d6f3f79fd228eba85b3feabe0c',1,'ripple::jss::JSS(snapshot)'],['../namespaceripple_1_1jss.html#a61c4b74cb35954d878c11c38dbb0254f',1,'ripple::jss::JSS(source_account)'],['../namespaceripple_1_1jss.html#ad8a759db804a103c90e042ab4608311d',1,'ripple::jss::JSS(source_amount)'],['../namespaceripple_1_1jss.html#a968ac5fa6e358f5193e20dc6a101f976',1,'ripple::jss::JSS(source_currencies)'],['../namespaceripple_1_1jss.html#ae01769c00a852c87146be4838c09ee5a',1,'ripple::jss::JSS(source_tag)'],['../namespaceripple_1_1jss.html#a1f82e43f1a1cc57d6a8041df58147f4b',1,'ripple::jss::JSS(stand_alone)'],['../namespaceripple_1_1jss.html#ae05699a4fc7b4f776ec152d5b669d1d4',1,'ripple::jss::JSS(start)'],['../namespaceripple_1_1jss.html#a5beb9c603c6cfda1046a50f82afe9cc1',1,'ripple::jss::JSS(started)'],['../namespaceripple_1_1jss.html#af92f75263b26ca0241b6fe0ef589c8aa',1,'ripple::jss::JSS(state)'],['../namespaceripple_1_1jss.html#ac084abe0606a3c9744be7b65bfeaacb3',1,'ripple::jss::JSS(state_accounting)'],['../namespaceripple_1_1jss.html#aa99a557008270f1242d9b52f96f4be9c',1,'ripple::jss::JSS(state_now)'],['../namespaceripple_1_1jss.html#a99c005c5372a36bdc9701d33927a8ef1',1,'ripple::jss::JSS(status)'],['../namespaceripple_1_1jss.html#a6c3c1b21b83ecd9cde9b44c88d122a54',1,'ripple::jss::JSS(stop)'],['../namespaceripple_1_1jss.html#ac86d222f149d24b7d9e76f3130eb1269',1,'ripple::jss::JSS(stop_history_tx_only)'],['../namespaceripple_1_1jss.html#a195530af42c8a054953f4059fe8656df',1,'ripple::jss::JSS(storedSeqs)'],['../namespaceripple_1_1jss.html#a6acad949a2216ac90b3dad8d1adfadbf',1,'ripple::jss::JSS(streams)'],['../namespaceripple_1_1jss.html#aa24b295ccb87952511a3765611ee8a15',1,'ripple::jss::JSS(strict)'],['../namespaceripple_1_1jss.html#a581b4c11fce8f5c5b4f29f6bccce313e',1,'ripple::jss::JSS(sub_index)'],['../namespaceripple_1_1jss.html#aaaced786b6acbd66d6abc597e30aa44b',1,'ripple::jss::JSS(subcommand)'],['../namespaceripple_1_1jss.html#adabda57626831652b07085fc47e18696',1,'ripple::jss::JSS(success)'],['../namespaceripple_1_1jss.html#a171adf01fa70537328e34d8bdf5dfd57',1,'ripple::jss::JSS(supported)'],['../namespaceripple_1_1jss.html#a178fffb2f1426d3203e6e390e4d117fd',1,'ripple::jss::JSS(system_time_offset)'],['../namespaceripple_1_1jss.html#a8617ac2597ab5a7a90518b677b6b42a7',1,'ripple::jss::JSS(tag)'],['../namespaceripple_1_1jss.html#a701bdeea142b039b979776a828d16eba',1,'ripple::jss::JSS(taker)'],['../namespaceripple_1_1jss.html#a02821ca009e61f5a8252b97b9e4180f7',1,'ripple::jss::JSS(taker_gets)'],['../namespaceripple_1_1jss.html#a64796224848c31756b72ea7b94b33a16',1,'ripple::jss::JSS(taker_gets_funded)'],['../namespaceripple_1_1jss.html#adbe5fd10d28a75bd2d459892e99a6dd6',1,'ripple::jss::JSS(taker_pays)'],['../namespaceripple_1_1jss.html#aba7b6f1e4b78fe190129102c0555c036',1,'ripple::jss::JSS(taker_pays_funded)'],['../namespaceripple_1_1jss.html#af4a7790c97568179536f320eb5495607',1,'ripple::jss::JSS(threshold)'],['../namespaceripple_1_1jss.html#ae76e9ff4efa8ac76093ac8db412b20fe',1,'ripple::jss::JSS(ticket)'],['../namespaceripple_1_1jss.html#aaca215628a9d1510b6a5f393e8b64938',1,'ripple::jss::JSS(ticket_count)'],['../namespaceripple_1_1jss.html#a37bc74d8038b2baf2a4a203ae5a98d14',1,'ripple::jss::JSS(ticket_seq)'],['../namespaceripple_1_1jss.html#aa0aefbfa4e0f02fdbd53c8212991e02e',1,'ripple::jss::JSS(time)'],['../namespaceripple_1_1jss.html#aae8c9fa4189cd14b5481764a80418d7f',1,'ripple::jss::JSS(timeouts)'],['../namespaceripple_1_1jss.html#a77cbaa22a5bdecbd66da66fb5820905f',1,'ripple::jss::JSS(track)'],['../namespaceripple_1_1jss.html#abc7bcf1d46991c52aab8ed71c2c39592',1,'ripple::jss::JSS(traffic)'],['../namespaceripple_1_1jss.html#a2712ee652daa312fbbe0ea559fc7a244',1,'ripple::jss::JSS(total)'],['../namespaceripple_1_1jss.html#a2401f0b58d3bcf911cdd2b01d0b5cc73',1,'ripple::jss::JSS(totalCoins)'],['../namespaceripple_1_1jss.html#a116f5be949510e9ba0b5bc2cb2174815',1,'ripple::jss::JSS(total_bytes_recv)'],['../namespaceripple_1_1jss.html#a6653e44f5fbc21357fc41f0906d3b8ff',1,'ripple::jss::JSS(total_bytes_sent)'],['../namespaceripple_1_1jss.html#a5ab7a11fe58d083882f5ef160a96152d',1,'ripple::jss::JSS(total_coins)'],['../namespaceripple_1_1jss.html#a09708673233aa9b917055a4a053c486c',1,'ripple::jss::JSS(transTreeHash)'],['../namespaceripple_1_1jss.html#a4fc64264521261517967946a0bd3e630',1,'ripple::jss::JSS(transaction)'],['../namespaceripple_1_1jss.html#a42451283f3361e807289eb9f4941e93c',1,'ripple::jss::JSS(transaction_hash)'],['../namespaceripple_1_1jss.html#a8b6af48f3017969cae2253810d4d51fe',1,'ripple::jss::JSS(transactions)'],['../namespaceripple_1_1jss.html#ab5eda56ff95b22c358e5a237d8849f99',1,'ripple::jss::JSS(transitions)'],['../namespaceripple_1_1jss.html#a34d8eae8d2b916452314077d756f3a33',1,'ripple::jss::JSS(treenode_cache_size)'],['../namespaceripple_1_1jss.html#ad11e2e38cee9bfb6e85d9332bf546673',1,'ripple::jss::JSS(treenode_track_size)'],['../namespaceripple_1_1jss.html#aec7fcc1cd1de8307905ccedc76087536',1,'ripple::jss::JSS(trusted)'],['../namespaceripple_1_1jss.html#acf98fda3acdd812fc38f3d88405c973a',1,'ripple::jss::JSS(trusted_validator_keys)'],['../namespaceripple_1_1jss.html#aff19f11ae3e412c143fd802ce95e3463',1,'ripple::jss::JSS(tx)'],['../namespaceripple_1_1jss.html#a2486fcbdabb916a03d2029ab7e334341',1,'ripple::jss::JSS(tx_blob)'],['../namespaceripple_1_1jss.html#ab00747a2463a29db7c24115668e4a218',1,'ripple::jss::JSS(tx_hash)'],['../namespaceripple_1_1jss.html#aaebee3c317fcd8d7fbf7835bc4885aaf',1,'ripple::jss::JSS(tx_json)'],['../namespaceripple_1_1jss.html#ae1b09a0893f0887b848b8f153881eabb',1,'ripple::jss::JSS(tx_signing_hash)'],['../namespaceripple_1_1jss.html#ab690506c55f1c3dea2366caa593f8618',1,'ripple::jss::JSS(tx_unsigned)'],['../namespaceripple_1_1jss.html#a296e5fddfe53df3407fb75d46dee564f',1,'ripple::jss::JSS(txn_count)'],['../namespaceripple_1_1jss.html#acab1e95b00be21ffedd8aa078dde7cd5',1,'ripple::jss::JSS(txr_tx_cnt)'],['../namespaceripple_1_1jss.html#a52d18a5e83bf6ab15ecce1334560c7e3',1,'ripple::jss::JSS(txr_tx_sz)'],['../namespaceripple_1_1jss.html#a41af8cbc748a25f66931d1d33409901e',1,'ripple::jss::JSS(txr_have_txs_cnt)'],['../namespaceripple_1_1jss.html#a0cf79a4087e506da0c5b72625f01d192',1,'ripple::jss::JSS(txr_have_txs_sz)'],['../namespaceripple_1_1jss.html#a41e744430bf72f353fc2072a4ccc7d9e',1,'ripple::jss::JSS(txr_get_ledger_cnt)'],['../namespaceripple_1_1jss.html#abd86cc67feedb69c1f907a1e7063f45f',1,'ripple::jss::JSS(txr_get_ledger_sz)'],['../namespaceripple_1_1jss.html#acf0f73154e59a125ffc0c878e4998dd1',1,'ripple::jss::JSS(txr_ledger_data_cnt)'],['../namespaceripple_1_1jss.html#a42d3c6ff6d89f4297a15ee9d4b937158',1,'ripple::jss::JSS(txr_ledger_data_sz)'],['../namespaceripple_1_1jss.html#a9bb4d6e35e93700daecb12fd88b612c6',1,'ripple::jss::JSS(txr_transactions_cnt)'],['../namespaceripple_1_1jss.html#ac1abacd761ec7abfde83e583a70b0ea4',1,'ripple::jss::JSS(txr_transactions_sz)'],['../namespaceripple_1_1jss.html#a7932ad94678f2e615bf4559597c7f747',1,'ripple::jss::JSS(txr_selected_cnt)'],['../namespaceripple_1_1jss.html#a38e7e398a4f5f39c70ad238f9a1e1284',1,'ripple::jss::JSS(txr_suppressed_cnt)'],['../namespaceripple_1_1jss.html#a98440d1c5861994f6ed7fe83d579fc7b',1,'ripple::jss::JSS(txr_not_enabled_cnt)'],['../namespaceripple_1_1jss.html#aef1d8a23e1687341917fb9868494a3ca',1,'ripple::jss::JSS(txr_missing_tx_freq)'],['../namespaceripple_1_1jss.html#aeea2f2283a26d946766e83a715a9d682',1,'ripple::jss::JSS(txs)'],['../namespaceripple_1_1jss.html#a4d947f1743784ee61ebf4090d71fddc5',1,'ripple::jss::JSS(type)'],['../namespaceripple_1_1jss.html#a4fd5d1d92b073012943c2c6321067a6a',1,'ripple::jss::JSS(type_hex)'],['../namespaceripple_1_1jss.html#ac9f70ad0f04a1e5c013454fe8498136a',1,'ripple::jss::JSS(unl)'],['../namespaceripple_1_1jss.html#a18b6349dc9baba53df47742046f87b84',1,'ripple::jss::JSS(unlimited)'],['../namespaceripple_1_1jss.html#a49b9cf76b96ecb10fd56ca60a5ca4a90',1,'ripple::jss::JSS(uptime)'],['../namespaceripple_1_1jss.html#a931f36a44b3befdf1144cb23079a5778',1,'ripple::jss::JSS(uri)'],['../namespaceripple_1_1jss.html#a19aa5a2ded46fc0bbdef06f94519307b',1,'ripple::jss::JSS(url)'],['../namespaceripple_1_1jss.html#a7efaf53739fb251d5f8c0a3e39749128',1,'ripple::jss::JSS(url_password)'],['../namespaceripple_1_1jss.html#ad99fed5324eb171dda2b0485f9e196ed',1,'ripple::jss::JSS(url_username)'],['../namespaceripple_1_1jss.html#afcc64ff37edbdcae6d325f795c329fa6',1,'ripple::jss::JSS(urlgravatar)'],['../namespaceripple_1_1jss.html#a21df51066f1bd04f2f46de6c835a3745',1,'ripple::jss::JSS(username)'],['../namespaceripple_1_1jss.html#a19f7bcc12694cce39b5cb2f691e19d93',1,'ripple::jss::JSS(validated)'],['../namespaceripple_1_1jss.html#af7dfda6a45ee8bf86a52a5c6ef1103ae',1,'ripple::jss::JSS(validator_list_expires)'],['../namespaceripple_1_1jss.html#a82c322f00316e6c5ec9efca237643c0c',1,'ripple::jss::JSS(validator_list)'],['../namespaceripple_1_1jss.html#aa096955b80eb72f6ba4270ceef77de6e',1,'ripple::jss::JSS(validators)'],['../namespaceripple_1_1jss.html#a77fc5cca493d30ace52fcffcc257cb66',1,'ripple::jss::JSS(validated_hash)'],['../namespaceripple_1_1jss.html#a123b084cc0a9278567659d15eb1b02f4',1,'ripple::jss::JSS(validated_ledger)'],['../namespaceripple_1_1jss.html#ac26a6a1588aa98da4764463cd1ccf8cb',1,'ripple::jss::JSS(validated_ledger_index)'],['../namespaceripple_1_1jss.html#a92af4ce13e5469199a2792e123c5093a',1,'ripple::jss::JSS(validated_ledgers)'],['../namespaceripple_1_1jss.html#a65a44ddaf50cbb605df0ecb6100c6dad',1,'ripple::jss::JSS(validation_key)'],['../namespaceripple_1_1jss.html#a4097f5bd132eba42ac020894dcdebbbc',1,'ripple::jss::JSS(validation_private_key)'],['../namespaceripple_1_1jss.html#afc2e2ddf081505d3f3953c453134c4a3',1,'ripple::jss::JSS(validation_public_key)'],['../namespaceripple_1_1jss.html#a39ee6d6525f21b026d3acde9640f4d01',1,'ripple::jss::JSS(validation_quorum)'],['../namespaceripple_1_1jss.html#ac1c4476298f3af82f4862a751b6a5c51',1,'ripple::jss::JSS(validation_seed)'],['../namespaceripple_1_1jss.html#a4fad99c083f9a0d3c893dc182b6c9b7e',1,'ripple::jss::JSS(validations)'],['../namespaceripple_1_1jss.html#a1026d74d260210a1a72b293a83c62540',1,'ripple::jss::JSS(validator_sites)'],['../namespaceripple_1_1jss.html#ab779bcbb56f78f33545b48dafc909b46',1,'ripple::jss::JSS(value)'],['../namespaceripple_1_1jss.html#a691ab416cda11bd50eb11d79d3d6421e',1,'ripple::jss::JSS(version)'],['../namespaceripple_1_1jss.html#a4d492f7cf0e166e2e77c94a868a5722f',1,'ripple::jss::JSS(vetoed)'],['../namespaceripple_1_1jss.html#a40ea182ffa1551e97f1550a227ab568a',1,'ripple::jss::JSS(volume_a)'],['../namespaceripple_1_1jss.html#a5f19a805966938981c73fb822b7322c9',1,'ripple::jss::JSS(volume_b)'],['../namespaceripple_1_1jss.html#aa9754b78ba9927ed4dfc2e84dbdde57a',1,'ripple::jss::JSS(vote)'],['../namespaceripple_1_1jss.html#a12c2d74d1d3bd19009bb51812ae9660b',1,'ripple::jss::JSS(warning)'],['../namespaceripple_1_1jss.html#a5256b8c6a73d3df50ed6cbe9e30017d2',1,'ripple::jss::JSS(warnings)'],['../namespaceripple_1_1jss.html#a9f11131401702545899bbb3c2d60c93f',1,'ripple::jss::JSS(workers)'],['../namespaceripple_1_1jss.html#aee00e3f88c564bb0f87afeac6f1a3dff',1,'ripple::jss::JSS(write_load)'],['../namespaceripple_1_1jss.html#a970df0e4e5b3c0f64876bdde0292eef0',1,'ripple::jss::JSS(NegativeUNL)']]], ['jt_18494',['jt',['../classripple_1_1test_1_1jtx_1_1Env.html#ac97544537f03e62be698194aabe47a32',1,'ripple::test::jtx::Env']]], ['jtx_18495',['JTx',['../structripple_1_1test_1_1jtx_1_1JTx.html#af9d2e3866ea8699b94cf403a8de3b815',1,'ripple::test::jtx::JTx::JTx()=default'],['../structripple_1_1test_1_1jtx_1_1JTx.html#a25e5c7765103f99cf432b76254502540',1,'ripple::test::jtx::JTx::JTx(JTx const &)=default'],['../structripple_1_1test_1_1jtx_1_1JTx.html#a294270d8042a7825213889bb6ad06ed1',1,'ripple::test::jtx::JTx::JTx(JTx &&)=default'],['../structripple_1_1test_1_1jtx_1_1JTx.html#a8affd8a952b0fb34f2c468843236ee2a',1,'ripple::test::jtx::JTx::JTx(Json::Value &&jv_)'],['../structripple_1_1test_1_1jtx_1_1JTx.html#af7dfcbbe8101f7da6521e4c303af5daa',1,'ripple::test::jtx::JTx::JTx(Json::Value const &jv_)']]], ['jvparsecurrencyissuer_18496',['jvParseCurrencyIssuer',['../classripple_1_1RPCParser.html#a3dce3f1ef10a023f4c2a24ef4b8dbb75',1,'ripple::RPCParser']]],