mirror of
https://github.com/XRPLF/clio.git
synced 2025-11-20 03:35:55 +00:00
tx handler
This commit is contained in:
68
handlers/RPCHelpers.cpp
Normal file
68
handlers/RPCHelpers.cpp
Normal file
@@ -0,0 +1,68 @@
|
||||
#include <handlers/RPCHelpers.h>
|
||||
|
||||
std::optional<ripple::AccountID>
|
||||
accountFromStringStrict(std::string const& account)
|
||||
{
|
||||
boost::optional<ripple::AccountID> result;
|
||||
|
||||
auto const publicKey = ripple::parseBase58<ripple::PublicKey>(
|
||||
ripple::TokenType::AccountPublic, account);
|
||||
|
||||
if (publicKey)
|
||||
result = ripple::calcAccountID(*publicKey);
|
||||
else
|
||||
result = ripple::parseBase58<ripple::AccountID>(account);
|
||||
|
||||
if (result)
|
||||
return result.value();
|
||||
else
|
||||
return {};
|
||||
}
|
||||
std::pair<
|
||||
std::shared_ptr<ripple::STTx const>,
|
||||
std::shared_ptr<ripple::STObject const>>
|
||||
deserializeTxPlusMeta(
|
||||
std::pair<std::vector<unsigned char>, std::vector<unsigned char>> const&
|
||||
blobs)
|
||||
{
|
||||
std::pair<
|
||||
std::shared_ptr<ripple::STTx const>,
|
||||
std::shared_ptr<ripple::STObject const>>
|
||||
result;
|
||||
{
|
||||
ripple::SerialIter s{blobs.first.data(), blobs.first.size()};
|
||||
result.first = std::make_shared<ripple::STTx const>(s);
|
||||
}
|
||||
{
|
||||
ripple::SerialIter s{blobs.second.data(), blobs.second.size()};
|
||||
result.second =
|
||||
std::make_shared<ripple::STObject const>(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<std::chrono::microseconds>(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<std::chrono::microseconds>(end - start)
|
||||
.count();
|
||||
return value.as_object();
|
||||
}
|
||||
Reference in New Issue
Block a user