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