Config patch change detection. (#211)

* Applying patch file changes to hpcore runtime after patch file change detection.
* Removing unl sync functionality.
* Removing subjecting unl changeset to consensus.
This commit is contained in:
Savinda Senevirathne
2021-01-06 20:02:14 +05:30
committed by GitHub
parent c87ae6693d
commit bed8205ca8
22 changed files with 90 additions and 1033 deletions

View File

@@ -12,7 +12,6 @@ namespace msg::controlmsg
// Message types
constexpr const char *MSGTYPE_CONTRACT_END = "contract_end";
constexpr const char *MSGTYPE_UNL_CHANGESET = "unl_changeset";
} // namespace msg::controlmsg

View File

@@ -16,9 +16,4 @@ namespace msg::controlmsg
return jctlmsg::extract_type(extracted_type, jdoc);
}
int controlmsg_parser::extract_unl_changeset(std::set<std::string> &additions, std::set<std::string> &removals)
{
return jctlmsg::extract_unl_changeset(additions, removals, jdoc);
}
} // namespace msg::controlmsg

View File

@@ -12,7 +12,6 @@ namespace msg::controlmsg
public:
int parse(std::string_view message);
int extract_type(std::string &extracted_type) const;
int extract_unl_changeset(std::set<std::string> &additions, std::set<std::string> &removals);
};
} // namespace msg::controlmsg

View File

@@ -13,11 +13,6 @@ namespace msg::fbuf::ledger
*/
void create_ledger_block_from_proposal(flatbuffers::FlatBufferBuilder &builder, const p2p::proposal &p, const uint64_t seq_no)
{
const flatbuffers::Offset<Unl_Changeset> unl_changeset = CreateUnl_Changeset(
builder,
stringlist_to_flatbuf_bytearrayvector(builder, p.unl_changeset.additions),
stringlist_to_flatbuf_bytearrayvector(builder, p.unl_changeset.removals));
flatbuffers::Offset<ledger::LedgerBlock> ledger =
ledger::CreateLedgerBlock(
builder,
@@ -27,11 +22,9 @@ namespace msg::fbuf::ledger
sv_to_flatbuff_bytes(builder, p.lcl),
hash_to_flatbuff_bytes(builder, p.state_hash),
hash_to_flatbuff_bytes(builder, p.patch_hash),
sv_to_flatbuff_bytes(builder, p.unl_hash),
stringlist_to_flatbuf_bytearrayvector(builder, p.users),
stringlist_to_flatbuf_bytearrayvector(builder, p.input_hashes),
sv_to_flatbuff_bytes(builder, p.output_hash),
unl_changeset);
sv_to_flatbuff_bytes(builder, p.output_hash));
builder.Finish(ledger); // Finished building message content to get serialised content.
}

View File

@@ -9,16 +9,9 @@ table LedgerBlock {
lcl:[ubyte];
state_hash:[ubyte];
patch_hash:[ubyte];
unl:[ubyte];
users: [ByteArray];
inputs: [ByteArray];
output: [ubyte];
unl_changeset: Unl_Changeset;
}
table Unl_Changeset {
additions:[ByteArray];
removals:[ByteArray];
}
root_type LedgerBlock;

View File

