20 #ifndef RIPPLE_APP_CONSENSUS_RCLCENSORSHIPDETECTOR_H_INCLUDED
21 #define RIPPLE_APP_CONSENSUS_RCLCENSORSHIPDETECTOR_H_INCLUDED
23 #include <ripple/basics/algorithm.h>
24 #include <ripple/shamap/SHAMap.h>
31 template <
class TxID,
class Sequence>
49 if (lhs.txid != rhs.txid)
50 return lhs.txid < rhs.txid;
51 return lhs.seq < rhs.seq;
57 return lhs.txid < rhs;
63 return lhs < rhs.txid;
92 [](
auto& x,
auto const& y) { x.seq = y.seq; },
93 [](
auto const& x,
auto const& y) { return x.txid < y.txid; });
110 template <
class Predicate>
126 [&pred](
auto const& x) { return pred(x.txid, x.seq); },
RCLCensorshipDetector()=default
void reset()
Removes all elements from the tracker.
void generalized_set_intersection(InputIter1 first1, InputIter1 last1, InputIter2 first2, InputIter2 last2, Action action, Comp comp)
FwdIter1 remove_if_intersect_or_match(FwdIter1 first1, FwdIter1 last1, InputIter2 first2, InputIter2 last2, Pred pred, Comp comp)
@ accepted
Manifest is valid.
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
void propose(TxIDSeqVec proposed)
Add transactions being proposed for the current consensus round.
TxIDSeq(TxID const &txid_, Sequence const &seq_)
void check(std::vector< TxID > accepted, Predicate &&pred)
Determine which transactions made it and perform censorship detection.
friend bool operator<(TxIDSeq const &lhs, TxIDSeq const &rhs)