//------------------------------------------------------------------------------ /* Copyright (c) 2011-2013, OpenCoin, Inc. */ //============================================================================== TaggedCache AcceptedLedger::s_cache ("AcceptedLedger", 4, 60); AcceptedLedger::AcceptedLedger (Ledger::ref ledger) : mLedger (ledger) { SHAMap& txSet = *ledger->peekTransactionMap (); for (SHAMapItem::pointer item = txSet.peekFirstItem (); !!item; item = txSet.peekNextItem (item->getTag ())) { SerializerIterator sit (item->peekSerializer ()); insert (boost::make_shared (ledger->getLedgerSeq (), boost::ref (sit))); } } AcceptedLedger::pointer AcceptedLedger::makeAcceptedLedger (Ledger::ref ledger) { AcceptedLedger::pointer ret = s_cache.fetch (ledger->getHash ()); if (ret) return ret; ret = AcceptedLedger::pointer (new AcceptedLedger (ledger)); s_cache.canonicalize (ledger->getHash (), ret); return ret; } void AcceptedLedger::insert (AcceptedLedgerTx::ref at) { assert (mMap.find (at->getIndex ()) == mMap.end ()); mMap.insert (std::make_pair (at->getIndex (), at)); } AcceptedLedgerTx::pointer AcceptedLedger::getTxn (int i) const { map_t::const_iterator it = mMap.find (i); if (it == mMap.end ()) return AcceptedLedgerTx::pointer (); return it->second; }