#include #include std::optional accountFromStringStrict(std::string const& account) { boost::optional result; auto const publicKey = ripple::parseBase58( ripple::TokenType::AccountPublic, account); if (publicKey) result = ripple::calcAccountID(*publicKey); else result = ripple::parseBase58(account); if (result) return result.value(); else return {}; } std::pair< std::shared_ptr, std::shared_ptr> deserializeTxPlusMeta(Backend::TransactionAndMetadata const& blobs) { std::pair< std::shared_ptr, std::shared_ptr> result; { ripple::SerialIter s{ blobs.transaction.data(), blobs.transaction.size()}; result.first = std::make_shared(s); } { ripple::SerialIter s{blobs.metadata.data(), blobs.metadata.size()}; result.second = std::make_shared(s, ripple::sfMetadata); } return result; } boost::json::object getJson(ripple::STBase const& obj) { auto start = std::chrono::system_clock::now(); boost::json::value value = boost::json::parse( obj.getJson(ripple::JsonOptions::none).toStyledString()); auto end = std::chrono::system_clock::now(); value.as_object()["deserialization_time_microseconds"] = std::chrono::duration_cast(end - start) .count(); return value.as_object(); } boost::json::object getJson(ripple::SLE const& sle) { auto start = std::chrono::system_clock::now(); boost::json::value value = boost::json::parse( sle.getJson(ripple::JsonOptions::none).toStyledString()); auto end = std::chrono::system_clock::now(); value.as_object()["deserialization_time_microseconds"] = std::chrono::duration_cast(end - start) .count(); return value.as_object(); }