@@ -15,9 +15,6 @@ namespace ledger {
struct LedgerBlock;
struct LedgerBlockBuilder;
struct Unl_Changeset;
struct Unl_ChangesetBuilder;
struct LedgerBlock FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef LedgerBlockBuilder Builder;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
@@ -27,11 +24,9 @@ struct LedgerBlock FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
VT_LCL = 10,
VT_STATE_HASH = 12,
VT_PATCH_HASH = 14,
VT_UNL = 16,
VT_USERS = 18,
VT_INPUTS = 20,
VT_OUTPUT = 22,
VT_UNL_CHANGESET = 24
VT_USERS = 16,
VT_INPUTS = 18,
VT_OUTPUT = 20
};
const flatbuffers::String *version() const {
return GetPointer<const flatbuffers::String *>(VT_VERSION);
@@ -69,12 +64,6 @@ struct LedgerBlock FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
flatbuffers::Vector<uint8_t> *mutable_patch_hash() {
return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_PATCH_HASH);
}
const flatbuffers::Vector<uint8_t> *unl() const {
return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_UNL);
}
flatbuffers::Vector<uint8_t> *mutable_unl() {
return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_UNL);
}
const flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *users() const {
return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *>(VT_USERS);
}
@@ -93,12 +82,6 @@ struct LedgerBlock FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
flatbuffers::Vector<uint8_t> *mutable_output() {
return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_OUTPUT);
}
const msg::fbuf::ledger::Unl_Changeset *unl_changeset() const {
return GetPointer<const msg::fbuf::ledger::Unl_Changeset *>(VT_UNL_CHANGESET);
}
msg::fbuf::ledger::Unl_Changeset *mutable_unl_changeset() {
return GetPointer<msg::fbuf::ledger::Unl_Changeset *>(VT_UNL_CHANGESET);
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyOffset(verifier, VT_VERSION) &&
@@ -111,8 +94,6 @@ struct LedgerBlock FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
verifier.VerifyVector(state_hash()) &&
VerifyOffset(verifier, VT_PATCH_HASH) &&
verifier.VerifyVector(patch_hash()) &&
VerifyOffset(verifier, VT_UNL) &&
verifier.VerifyVector(unl()) &&
VerifyOffset(verifier, VT_USERS) &&
verifier.VerifyVector(users()) &&
verifier.VerifyVectorOfTables(users()) &&
@@ -121,8 +102,6 @@ struct LedgerBlock FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
verifier.VerifyVectorOfTables(inputs()) &&
VerifyOffset(verifier, VT_OUTPUT) &&
verifier.VerifyVector(output()) &&
VerifyOffset(verifier, VT_UNL_CHANGESET) &&
verifier.VerifyTable(unl_changeset()) &&
verifier.EndTable();
}
};
@@ -149,9 +128,6 @@ struct LedgerBlockBuilder {
void add_patch_hash(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> patch_hash) {
fbb_.AddOffset(LedgerBlock::VT_PATCH_HASH, patch_hash);
}
void add_unl(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> unl) {
fbb_.AddOffset(LedgerBlock::VT_UNL, unl);
}
void add_users(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>>> users) {
fbb_.AddOffset(LedgerBlock::VT_USERS, users);
}
@@ -161,9 +137,6 @@ struct LedgerBlockBuilder {
void add_output(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> output) {
fbb_.AddOffset(LedgerBlock::VT_OUTPUT, output);
}
void add_unl_changeset(flatbuffers::Offset<msg::fbuf::ledger::Unl_Changeset> unl_changeset) {
fbb_.AddOffset(LedgerBlock::VT_UNL_CHANGESET, unl_changeset);
}
explicit LedgerBlockBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
@@ -183,19 +156,15 @@ inline flatbuffers::Offset<LedgerBlock> CreateLedgerBlock(
flatbuffers::Offset<flatbuffers::Vector<uint8_t>> lcl = 0,
flatbuffers::Offset<flatbuffers::Vector<uint8_t>> state_hash = 0,
flatbuffers::Offset<flatbuffers::Vector<uint8_t>> patch_hash = 0,
flatbuffers::Offset<flatbuffers::Vector<uint8_t>> unl = 0,
flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>>> users = 0,
flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>>> inputs = 0,
flatbuffers::Offset<flatbuffers::Vector<uint8_t>> output = 0,
flatbuffers::Offset<msg::fbuf::ledger::Unl_Changeset> unl_changeset = 0) {
flatbuffers::Offset<flatbuffers::Vector<uint8_t>> output = 0) {
LedgerBlockBuilder builder_(_fbb);
builder_.add_time(time);
builder_.add_seq_no(seq_no);
builder_.add_unl_changeset(unl_changeset);
builder_.add_output(output);
builder_.add_inputs(inputs);
builder_.add_users(users);
builder_.add_unl(unl);
builder_.add_patch_hash(patch_hash);
builder_.add_state_hash(state_hash);
builder_.add_lcl(lcl);
@@ -211,16 +180,13 @@ inline flatbuffers::Offset<LedgerBlock> CreateLedgerBlockDirect(
const std::vector<uint8_t> *lcl = nullptr,
const std::vector<uint8_t> *state_hash = nullptr,
const std::vector<uint8_t> *patch_hash = nullptr,
const std::vector<uint8_t> *unl = nullptr,
const std::vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *users = nullptr,
const std::vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *inputs = nullptr,
const std::vector<uint8_t> *output = nullptr,
flatbuffers::Offset<msg::fbuf::ledger::Unl_Changeset> unl_changeset = 0) {
const std::vector<uint8_t> *output = nullptr) {
auto version__ = version ? _fbb.CreateString(version) : 0;
auto lcl__ = lcl ? _fbb.CreateVector<uint8_t>(*lcl) : 0;
auto state_hash__ = state_hash ? _fbb.CreateVector<uint8_t>(*state_hash) : 0;
auto patch_hash__ = patch_hash ? _fbb.CreateVector<uint8_t>(*patch_hash) : 0;
auto unl__ = unl ? _fbb.CreateVector<uint8_t>(*unl) : 0;
auto users__ = users ? _fbb.CreateVector<flatbuffers::Offset<msg::fbuf::ByteArray>>(*users) : 0;
auto inputs__ = inputs ? _fbb.CreateVector<flatbuffers::Offset<msg::fbuf::ByteArray>>(*inputs) : 0;
auto output__ = output ? _fbb.CreateVector<uint8_t>(*output) : 0;
@@ -232,84 +198,9 @@ inline flatbuffers::Offset<LedgerBlock> CreateLedgerBlockDirect(
lcl__,
state_hash__,
patch_hash__,
unl__,
users__,
inputs__,
output__,
unl_changeset);
}
struct Unl_Changeset FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef Unl_ChangesetBuilder Builder;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_ADDITIONS = 4,
VT_REMOVALS = 6
};
const flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *additions() const {
return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *>(VT_ADDITIONS);
}
flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *mutable_additions() {
return GetPointer<flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *>(VT_ADDITIONS);
}
const flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *removals() const {
return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *>(VT_REMOVALS);
}
flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *mutable_removals() {
return GetPointer<flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *>(VT_REMOVALS);
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyOffset(verifier, VT_ADDITIONS) &&
verifier.VerifyVector(additions()) &&
verifier.VerifyVectorOfTables(additions()) &&
VerifyOffset(verifier, VT_REMOVALS) &&
verifier.VerifyVector(removals()) &&
verifier.VerifyVectorOfTables(removals()) &&
verifier.EndTable();
}
};
struct Unl_ChangesetBuilder {
typedef Unl_Changeset Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
void add_additions(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>>> additions) {
fbb_.AddOffset(Unl_Changeset::VT_ADDITIONS, additions);
}
void add_removals(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>>> removals) {
fbb_.AddOffset(Unl_Changeset::VT_REMOVALS, removals);
}
explicit Unl_ChangesetBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
flatbuffers::Offset<Unl_Changeset> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<Unl_Changeset>(end);
return o;
}
};
inline flatbuffers::Offset<Unl_Changeset> CreateUnl_Changeset(
flatbuffers::FlatBufferBuilder &_fbb,
flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>>> additions = 0,
flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>>> removals = 0) {
Unl_ChangesetBuilder builder_(_fbb);
builder_.add_removals(removals);
builder_.add_additions(additions);
return builder_.Finish();
}
inline flatbuffers::Offset<Unl_Changeset> CreateUnl_ChangesetDirect(
flatbuffers::FlatBufferBuilder &_fbb,
const std::vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *additions = nullptr,
const std::vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *removals = nullptr) {
auto additions__ = additions ? _fbb.CreateVector<flatbuffers::Offset<msg::fbuf::ByteArray>>(*additions) : 0;
auto removals__ = removals ? _fbb.CreateVector<flatbuffers::Offset<msg::fbuf::ByteArray>>(*removals) : 0;
return msg::fbuf::ledger::CreateUnl_Changeset(
_fbb,
additions__,
removals__);
output__);
}
inline const msg::fbuf::ledger::LedgerBlock *GetLedgerBlock(const void *buf) {

View File

@@ -38,9 +38,7 @@ union Message {
Peer_Requirement_Announcement_Message,
Peer_List_Request_Message,
Peer_List_Response_Message,
Available_Capacity_Announcement_Message,
Unl_Request_Message,
Unl_Response_Message
Available_Capacity_Announcement_Message
} //message content type
table Content {
@@ -51,11 +49,6 @@ table NonUnl_Proposal_Message {
user_inputs:[UserInputGroup];
}
table Unl_Changeset {
additions:[ByteArray];
removals:[ByteArray];
}
table Proposal_Message { //Proposal type message schema
stage:uint8;
time:uint64;
@@ -66,8 +59,6 @@ table Proposal_Message { //Proposal type message schema
output_sig:[ubyte];
state_hash: [ubyte];
patch_hash: [ubyte];
unl_hash: [ubyte]; // Hash of the current unl list.
unl_changeset: Unl_Changeset;
}
table Npl_Message { //NPL type message schema
@@ -78,15 +69,6 @@ table History_Request_Message { //Ledger History request type message schema
required_lcl:[ubyte];
}
table Unl_Request_Message {
required_unl: [ubyte];
}
table Unl_Response_Message {
requester_unl:[ubyte]; // Unl hash of the sender.
unl_list: [ByteArray];
}
enum Ledger_Response_Error : ubyte
{
None = 0,

View File

@@ -30,9 +30,6 @@ struct ContentBuilder;
struct NonUnl_Proposal_Message;
struct NonUnl_Proposal_MessageBuilder;
struct Unl_Changeset;
struct Unl_ChangesetBuilder;
struct Proposal_Message;
struct Proposal_MessageBuilder;
@@ -42,12 +39,6 @@ struct Npl_MessageBuilder;
struct History_Request_Message;
struct History_Request_MessageBuilder;
struct Unl_Request_Message;
struct Unl_Request_MessageBuilder;
struct Unl_Response_Message;
struct Unl_Response_MessageBuilder;
struct History_Response_Message;
struct History_Response_MessageBuilder;
@@ -105,13 +96,11 @@ enum Message : uint8_t {
Message_Peer_List_Request_Message = 11,
Message_Peer_List_Response_Message = 12,
Message_Available_Capacity_Announcement_Message = 13,
Message_Unl_Request_Message = 14,
Message_Unl_Response_Message = 15,
Message_MIN = Message_NONE,
Message_MAX = Message_Unl_Response_Message
Message_MAX = Message_Available_Capacity_Announcement_Message
};
inline const Message (&EnumValuesMessage())[16] {
inline const Message (&EnumValuesMessage())[14] {
static const Message values[] = {
Message_NONE,
Message_Peer_Challenge_Response_Message,
@@ -126,15 +115,13 @@ inline const Message (&EnumValuesMessage())[16] {
Message_Peer_Requirement_Announcement_Message,
Message_Peer_List_Request_Message,
Message_Peer_List_Response_Message,
Message_Available_Capacity_Announcement_Message,
Message_Unl_Request_Message,
Message_Unl_Response_Message
Message_Available_Capacity_Announcement_Message
};
return values;
}
inline const char * const *EnumNamesMessage() {
static const char * const names[17] = {
static const char * const names[15] = {
"NONE",
"Peer_Challenge_Response_Message",
"Peer_Challenge_Message",
@@ -149,15 +136,13 @@ inline const char * const *EnumNamesMessage() {
"Peer_List_Request_Message",
"Peer_List_Response_Message",
"Available_Capacity_Announcement_Message",
"Unl_Request_Message",
"Unl_Response_Message",
nullptr
};
return names;
}
inline const char *EnumNameMessage(Message e) {
if (flatbuffers::IsOutRange(e, Message_NONE, Message_Unl_Response_Message)) return "";
if (flatbuffers::IsOutRange(e, Message_NONE, Message_Available_Capacity_Announcement_Message)) return "";
const size_t index = static_cast<size_t>(e);
return EnumNamesMessage()[index];
}
@@ -218,14 +203,6 @@ template<> struct MessageTraits<msg::fbuf::p2pmsg::Available_Capacity_Announceme
static const Message enum_value = Message_Available_Capacity_Announcement_Message;
};
template<> struct MessageTraits<msg::fbuf::p2pmsg::Unl_Request_Message> {
static const Message enum_value = Message_Unl_Request_Message;
};
template<> struct MessageTraits<msg::fbuf::p2pmsg::Unl_Response_Message> {
static const Message enum_value = Message_Unl_Response_Message;
};
bool VerifyMessage(flatbuffers::Verifier &verifier, const void *obj, Message type);
bool VerifyMessageVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
@@ -669,12 +646,6 @@ struct Content FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
const msg::fbuf::p2pmsg::Available_Capacity_Announcement_Message *message_as_Available_Capacity_Announcement_Message() const {
return message_type() == msg::fbuf::p2pmsg::Message_Available_Capacity_Announcement_Message ? static_cast<const msg::fbuf::p2pmsg::Available_Capacity_Announcement_Message *>(message()) : nullptr;
}
const msg::fbuf::p2pmsg::Unl_Request_Message *message_as_Unl_Request_Message() const {
return message_type() == msg::fbuf::p2pmsg::Message_Unl_Request_Message ? static_cast<const msg::fbuf::p2pmsg::Unl_Request_Message *>(message()) : nullptr;
}
const msg::fbuf::p2pmsg::Unl_Response_Message *message_as_Unl_Response_Message() const {
return message_type() == msg::fbuf::p2pmsg::Message_Unl_Response_Message ? static_cast<const msg::fbuf::p2pmsg::Unl_Response_Message *>(message()) : nullptr;
}
void *mutable_message() {
return GetPointer<void *>(VT_MESSAGE);
}
@@ -739,14 +710,6 @@ template<> inline const msg::fbuf::p2pmsg::Available_Capacity_Announcement_Messa
return message_as_Available_Capacity_Announcement_Message();
}
template<> inline const msg::fbuf::p2pmsg::Unl_Request_Message *Content::message_as<msg::fbuf::p2pmsg::Unl_Request_Message>() const {
return message_as_Unl_Request_Message();
}
template<> inline const msg::fbuf::p2pmsg::Unl_Response_Message *Content::message_as<msg::fbuf::p2pmsg::Unl_Response_Message>() const {
return message_as_Unl_Response_Message();
}
struct ContentBuilder {
typedef Content Table;
flatbuffers::FlatBufferBuilder &fbb_;
@@ -833,79 +796,6 @@ inline flatbuffers::Offset<NonUnl_Proposal_Message> CreateNonUnl_Proposal_Messag
user_inputs__);
}
struct Unl_Changeset FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef Unl_ChangesetBuilder Builder;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_ADDITIONS = 4,
VT_REMOVALS = 6
};
const flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *additions() const {
return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *>(VT_ADDITIONS);
}
flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *mutable_additions() {
return GetPointer<flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *>(VT_ADDITIONS);
}
const flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *removals() const {
return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *>(VT_REMOVALS);
}
flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *mutable_removals() {
return GetPointer<flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *>(VT_REMOVALS);
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyOffset(verifier, VT_ADDITIONS) &&
verifier.VerifyVector(additions()) &&
verifier.VerifyVectorOfTables(additions()) &&
VerifyOffset(verifier, VT_REMOVALS) &&
verifier.VerifyVector(removals()) &&
verifier.VerifyVectorOfTables(removals()) &&
verifier.EndTable();
}
};
struct Unl_ChangesetBuilder {
typedef Unl_Changeset Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
void add_additions(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>>> additions) {
fbb_.AddOffset(Unl_Changeset::VT_ADDITIONS, additions);
}
void add_removals(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>>> removals) {
fbb_.AddOffset(Unl_Changeset::VT_REMOVALS, removals);
}
explicit Unl_ChangesetBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
flatbuffers::Offset<Unl_Changeset> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<Unl_Changeset>(end);
return o;
}
};
inline flatbuffers::Offset<Unl_Changeset> CreateUnl_Changeset(
flatbuffers::FlatBufferBuilder &_fbb,
flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>>> additions = 0,
flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>>> removals = 0) {
Unl_ChangesetBuilder builder_(_fbb);
builder_.add_removals(removals);
builder_.add_additions(additions);
return builder_.Finish();
}
inline flatbuffers::Offset<Unl_Changeset> CreateUnl_ChangesetDirect(
flatbuffers::FlatBufferBuilder &_fbb,
const std::vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *additions = nullptr,
const std::vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *removals = nullptr) {
auto additions__ = additions ? _fbb.CreateVector<flatbuffers::Offset<msg::fbuf::ByteArray>>(*additions) : 0;
auto removals__ = removals ? _fbb.CreateVector<flatbuffers::Offset<msg::fbuf::ByteArray>>(*removals) : 0;
return msg::fbuf::p2pmsg::CreateUnl_Changeset(
_fbb,
additions__,
removals__);
}
struct Proposal_Message FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef Proposal_MessageBuilder Builder;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
@@ -917,9 +807,7 @@ struct Proposal_Message FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
VT_OUTPUT_HASH = 14,
VT_OUTPUT_SIG = 16,
VT_STATE_HASH = 18,
VT_PATCH_HASH = 20,
VT_UNL_HASH = 22,
VT_UNL_CHANGESET = 24
VT_PATCH_HASH = 20
};
uint8_t stage() const {
return GetField<uint8_t>(VT_STAGE, 0);
@@ -975,18 +863,6 @@ struct Proposal_Message FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
flatbuffers::Vector<uint8_t> *mutable_patch_hash() {
return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_PATCH_HASH);
}
const flatbuffers::Vector<uint8_t> *unl_hash() const {
return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_UNL_HASH);
}
flatbuffers::Vector<uint8_t> *mutable_unl_hash() {
return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_UNL_HASH);
}
const msg::fbuf::p2pmsg::Unl_Changeset *unl_changeset() const {
return GetPointer<const msg::fbuf::p2pmsg::Unl_Changeset *>(VT_UNL_CHANGESET);
}
msg::fbuf::p2pmsg::Unl_Changeset *mutable_unl_changeset() {
return GetPointer<msg::fbuf::p2pmsg::Unl_Changeset *>(VT_UNL_CHANGESET);
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyField<uint8_t>(verifier, VT_STAGE) &&
@@ -1007,10 +883,6 @@ struct Proposal_Message FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
verifier.VerifyVector(state_hash()) &&
VerifyOffset(verifier, VT_PATCH_HASH) &&
verifier.VerifyVector(patch_hash()) &&
VerifyOffset(verifier, VT_UNL_HASH) &&
verifier.VerifyVector(unl_hash()) &&
VerifyOffset(verifier, VT_UNL_CHANGESET) &&
verifier.VerifyTable(unl_changeset()) &&
verifier.EndTable();
}
};
@@ -1046,12 +918,6 @@ struct Proposal_MessageBuilder {
void add_patch_hash(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> patch_hash) {
fbb_.AddOffset(Proposal_Message::VT_PATCH_HASH, patch_hash);
}
void add_unl_hash(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> unl_hash) {
fbb_.AddOffset(Proposal_Message::VT_UNL_HASH, unl_hash);
}
void add_unl_changeset(flatbuffers::Offset<msg::fbuf::p2pmsg::Unl_Changeset> unl_changeset) {
fbb_.AddOffset(Proposal_Message::VT_UNL_CHANGESET, unl_changeset);
}
explicit Proposal_MessageBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
@@ -1073,13 +939,9 @@ inline flatbuffers::Offset<Proposal_Message> CreateProposal_Message(
flatbuffers::Offset<flatbuffers::Vector<uint8_t>> output_hash = 0,
flatbuffers::Offset<flatbuffers::Vector<uint8_t>> output_sig = 0,
flatbuffers::Offset<flatbuffers::Vector<uint8_t>> state_hash = 0,
flatbuffers::Offset<flatbuffers::Vector<uint8_t>> patch_hash = 0,
flatbuffers::Offset<flatbuffers::Vector<uint8_t>> unl_hash = 0,
flatbuffers::Offset<msg::fbuf::p2pmsg::Unl_Changeset> unl_changeset = 0) {
flatbuffers::Offset<flatbuffers::Vector<uint8_t>> patch_hash = 0) {
Proposal_MessageBuilder builder_(_fbb);
builder_.add_time(time);
builder_.add_unl_changeset(unl_changeset);
builder_.add_unl_hash(unl_hash);
builder_.add_patch_hash(patch_hash);
builder_.add_state_hash(state_hash);
builder_.add_output_sig(output_sig);
@@ -1101,9 +963,7 @@ inline flatbuffers::Offset<Proposal_Message> CreateProposal_MessageDirect(
const std::vector<uint8_t> *output_hash = nullptr,
const std::vector<uint8_t> *output_sig = nullptr,
const std::vector<uint8_t> *state_hash = nullptr,
const std::vector<uint8_t> *patch_hash = nullptr,
const std::vector<uint8_t> *unl_hash = nullptr,
flatbuffers::Offset<msg::fbuf::p2pmsg::Unl_Changeset> unl_changeset = 0) {
const std::vector<uint8_t> *patch_hash = nullptr) {
auto nonce__ = nonce ? _fbb.CreateVector<uint8_t>(*nonce) : 0;
auto users__ = users ? _fbb.CreateVector<flatbuffers::Offset<msg::fbuf::ByteArray>>(*users) : 0;
auto input_hashes__ = input_hashes ? _fbb.CreateVector<flatbuffers::Offset<msg::fbuf::ByteArray>>(*input_hashes) : 0;
@@ -1111,7 +971,6 @@ inline flatbuffers::Offset<Proposal_Message> CreateProposal_MessageDirect(
auto output_sig__ = output_sig ? _fbb.CreateVector<uint8_t>(*output_sig) : 0;
auto state_hash__ = state_hash ? _fbb.CreateVector<uint8_t>(*state_hash) : 0;
auto patch_hash__ = patch_hash ? _fbb.CreateVector<uint8_t>(*patch_hash) : 0;
auto unl_hash__ = unl_hash ? _fbb.CreateVector<uint8_t>(*unl_hash) : 0;
return msg::fbuf::p2pmsg::CreateProposal_Message(
_fbb,
stage,
@@ -1122,9 +981,7 @@ inline flatbuffers::Offset<Proposal_Message> CreateProposal_MessageDirect(
output_hash__,
output_sig__,
state_hash__,
patch_hash__,
unl_hash__,
unl_changeset);
patch_hash__);
}
struct Npl_Message FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
@@ -1235,132 +1092,6 @@ inline flatbuffers::Offset<History_Request_Message> CreateHistory_Request_Messag
required_lcl__);
}
struct Unl_Request_Message FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef Unl_Request_MessageBuilder Builder;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_REQUIRED_UNL = 4
};
const flatbuffers::Vector<uint8_t> *required_unl() const {
return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_REQUIRED_UNL);
}
flatbuffers::Vector<uint8_t> *mutable_required_unl() {
return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_REQUIRED_UNL);
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyOffset(verifier, VT_REQUIRED_UNL) &&
verifier.VerifyVector(required_unl()) &&
verifier.EndTable();
}
};
struct Unl_Request_MessageBuilder {
typedef Unl_Request_Message Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
void add_required_unl(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> required_unl) {
fbb_.AddOffset(Unl_Request_Message::VT_REQUIRED_UNL, required_unl);
}
explicit Unl_Request_MessageBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
flatbuffers::Offset<Unl_Request_Message> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<Unl_Request_Message>(end);
return o;
}
};
inline flatbuffers::Offset<Unl_Request_Message> CreateUnl_Request_Message(
flatbuffers::FlatBufferBuilder &_fbb,
flatbuffers::Offset<flatbuffers::Vector<uint8_t>> required_unl = 0) {
Unl_Request_MessageBuilder builder_(_fbb);
builder_.add_required_unl(required_unl);
return builder_.Finish();
}
inline flatbuffers::Offset<Unl_Request_Message> CreateUnl_Request_MessageDirect(
flatbuffers::FlatBufferBuilder &_fbb,
const std::vector<uint8_t> *required_unl = nullptr) {
auto required_unl__ = required_unl ? _fbb.CreateVector<uint8_t>(*required_unl) : 0;
return msg::fbuf::p2pmsg::CreateUnl_Request_Message(
_fbb,
required_unl__);
}
struct Unl_Response_Message FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef Unl_Response_MessageBuilder Builder;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_REQUESTER_UNL = 4,
VT_UNL_LIST = 6
};
const flatbuffers::Vector<uint8_t> *requester_unl() const {
return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_REQUESTER_UNL);
}
flatbuffers::Vector<uint8_t> *mutable_requester_unl() {
return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_REQUESTER_UNL);
}
const flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *unl_list() const {
return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *>(VT_UNL_LIST);
}
flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *mutable_unl_list() {
return GetPointer<flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *>(VT_UNL_LIST);
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyOffset(verifier, VT_REQUESTER_UNL) &&
verifier.VerifyVector(requester_unl()) &&
VerifyOffset(verifier, VT_UNL_LIST) &&
verifier.VerifyVector(unl_list()) &&
verifier.VerifyVectorOfTables(unl_list()) &&
verifier.EndTable();
}
};
struct Unl_Response_MessageBuilder {
typedef Unl_Response_Message Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
void add_requester_unl(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> requester_unl) {
fbb_.AddOffset(Unl_Response_Message::VT_REQUESTER_UNL, requester_unl);
}
void add_unl_list(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>>> unl_list) {
fbb_.AddOffset(Unl_Response_Message::VT_UNL_LIST, unl_list);
}
explicit Unl_Response_MessageBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
flatbuffers::Offset<Unl_Response_Message> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<Unl_Response_Message>(end);
return o;
}
};
inline flatbuffers::Offset<Unl_Response_Message> CreateUnl_Response_Message(
flatbuffers::FlatBufferBuilder &_fbb,
flatbuffers::Offset<flatbuffers::Vector<uint8_t>> requester_unl = 0,
flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<msg::fbuf::ByteArray>>> unl_list = 0) {
Unl_Response_MessageBuilder builder_(_fbb);
builder_.add_unl_list(unl_list);
builder_.add_requester_unl(requester_unl);
return builder_.Finish();
}
inline flatbuffers::Offset<Unl_Response_Message> CreateUnl_Response_MessageDirect(
flatbuffers::FlatBufferBuilder &_fbb,
const std::vector<uint8_t> *requester_unl = nullptr,
const std::vector<flatbuffers::Offset<msg::fbuf::ByteArray>> *unl_list = nullptr) {
auto requester_unl__ = requester_unl ? _fbb.CreateVector<uint8_t>(*requester_unl) : 0;
auto unl_list__ = unl_list ? _fbb.CreateVector<flatbuffers::Offset<msg::fbuf::ByteArray>>(*unl_list) : 0;
return msg::fbuf::p2pmsg::CreateUnl_Response_Message(
_fbb,
requester_unl__,
unl_list__);
}
struct History_Response_Message FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef History_Response_MessageBuilder Builder;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
@@ -2419,14 +2150,6 @@ inline bool VerifyMessage(flatbuffers::Verifier &verifier, const void *obj, Mess
auto ptr = reinterpret_cast<const msg::fbuf::p2pmsg::Available_Capacity_Announcement_Message *>(obj);
return verifier.VerifyTable(ptr);
}
case Message_Unl_Request_Message: {
auto ptr = reinterpret_cast<const msg::fbuf::p2pmsg::Unl_Request_Message *>(obj);
return verifier.VerifyTable(ptr);
}
case Message_Unl_Response_Message: {
auto ptr = reinterpret_cast<const msg::fbuf::p2pmsg::Unl_Response_Message *>(obj);
return verifier.VerifyTable(ptr);
}
default: return true;
}
}

