Add MetaView hold parameter

This commit is contained in:
Vinnie Falco
2015-06-30 14:05:39 -07:00
parent 08bfd302fe
commit bf775036bc
2 changed files with 20 additions and 5 deletions

View File

@@ -30,6 +30,7 @@
#include <ripple/protocol/STTx.h>
#include <beast/utility/noexcept.h>
#include <boost/optional.hpp>
#include <functional>
#include <list>
#include <tuple>
#include <utility>
@@ -97,6 +98,7 @@ private:
item_list items_;
std::uint32_t destroyedCoins_ = 0;
boost::optional<STAmount> deliverAmount_;
std::shared_ptr<void const> hold_;
public:
MetaView() = delete;
@@ -137,6 +139,10 @@ public:
The parentCloseTime is set to the
closeTime of parent.
If `hold` is not nullptr, retains
ownership of a copy of `hold` until
the MetaView is destroyed.
It is only safe to use the BasicView modification
functions. Using View modification functions will
break invariants.
@@ -145,7 +151,9 @@ public:
ledger that this open ledger follows.
*/
MetaView (open_ledger_t,
BasicView const& parent);
BasicView const& parent,
std::shared_ptr<
void const> hold = nullptr);
/** Create a nested MetaView.
@@ -154,7 +162,8 @@ public:
The ViewInfo is copied from the base.
*/
MetaView (BasicView const& base,
ViewFlags flags);
ViewFlags flags, std::shared_ptr<
void const> hold = nullptr);
//--------------------------------------------------------------------------
//

View File

@@ -55,14 +55,18 @@ MetaView::MetaView (shallow_copy_t,
, items_ (other.items_)
, destroyedCoins_(
other.destroyedCoins_)
, hold_(other.hold_)
{
}
MetaView::MetaView (open_ledger_t,
BasicView const& parent)
BasicView const& parent,
std::shared_ptr<
void const> hold)
: base_ (parent)
, flags_ (tapNONE)
, info_ (parent.info())
, hold_(std::move(hold))
{
assert(! parent.open());
info_.open = true;
@@ -72,10 +76,12 @@ MetaView::MetaView (open_ledger_t,
}
MetaView::MetaView (BasicView const& base,
ViewFlags flags)
ViewFlags flags, std::shared_ptr<
void const> hold)
: base_ (base)
, flags_ (flags)
, info_ (base.info())
, hold_(std::move(hold))
{
}