From abf41dd4def1c9735ef44d5a485ad1fb50a348b4 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Wed, 15 Aug 2012 04:01:22 -0700 Subject: [PATCH] Fix a large number of cases where we copy construct a shared_ptr just to destroy it. --- src/LedgerAcquire.cpp | 8 ++++---- src/LedgerAcquire.h | 12 ++++++------ src/LedgerConsensus.cpp | 2 +- src/LedgerConsensus.h | 6 +++--- src/LedgerEntrySet.cpp | 8 ++++---- src/LedgerEntrySet.h | 10 +++++----- src/Peer.cpp | 4 ++-- src/Peer.h | 31 +++++++++++++------------------ src/ValidationCollection.cpp | 2 +- src/ValidationCollection.h | 4 ++-- 10 files changed, 41 insertions(+), 46 deletions(-) diff --git a/src/LedgerAcquire.cpp b/src/LedgerAcquire.cpp index 1a7e6e8edf..d2189e693f 100644 --- a/src/LedgerAcquire.cpp +++ b/src/LedgerAcquire.cpp @@ -20,7 +20,7 @@ PeerSet::PeerSet(const uint256& hash, int interval) : mHash(hash), mTimerInterva assert((mTimerInterval > 10) && (mTimerInterval < 30000)); } -void PeerSet::peerHas(Peer::pointer ptr) +void PeerSet::peerHas(const Peer::pointer& ptr) { boost::recursive_mutex::scoped_lock sl(mLock); std::vector< boost::weak_ptr >::iterator it = mPeers.begin(); @@ -40,7 +40,7 @@ void PeerSet::peerHas(Peer::pointer ptr) newPeer(ptr); } -void PeerSet::badPeer(Peer::pointer ptr) +void PeerSet::badPeer(const Peer::pointer& ptr) { boost::recursive_mutex::scoped_lock sl(mLock); std::vector< boost::weak_ptr >::iterator it = mPeers.begin(); @@ -142,7 +142,7 @@ void LedgerAcquire::addOnComplete(boost::function mLock.unlock(); } -void LedgerAcquire::trigger(Peer::pointer peer, bool timer) +void LedgerAcquire::trigger(const Peer::pointer& peer, bool timer) { if (mAborted || mComplete || mFailed) return; @@ -435,7 +435,7 @@ void LedgerAcquireMaster::dropLedger(const uint256& hash) mLedgers.erase(hash); } -bool LedgerAcquireMaster::gotLedgerData(newcoin::TMLedgerData& packet, Peer::pointer peer) +bool LedgerAcquireMaster::gotLedgerData(newcoin::TMLedgerData& packet, const Peer::pointer& peer) { #ifdef LA_DEBUG Log(lsTRACE) << "got data for acquiring ledger "; diff --git a/src/LedgerAcquire.h b/src/LedgerAcquire.h index 1497ca41ad..3ea334bd10 100644 --- a/src/LedgerAcquire.h +++ b/src/LedgerAcquire.h @@ -41,12 +41,12 @@ public: void progress() { mProgress = true; } - void peerHas(Peer::pointer); - void badPeer(Peer::pointer); + void peerHas(const Peer::pointer&); + void badPeer(const Peer::pointer&); void resetTimer(); protected: - virtual void newPeer(Peer::pointer) = 0; + virtual void newPeer(const Peer::pointer&) = 0; virtual void onTimer(void) = 0; virtual boost::weak_ptr pmDowncast() = 0; @@ -72,7 +72,7 @@ protected: void done(); void onTimer(); - void newPeer(Peer::pointer peer) { trigger(peer, false); } + void newPeer(const Peer::pointer& peer) { trigger(peer, false); } boost::weak_ptr pmDowncast(); @@ -92,7 +92,7 @@ public: bool takeTxRootNode(const std::vector& data); bool takeAsNode(const std::list& IDs, const std::list >& data); bool takeAsRootNode(const std::vector& data); - void trigger(Peer::pointer, bool timer); + void trigger(const Peer::pointer&, bool timer); }; class LedgerAcquireMaster @@ -108,7 +108,7 @@ public: LedgerAcquire::pointer find(const uint256& hash); bool hasLedger(const uint256& ledgerHash); void dropLedger(const uint256& ledgerHash); - bool gotLedgerData(newcoin::TMLedgerData& packet, Peer::pointer); + bool gotLedgerData(newcoin::TMLedgerData& packet, const Peer::pointer&); }; #endif diff --git a/src/LedgerConsensus.cpp b/src/LedgerConsensus.cpp index 5f34c7c344..2b45f3b8c4 100644 --- a/src/LedgerConsensus.cpp +++ b/src/LedgerConsensus.cpp @@ -41,7 +41,7 @@ boost::weak_ptr TransactionAcquire::pmDowncast() return boost::shared_polymorphic_downcast(shared_from_this()); } -void TransactionAcquire::trigger(Peer::pointer peer, bool timer) +void TransactionAcquire::trigger(const Peer::pointer& peer, bool timer) { if (mComplete || mFailed) return; diff --git a/src/LedgerConsensus.h b/src/LedgerConsensus.h index 7e104a43b7..cadfb23acd 100644 --- a/src/LedgerConsensus.h +++ b/src/LedgerConsensus.h @@ -27,11 +27,11 @@ protected: SHAMap::pointer mMap; bool mHaveRoot; - void onTimer() { trigger(Peer::pointer(), true); } - void newPeer(Peer::pointer peer) { trigger(peer, false); } + void onTimer() { trigger(Peer::pointer(), true); } + void newPeer(const Peer::pointer& peer) { trigger(peer, false); } void done(); - void trigger(Peer::pointer, bool timer); + void trigger(const Peer::pointer&, bool timer); boost::weak_ptr pmDowncast(); public: diff --git a/src/LedgerEntrySet.cpp b/src/LedgerEntrySet.cpp index 9dc3bb157c..390cec2301 100644 --- a/src/LedgerEntrySet.cpp +++ b/src/LedgerEntrySet.cpp @@ -61,7 +61,7 @@ LedgerEntryAction LedgerEntrySet::hasEntry(const uint256& index) const return it->second.mAction; } -void LedgerEntrySet::entryCache(SLE::pointer& sle) +void LedgerEntrySet::entryCache(const SLE::pointer& sle) { boost::unordered_map::iterator it = mEntries.find(sle->getIndex()); if (it == mEntries.end()) @@ -82,7 +82,7 @@ void LedgerEntrySet::entryCache(SLE::pointer& sle) } } -void LedgerEntrySet::entryCreate(SLE::pointer& sle) +void LedgerEntrySet::entryCreate(const SLE::pointer& sle) { boost::unordered_map::iterator it = mEntries.find(sle->getIndex()); if (it == mEntries.end()) @@ -112,7 +112,7 @@ void LedgerEntrySet::entryCreate(SLE::pointer& sle) } } -void LedgerEntrySet::entryModify(SLE::pointer& sle) +void LedgerEntrySet::entryModify(const SLE::pointer& sle) { boost::unordered_map::iterator it = mEntries.find(sle->getIndex()); if (it == mEntries.end()) @@ -147,7 +147,7 @@ void LedgerEntrySet::entryModify(SLE::pointer& sle) } } -void LedgerEntrySet::entryDelete(SLE::pointer& sle, bool unfunded) +void LedgerEntrySet::entryDelete(const SLE::pointer& sle, bool unfunded) { boost::unordered_map::iterator it = mEntries.find(sle->getIndex()); if (it == mEntries.end()) diff --git a/src/LedgerEntrySet.h b/src/LedgerEntrySet.h index 02c09c559c..0980d094b3 100644 --- a/src/LedgerEntrySet.h +++ b/src/LedgerEntrySet.h @@ -23,7 +23,7 @@ public: LedgerEntryAction mAction; int mSeq; - LedgerEntrySetEntry(SLE::pointer e, LedgerEntryAction a, int s) : mEntry(e), mAction(a), mSeq(s) { ; } + LedgerEntrySetEntry(const SLE::pointer& e, LedgerEntryAction a, int s) : mEntry(e), mAction(a), mSeq(s) { ; } }; @@ -53,10 +53,10 @@ public: // basic entry functions SLE::pointer getEntry(const uint256& index, LedgerEntryAction&); LedgerEntryAction hasEntry(const uint256& index) const; - void entryCache(SLE::pointer&); // Add this entry to the cache - void entryCreate(SLE::pointer&); // This entry will be created - void entryDelete(SLE::pointer&, bool unfunded); - void entryModify(SLE::pointer&); // This entry will be modified + void entryCache(const SLE::pointer&); // Add this entry to the cache + void entryCreate(const SLE::pointer&); // This entry will be created + void entryDelete(const SLE::pointer&, bool unfunded); + void entryModify(const SLE::pointer&); // This entry will be modified Json::Value getJson(int) const; void addRawMeta(Serializer&); diff --git a/src/Peer.cpp b/src/Peer.cpp index 28b79d5024..d589cb9496 100644 --- a/src/Peer.cpp +++ b/src/Peer.cpp @@ -260,7 +260,7 @@ void Peer::connected(const boost::system::error_code& error) } } -void Peer::sendPacketForce(PackedMessage::pointer packet) +void Peer::sendPacketForce(const PackedMessage::pointer& packet) { if (!mDetaching) { @@ -273,7 +273,7 @@ void Peer::sendPacketForce(PackedMessage::pointer packet) } } -void Peer::sendPacket(PackedMessage::pointer packet) +void Peer::sendPacket(const PackedMessage::pointer& packet) { if (packet) { diff --git a/src/Peer.h b/src/Peer.h index 13cf6b79bc..01c5863714 100644 --- a/src/Peer.h +++ b/src/Peer.h @@ -30,7 +30,7 @@ public: static const int psbNoLedgers = 4, psbNoTransactions = 5, psbDownLevel = 6; void handleConnect(const boost::system::error_code& error, boost::asio::ip::tcp::resolver::iterator it); - static void sHandleConnect(Peer::pointer ptr, const boost::system::error_code& error, + static void sHandleConnect(const Peer::pointer& ptr, const boost::system::error_code& error, boost::asio::ip::tcp::resolver::iterator it) { ptr->handleConnect(error, it); } @@ -52,11 +52,11 @@ private: boost::asio::deadline_timer mVerifyTimer; void handleStart(const boost::system::error_code& ecResult); - static void sHandleStart(Peer::pointer ptr, const boost::system::error_code& ecResult) + static void sHandleStart(const Peer::pointer& ptr, const boost::system::error_code& ecResult) { ptr->handleStart(ecResult); } void handleVerifyTimer(const boost::system::error_code& ecResult); - static void sHandleVerifyTimer(Peer::pointer ptr, const boost::system::error_code& ecResult) + static void sHandleVerifyTimer(const Peer::pointer& ptr, const boost::system::error_code& ecResult) { ptr->handleVerifyTimer(ecResult); } protected: @@ -70,26 +70,26 @@ protected: Peer(boost::asio::io_service& io_service, boost::asio::ssl::context& ctx); void handleShutdown(const boost::system::error_code& error) { ; } - static void sHandleShutdown(Peer::pointer ptr, const boost::system::error_code& error) + static void sHandleShutdown(const Peer::pointer& ptr, const boost::system::error_code& error) { ptr->handleShutdown(error); } void handle_write(const boost::system::error_code& error, size_t bytes_transferred); - static void sHandle_write(Peer::pointer ptr, const boost::system::error_code& error, size_t bytes_transferred) + static void sHandle_write(const Peer::pointer& ptr, const boost::system::error_code& error, size_t bytes_transferred) { ptr->handle_write(error, bytes_transferred); } void handle_read_header(const boost::system::error_code& error); - static void sHandle_read_header(Peer::pointer ptr, const boost::system::error_code& error) + static void sHandle_read_header(const Peer::pointer& ptr, const boost::system::error_code& error) { ptr->handle_read_header(error); } void handle_read_body(const boost::system::error_code& error); - static void sHandle_read_body(Peer::pointer ptr, const boost::system::error_code& error) + static void sHandle_read_body(const Peer::pointer& ptr, const boost::system::error_code& error) { ptr->handle_read_body(error); } void processReadBuffer(); void start_read_header(); void start_read_body(unsigned msg_len); - void sendPacketForce(PackedMessage::pointer packet); + void sendPacketForce(const PackedMessage::pointer& packet); void sendHello(); @@ -139,12 +139,12 @@ public: void connect(const std::string strIp, int iPort); void connected(const boost::system::error_code& error); void detach(const char *); - bool samePeer(Peer::pointer p) { return samePeer(*p); } - bool samePeer(const Peer& p) { return this == &p; } + bool samePeer(const Peer::pointer& p) { return samePeer(*p); } + bool samePeer(const Peer& p) { return this == &p; } - void sendPacket(PackedMessage::pointer packet); - void sendLedgerProposal(Ledger::pointer ledger); - void sendFullLedger(Ledger::pointer ledger); + void sendPacket(const PackedMessage::pointer& packet); + void sendLedgerProposal(const Ledger::pointer& ledger); + void sendFullLedger(const Ledger::pointer& ledger); void sendGetFullLedger(uint256& hash); void sendGetPeers(); @@ -153,11 +153,6 @@ public: Json::Value getJson(); bool isConnected() const { return mHelloed && !mDetaching; } - //static PackedMessage::pointer createFullLedger(Ledger::pointer ledger); - static PackedMessage::pointer createLedgerProposal(Ledger::pointer ledger); - static PackedMessage::pointer createValidation(Ledger::pointer ledger); - static PackedMessage::pointer createGetFullLedger(uint256& hash); - uint256 getClosedLedgerHash() const { return mClosedLedgerHash; } bool hasLedger(const uint256& hash) const; NewcoinAddress getNodePublic() const { return mNodePublic; } diff --git a/src/ValidationCollection.cpp b/src/ValidationCollection.cpp index 1502e4b52d..1bb971c576 100644 --- a/src/ValidationCollection.cpp +++ b/src/ValidationCollection.cpp @@ -7,7 +7,7 @@ // #define VC_DEBUG -bool ValidationCollection::addValidation(SerializedValidation::pointer& val) +bool ValidationCollection::addValidation(const SerializedValidation::pointer& val) { NewcoinAddress signer = val->getSignerPublic(); bool isCurrent = false; diff --git a/src/ValidationCollection.h b/src/ValidationCollection.h index 1ed522dc54..bdd224a040 100644 --- a/src/ValidationCollection.h +++ b/src/ValidationCollection.h @@ -17,7 +17,7 @@ class ValidationPair public: SerializedValidation::pointer oldest, newest; - ValidationPair(SerializedValidation::pointer v) : newest(v) { ; } + ValidationPair(const SerializedValidation::pointer& v) : newest(v) { ; } }; class ValidationCollection @@ -38,7 +38,7 @@ protected: public: ValidationCollection() : mWriting(false) { ; } - bool addValidation(SerializedValidation::pointer&); + bool addValidation(const SerializedValidation::pointer&); ValidationSet getValidations(const uint256& ledger); void getValidationCount(const uint256& ledger, bool currentOnly, int& trusted, int& untrusted);