#ifndef __VALIDATION_COLLECTION__ #define __VALIDATION_COLLECTION__ #include #include #include #include "uint256.h" #include "types.h" #include "SerializedValidation.h" typedef boost::unordered_map ValidationSet; class ValidationPair { public: SerializedValidation::pointer oldest, newest; ValidationPair(const SerializedValidation::pointer& v) : newest(v) { ; } }; class ValidationCollection { protected: boost::mutex mValidationLock; boost::unordered_map mValidations; boost::unordered_map mCurrentValidations; std::vector mStaleValidations; std::list mDeadLedgers; bool mWriting; void doWrite(); void condWrite(); public: ValidationCollection() : mWriting(false) { ; } bool addValidation(const SerializedValidation::pointer&); ValidationSet getValidations(const uint256& ledger); void getValidationCount(const uint256& ledger, bool currentOnly, int& trusted, int& untrusted); int getTrustedValidationCount(const uint256& ledger); int getCurrentValidationCount(uint32 afterTime); boost::unordered_map getCurrentValidations(); void addDeadLedger(const uint256&); bool isDeadLedger(const uint256&); std::list getDeadLedgers() { return mDeadLedgers; } void flush(); }; #endif