dncurrency/nano/node/gap_tracker.cpp
Thiago Silva f264231a76
Add the gap_tracker class (#4180)
* Add the gap_tracker class

This is an observer class that tracks processed blocks in the gap_cache
structure if they are source or previous gap blocks.

* Move the gap block tracking to the gap_tracker class
2023-03-09 23:28:32 -03:00

29 lines
681 B
C++

#include <nano/lib/blocks.hpp>
#include <nano/node/blockprocessor.hpp>
#include <nano/node/gap_cache.hpp>
#include <nano/node/gap_tracker.hpp>
nano::gap_tracker::gap_tracker (nano::gap_cache & gap_cache) :
gap_cache{ gap_cache }
{
}
void nano::gap_tracker::connect (nano::block_processor & block_processor)
{
block_processor.processed.add ([this] (auto const & result, auto const & block) {
switch (result.code)
{
case nano::process_result::gap_previous:
case nano::process_result::gap_source:
observe (block);
break;
default:
break;
}
});
}
void nano::gap_tracker::observe (std::shared_ptr<nano::block> block)
{
gap_cache.add (block->hash ());
}