View File

@@ -231,14 +231,9 @@ namespace msg::fbuf::p2pmsg
p.nonce = flatbuff_bytes_to_sv(msg.nonce());
p.stage = msg.stage();
p.lcl = flatbuff_bytes_to_sv(lcl);
p.unl_hash = flatbuff_bytes_to_sv(msg.unl_hash());
p.state_hash = flatbuff_bytes_to_sv(msg.state_hash());
p.patch_hash = flatbuff_bytes_to_sv(msg.patch_hash());
const auto unl_changeset = msg.unl_changeset();
p.unl_changeset.additions = flatbuf_bytearrayvector_to_stringlist(unl_changeset->additions());
p.unl_changeset.removals = flatbuf_bytearrayvector_to_stringlist(unl_changeset->removals());
if (msg.users())
p.users = flatbuf_bytearrayvector_to_stringlist(msg.users());
@@ -378,11 +373,6 @@ namespace msg::fbuf::p2pmsg
// todo:get a average propsal message size and allocate content builder based on that.
flatbuffers::FlatBufferBuilder builder(1024);
const flatbuffers::Offset<Unl_Changeset> unl_changeset = CreateUnl_Changeset(
builder,
stringlist_to_flatbuf_bytearrayvector(builder, p.unl_changeset.additions),
stringlist_to_flatbuf_bytearrayvector(builder, p.unl_changeset.removals));
const flatbuffers::Offset<Proposal_Message> proposal =
CreateProposal_Message(
builder,
@@ -394,9 +384,7 @@ namespace msg::fbuf::p2pmsg
sv_to_flatbuff_bytes(builder, p.output_hash),
sv_to_flatbuff_bytes(builder, p.output_sig),
hash_to_flatbuff_bytes(builder, p.state_hash),
hash_to_flatbuff_bytes(builder, p.patch_hash),
sv_to_flatbuff_bytes(builder, p.unl_hash),
unl_changeset);
hash_to_flatbuff_bytes(builder, p.patch_hash));
const flatbuffers::Offset<Content> message = CreateContent(builder, Message_Proposal_Message, proposal.Union());
builder.Finish(message); // Finished building message content to get serialised content.
@@ -691,79 +679,6 @@ namespace msg::fbuf::p2pmsg
create_containermsg_from_content(container_builder, builder, lcl, false);
}
/**
* Create unl request message from the given unl sync request struct.
* @param container_builder Flatbuffer builder for the container message.
* @param unl_sync_message The Unl sync request struct to be placed in the container message.
*/
void create_msg_from_unl_sync_request(flatbuffers::FlatBufferBuilder &container_builder, const p2p::unl_sync_request &unl_sync_message)
{
flatbuffers::FlatBufferBuilder builder(1024);
flatbuffers::Offset<Unl_Request_Message> unl_req_msg =
CreateUnl_Request_Message(
builder,
sv_to_flatbuff_bytes(builder, unl_sync_message.required_unl));
flatbuffers::Offset<Content> message = CreateContent(builder, Message_Unl_Request_Message, unl_req_msg.Union());
builder.Finish(message); // Finished building message content to get serialised content.
// Now that we have built the content message,
// we need to place it inside a container message.
create_containermsg_from_content(container_builder, builder, {}, false);
}
/**
* Creates a unl sync request struct from the given unl request message.
* @param unl_req_message Flatbuffer unl request message received from the peer.
* @return A unl sync request struct representing the message.
*/
const p2p::unl_sync_request create_unl_sync_request_from_msg(const Unl_Request_Message &unl_req_message)
{
p2p::unl_sync_request unl_sync;
unl_sync.required_unl = flatbuff_bytes_to_sv(unl_req_message.required_unl());
return unl_sync;
}
/**
* Create unl response message from the given unl sync response struct.
* @param container_builder Flatbuffer builder for the container message.
* @param unl_response The unl sync response struct to be placed in the container message.
*/
void create_msg_from_unl_sync_response(flatbuffers::FlatBufferBuilder &container_builder, const p2p::unl_sync_response &unl_response)
{
flatbuffers::FlatBufferBuilder builder(1024);
flatbuffers::Offset<Unl_Response_Message> unl_res_msg =
CreateUnl_Response_Message(
builder,
sv_to_flatbuff_bytes(builder, unl_response.requester_unl),
stringlist_to_flatbuf_bytearrayvector(builder, unl_response.unl_list));
flatbuffers::Offset<Content> message = CreateContent(builder, Message_Unl_Response_Message, unl_res_msg.Union());
builder.Finish(message); // Finished building message content to get serialised content.
// Now that we have built the content message,
// we need to place it inside a container message.
create_containermsg_from_content(container_builder, builder, {}, false);
}
/**
* Creates a unl sync response struct from the given unl response message.
* @param unl_response_message Flatbuffer unl response message received from the peer.
* @return A unl sync response struct representing the message.
*/
const p2p::unl_sync_response create_unl_sync_response_from_msg(const Unl_Response_Message &unl_response_message)
{
p2p::unl_sync_response unl_sync_response;
unl_sync_response.requester_unl = flatbuff_bytes_to_sv(unl_response_message.requester_unl());
unl_sync_response.unl_list = flatbuf_bytearrayvector_to_stringlist(unl_response_message.unl_list());
return unl_sync_response;
}
/**
* Creates a Flatbuffer container message from the given Content message.
* @param container_builder The Flatbuffer builder to which the final container message should be written to.

View File

@@ -37,10 +37,6 @@ namespace msg::fbuf::p2pmsg
const p2p::history_response create_history_response_from_msg(const History_Response_Message &msg);
const p2p::hpfs_request create_hpfs_request_from_msg(const Hpfs_Request_Message &msg);
const p2p::unl_sync_request create_unl_sync_request_from_msg(const Unl_Request_Message &unl_req_message);
const p2p::unl_sync_response create_unl_sync_response_from_msg(const Unl_Response_Message &unl_response_message);
const std::vector<conf::peer_properties> create_peer_list_response_from_msg(const Peer_List_Response_Message &msg);
@@ -61,10 +57,6 @@ namespace msg::fbuf::p2pmsg
void create_msg_from_state_request(flatbuffers::FlatBufferBuilder &container_builder, const p2p::hpfs_request &hr, std::string_view lcl);
void create_msg_from_unl_sync_request(flatbuffers::FlatBufferBuilder &container_builder, const p2p::unl_sync_request &unl_sync_message);
void create_msg_from_unl_sync_response(flatbuffers::FlatBufferBuilder &container_builder, const p2p::unl_sync_response &unl_response);
void create_msg_from_fsentry_response(
flatbuffers::FlatBufferBuilder &container_builder, const std::string_view path,
std::vector<hpfs::child_hash_node> &hash_nodes, util::h32 expected_hash, std::string_view lcl);

View File

@@ -57,33 +57,4 @@ namespace msg::controlmsg::json
return 0;
}
/**
* Extracts unl additions and removals from the json document.
* Format:
* {
* "type": "unl_changeset",
* "add": ["pk1","pk2",...]
* "remove": ["pk1","pk2",...]
* }
*/
int extract_unl_changeset(std::set<std::string> &additions, std::set<std::string> &removals, const jsoncons::json &d)
{
extract_string_set(additions, d, FLD_ADD);
extract_string_set(removals, d, FLD_REMOVE);
return 0;
}
void extract_string_set(std::set<std::string> &vec, const jsoncons::json &d, const char *field_name)
{
if (!d.contains(field_name) || !d[field_name].is_array())
return;
for (const auto &pkhex : d[field_name].array_range())
{
const std::string bin_pubkey = util::to_bin(pkhex.as<std::string_view>());
if (!bin_pubkey.empty())
vec.emplace(bin_pubkey);
}
}
} // namespace msg::controlmsg::json

View File

@@ -12,9 +12,6 @@ namespace msg::controlmsg::json
int extract_type(std::string &extracted_type, const jsoncons::json &d);
int extract_unl_changeset(std::set<std::string> &additions, std::set<std::string> &removals, const jsoncons::json &d);
void extract_string_set(std::set<std::string> &vec, const jsoncons::json &d, const char *field_name);
} // namespace msg::controlmsg::json