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}
|
${platform_sources}
|
||||||
asio.hpp
|
asio.hpp
|
||||||
asio.cpp
|
asio.cpp
|
||||||
|
block_sideband.hpp
|
||||||
|
block_sideband.cpp
|
||||||
|
block_type.hpp
|
||||||
|
block_type.cpp
|
||||||
blockbuilders.hpp
|
blockbuilders.hpp
|
||||||
blockbuilders.cpp
|
blockbuilders.cpp
|
||||||
blocks.hpp
|
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;
|
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)
|
void nano::serialize_block (nano::stream & stream_a, nano::block const & block_a)
|
||||||
{
|
{
|
||||||
nano::serialize_block_type (stream_a, block_a.type ());
|
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 ("source_epoch", source_epoch);
|
||||||
obs.write ("details", details);
|
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
|
#pragma once
|
||||||
|
|
||||||
#include <nano/crypto/blake2/blake2.h>
|
#include <nano/crypto/blake2/blake2.h>
|
||||||
|
#include <nano/lib/block_sideband.hpp>
|
||||||
#include <nano/lib/epoch.hpp>
|
#include <nano/lib/epoch.hpp>
|
||||||
#include <nano/lib/errors.hpp>
|
#include <nano/lib/errors.hpp>
|
||||||
#include <nano/lib/numbers.hpp>
|
#include <nano/lib/numbers.hpp>
|
||||||
|
|
@ -21,70 +22,6 @@ namespace nano
|
||||||
class block_visitor;
|
class block_visitor;
|
||||||
class mutable_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
|
class block
|
||||||
{
|
{
|
||||||
public:
|
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 &);
|
||||||
std::shared_ptr<nano::block> deserialize_block (nano::stream &, nano::block_type, nano::block_uniquer * = nullptr);
|
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);
|
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
|
* Serialize a block prefixed with an 8-bit typecode
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <nano/lib/block_sideband.hpp>
|
||||||
#include <nano/lib/blocks.hpp>
|
#include <nano/lib/blocks.hpp>
|
||||||
#include <nano/lib/numbers.hpp>
|
#include <nano/lib/numbers.hpp>
|
||||||
#include <nano/store/component.hpp>
|
#include <nano/store/component.hpp>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue