Move nano::block_sideband and nano::block_type in to their own files.
This commit is contained in:
		
					parent
					
						
							
								42544be68e
							
						
					
				
			
			
				commit
				
					
						d4cbf1eaf3
					
				
			
		
					 8 changed files with 113 additions and 78 deletions
				
			
		| 
						 | 
				
			
			@ -21,6 +21,10 @@ add_library(
 | 
			
		|||
  ${platform_sources}
 | 
			
		||||
  asio.hpp
 | 
			
		||||
  asio.cpp
 | 
			
		||||
  block_sideband.hpp
 | 
			
		||||
  block_sideband.cpp
 | 
			
		||||
  block_type.hpp
 | 
			
		||||
  block_type.cpp
 | 
			
		||||
  blockbuilders.hpp
 | 
			
		||||
  blockbuilders.cpp
 | 
			
		||||
  blocks.hpp
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										0
									
								
								nano/lib/block_sideband.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								nano/lib/block_sideband.cpp
									
										
									
									
									
										Normal file
									
								
							
							
								
								
									
										68
									
								
								nano/lib/block_sideband.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								nano/lib/block_sideband.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,68 @@
 | 
			
		|||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include <nano/lib/block_type.hpp>
 | 
			
		||||
#include <nano/lib/epoch.hpp>
 | 
			
		||||
#include <nano/lib/numbers.hpp>
 | 
			
		||||
#include <nano/lib/stream.hpp>
 | 
			
		||||
#include <nano/lib/timer.hpp>
 | 
			
		||||
 | 
			
		||||
#include <cstdint>
 | 
			
		||||
 | 
			
		||||
namespace nano
 | 
			
		||||
{
 | 
			
		||||
class object_stream;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
namespace nano
 | 
			
		||||
{
 | 
			
		||||
class block_details
 | 
			
		||||
{
 | 
			
		||||
	static_assert (std::is_same<std::underlying_type<nano::epoch>::type, uint8_t> (), "Epoch enum is not the proper type");
 | 
			
		||||
	static_assert (static_cast<uint8_t> (nano::epoch::max) < (1 << 5), "Epoch max is too large for the sideband");
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
	block_details () = default;
 | 
			
		||||
	block_details (nano::epoch const epoch_a, bool const is_send_a, bool const is_receive_a, bool const is_epoch_a);
 | 
			
		||||
	static constexpr size_t size ()
 | 
			
		||||
	{
 | 
			
		||||
		return 1;
 | 
			
		||||
	}
 | 
			
		||||
	bool operator== (block_details const & other_a) const;
 | 
			
		||||
	void serialize (nano::stream &) const;
 | 
			
		||||
	bool deserialize (nano::stream &);
 | 
			
		||||
	nano::epoch epoch{ nano::epoch::epoch_0 };
 | 
			
		||||
	bool is_send{ false };
 | 
			
		||||
	bool is_receive{ false };
 | 
			
		||||
	bool is_epoch{ false };
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
	uint8_t packed () const;
 | 
			
		||||
	void unpack (uint8_t);
 | 
			
		||||
 | 
			
		||||
public: // Logging
 | 
			
		||||
	void operator() (nano::object_stream &) const;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
std::string state_subtype (nano::block_details const);
 | 
			
		||||
 | 
			
		||||
class block_sideband final
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
	block_sideband () = default;
 | 
			
		||||
	block_sideband (nano::account const &, nano::block_hash const &, nano::amount const &, uint64_t const, nano::seconds_t const local_timestamp, nano::block_details const &, nano::epoch const source_epoch_a);
 | 
			
		||||
	block_sideband (nano::account const &, nano::block_hash const &, nano::amount const &, uint64_t const, nano::seconds_t const local_timestamp, nano::epoch const epoch_a, bool const is_send, bool const is_receive, bool const is_epoch, nano::epoch const source_epoch_a);
 | 
			
		||||
	void serialize (nano::stream &, nano::block_type) const;
 | 
			
		||||
	bool deserialize (nano::stream &, nano::block_type);
 | 
			
		||||
	static size_t size (nano::block_type);
 | 
			
		||||
	nano::block_hash successor{ 0 };
 | 
			
		||||
	nano::account account{};
 | 
			
		||||
	nano::amount balance{ 0 };
 | 
			
		||||
	uint64_t height{ 0 };
 | 
			
		||||
	uint64_t timestamp{ 0 };
 | 
			
		||||
	nano::block_details details;
 | 
			
		||||
	nano::epoch source_epoch{ nano::epoch::epoch_0 };
 | 
			
		||||
 | 
			
		||||
public: // Logging
 | 
			
		||||
	void operator() (nano::object_stream &) const;
 | 
			
		||||
};
 | 
			
		||||
} // namespace nano
 | 
			
		||||
							
								
								
									
										13
									
								
								nano/lib/block_type.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								nano/lib/block_type.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
#include <nano/lib/block_type.hpp>
 | 
			
		||||
 | 
			
		||||
#include <magic_enum.hpp>
 | 
			
		||||
 | 
			
		||||
std::string_view nano::to_string (nano::block_type type)
 | 
			
		||||
{
 | 
			
		||||
	return magic_enum::enum_name (type);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void nano::serialize_block_type (nano::stream & stream, const nano::block_type & type)
 | 
			
		||||
{
 | 
			
		||||
	nano::write (stream, type);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										26
									
								
								nano/lib/block_type.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								nano/lib/block_type.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,26 @@
 | 
			
		|||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include <nano/lib/stream.hpp>
 | 
			
		||||
 | 
			
		||||
#include <cstdint>
 | 
			
		||||
#include <string>
 | 
			
		||||
 | 
			
		||||
namespace nano
 | 
			
		||||
{
 | 
			
		||||
enum class block_type : uint8_t
 | 
			
		||||
{
 | 
			
		||||
	invalid = 0,
 | 
			
		||||
	not_a_block = 1,
 | 
			
		||||
	send = 2,
 | 
			
		||||
	receive = 3,
 | 
			
		||||
	open = 4,
 | 
			
		||||
	change = 5,
 | 
			
		||||
	state = 6
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
std::string_view to_string (block_type);
 | 
			
		||||
/**
 | 
			
		||||
 * Serialize block type as an 8-bit value
 | 
			
		||||
 */
 | 
			
		||||
void serialize_block_type (nano::stream &, nano::block_type const &);
 | 
			
		||||
} // namespace nano
 | 
			
		||||
| 
						 | 
				
			
			@ -1443,11 +1443,6 @@ std::shared_ptr<nano::block> nano::deserialize_block_json (boost::property_tree:
 | 
			
		|||
	return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void nano::serialize_block_type (nano::stream & stream, const nano::block_type & type)
 | 
			
		||||
{
 | 
			
		||||
	nano::write (stream, type);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void nano::serialize_block (nano::stream & stream_a, nano::block const & block_a)
 | 
			
		||||
{
 | 
			
		||||
	nano::serialize_block_type (stream_a, block_a.type ());
 | 
			
		||||
| 
						 | 
				
			
			@ -1986,8 +1981,3 @@ void nano::block_sideband::operator() (nano::object_stream & obs) const
 | 
			
		|||
	obs.write ("source_epoch", source_epoch);
 | 
			
		||||
	obs.write ("details", details);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
std::string_view nano::to_string (nano::block_type type)
 | 
			
		||||
{
 | 
			
		||||
	return magic_enum::enum_name (type);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include <nano/crypto/blake2/blake2.h>
 | 
			
		||||
#include <nano/lib/block_sideband.hpp>
 | 
			
		||||
#include <nano/lib/epoch.hpp>
 | 
			
		||||
#include <nano/lib/errors.hpp>
 | 
			
		||||
#include <nano/lib/numbers.hpp>
 | 
			
		||||
| 
						 | 
				
			
			@ -21,70 +22,6 @@ namespace nano
 | 
			
		|||
class block_visitor;
 | 
			
		||||
class mutable_block_visitor;
 | 
			
		||||
 | 
			
		||||
enum class block_type : uint8_t
 | 
			
		||||
{
 | 
			
		||||
	invalid = 0,
 | 
			
		||||
	not_a_block = 1,
 | 
			
		||||
	send = 2,
 | 
			
		||||
	receive = 3,
 | 
			
		||||
	open = 4,
 | 
			
		||||
	change = 5,
 | 
			
		||||
	state = 6
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
std::string_view to_string (block_type);
 | 
			
		||||
 | 
			
		||||
class block_details
 | 
			
		||||
{
 | 
			
		||||
	static_assert (std::is_same<std::underlying_type<nano::epoch>::type, uint8_t> (), "Epoch enum is not the proper type");
 | 
			
		||||
	static_assert (static_cast<uint8_t> (nano::epoch::max) < (1 << 5), "Epoch max is too large for the sideband");
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
	block_details () = default;
 | 
			
		||||
	block_details (nano::epoch const epoch_a, bool const is_send_a, bool const is_receive_a, bool const is_epoch_a);
 | 
			
		||||
	static constexpr size_t size ()
 | 
			
		||||
	{
 | 
			
		||||
		return 1;
 | 
			
		||||
	}
 | 
			
		||||
	bool operator== (block_details const & other_a) const;
 | 
			
		||||
	void serialize (nano::stream &) const;
 | 
			
		||||
	bool deserialize (nano::stream &);
 | 
			
		||||
	nano::epoch epoch{ nano::epoch::epoch_0 };
 | 
			
		||||
	bool is_send{ false };
 | 
			
		||||
	bool is_receive{ false };
 | 
			
		||||
	bool is_epoch{ false };
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
	uint8_t packed () const;
 | 
			
		||||
	void unpack (uint8_t);
 | 
			
		||||
 | 
			
		||||
public: // Logging
 | 
			
		||||
	void operator() (nano::object_stream &) const;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
std::string state_subtype (nano::block_details const);
 | 
			
		||||
 | 
			
		||||
class block_sideband final
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
	block_sideband () = default;
 | 
			
		||||
	block_sideband (nano::account const &, nano::block_hash const &, nano::amount const &, uint64_t const, nano::seconds_t const local_timestamp, nano::block_details const &, nano::epoch const source_epoch_a);
 | 
			
		||||
	block_sideband (nano::account const &, nano::block_hash const &, nano::amount const &, uint64_t const, nano::seconds_t const local_timestamp, nano::epoch const epoch_a, bool const is_send, bool const is_receive, bool const is_epoch, nano::epoch const source_epoch_a);
 | 
			
		||||
	void serialize (nano::stream &, nano::block_type) const;
 | 
			
		||||
	bool deserialize (nano::stream &, nano::block_type);
 | 
			
		||||
	static size_t size (nano::block_type);
 | 
			
		||||
	nano::block_hash successor{ 0 };
 | 
			
		||||
	nano::account account{};
 | 
			
		||||
	nano::amount balance{ 0 };
 | 
			
		||||
	uint64_t height{ 0 };
 | 
			
		||||
	uint64_t timestamp{ 0 };
 | 
			
		||||
	nano::block_details details;
 | 
			
		||||
	nano::epoch source_epoch{ nano::epoch::epoch_0 };
 | 
			
		||||
 | 
			
		||||
public: // Logging
 | 
			
		||||
	void operator() (nano::object_stream &) const;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class block
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
| 
						 | 
				
			
			@ -446,10 +383,6 @@ using block_uniquer = nano::uniquer<nano::uint256_union, nano::block>;
 | 
			
		|||
std::shared_ptr<nano::block> deserialize_block (nano::stream &);
 | 
			
		||||
std::shared_ptr<nano::block> deserialize_block (nano::stream &, nano::block_type, nano::block_uniquer * = nullptr);
 | 
			
		||||
std::shared_ptr<nano::block> deserialize_block_json (boost::property_tree::ptree const &, nano::block_uniquer * = nullptr);
 | 
			
		||||
/**
 | 
			
		||||
 * Serialize block type as an 8-bit value
 | 
			
		||||
 */
 | 
			
		||||
void serialize_block_type (nano::stream &, nano::block_type const &);
 | 
			
		||||
/**
 | 
			
		||||
 * Serialize a block prefixed with an 8-bit typecode
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,6 @@
 | 
			
		|||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include <nano/lib/block_sideband.hpp>
 | 
			
		||||
#include <nano/lib/blocks.hpp>
 | 
			
		||||
#include <nano/lib/numbers.hpp>
 | 
			
		||||
#include <nano/store/component.hpp>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue