From b44f884ab4e5d5ea046093da986b2abc4343ddee Mon Sep 17 00:00:00 2001 From: Thomas Brady Date: Tue, 28 Nov 2023 17:32:16 -0800 Subject: [PATCH] 4023 centralize transaction size computation. Adds getSize to TransactionFrame. --- src/transactions/TransactionFrame.cpp | 11 +++++++++-- src/transactions/TransactionFrame.h | 3 +++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/transactions/TransactionFrame.cpp b/src/transactions/TransactionFrame.cpp index e86aad11b2..f898831b5a 100644 --- a/src/transactions/TransactionFrame.cpp +++ b/src/transactions/TransactionFrame.cpp @@ -236,7 +236,7 @@ TransactionFrame::getNumOperations() const Resource TransactionFrame::getResources(bool useByteLimitInClassic) const { - int64_t txSize = xdr::xdr_size(mEnvelope); + auto txSize = static_cast(this->getSize()); if (isSoroban()) { auto r = sorobanResources(); @@ -751,7 +751,7 @@ TransactionFrame::validateSorobanResources(SorobanNetworkConfig const& config, return false; } } - auto txSize = xdr::xdr_size(mEnvelope); + auto txSize = this->getSize(); if (txSize > config.txMaxSizeBytes()) { pushSimpleDiagnosticError( @@ -1900,4 +1900,11 @@ TransactionFrame::getDiagnosticEvents() const { return mSorobanExtension->mDiagnosticEvents; } + +uint32_t +TransactionFrame::getSize() const +{ + ZoneScoped; + return static_cast(xdr::xdr_size(mEnvelope)); +} } // namespace stellar diff --git a/src/transactions/TransactionFrame.h b/src/transactions/TransactionFrame.h index cb331409eb..0b36d98cc2 100644 --- a/src/transactions/TransactionFrame.h +++ b/src/transactions/TransactionFrame.h @@ -47,6 +47,9 @@ using TransactionFramePtr = std::shared_ptr; class TransactionFrame : public TransactionFrameBase { + private: + uint32_t getSize() const; + protected: TransactionEnvelope mEnvelope; TransactionResult mResult;