mirror of
https://github.com/XRPLF/rippled.git
synced 2026-04-29 15:37:57 +00:00
Protocol enhancements for network 'previous ledger' sync.
This commit is contained in:
13
Peer.cpp
13
Peer.cpp
@@ -255,7 +255,7 @@ void Peer::processReadBuffer()
|
||||
|
||||
case newcoin::mtLEDGER:
|
||||
{
|
||||
newcoin::TMLedger msg;
|
||||
newcoin::TMLedgerData msg;
|
||||
if(msg.ParseFromArray(&mReadbuf[HEADER_SIZE], mReadbuf.size() - HEADER_SIZE))
|
||||
recvLedger(msg);
|
||||
else cout << "pars error: " << type << endl;
|
||||
@@ -415,7 +415,7 @@ void Peer::recvGetLedger(newcoin::TMGetLedger& packet)
|
||||
{
|
||||
}
|
||||
|
||||
void Peer::recvLedger(newcoin::TMLedger& packet)
|
||||
void Peer::recvLedger(newcoin::TMLedgerData& packet)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -427,6 +427,15 @@ void Peer::sendHello()
|
||||
h->set_ledgerindex(theApp->getOPs().getCurrentLedgerID());
|
||||
h->set_nettime(theApp->getOPs().getNetworkTime());
|
||||
h->set_ipv4port(theConfig.PEER_PORT);
|
||||
|
||||
Ledger::pointer closingLedger=theApp->getMasterLedger().getClosingLedger();
|
||||
if(closingLedger->isClosed())
|
||||
{
|
||||
Serializer s(128);
|
||||
closingLedger->addRaw(s);
|
||||
h->set_closedledger(s.getDataPtr(), s.getLength());
|
||||
}
|
||||
|
||||
PackedMessage::pointer packet(new PackedMessage(PackedMessage::MessagePointer(h), newcoin::mtHELLO));
|
||||
sendPacket(packet);
|
||||
}
|
||||
|
||||
2
Peer.h
2
Peer.h
@@ -58,7 +58,7 @@ protected:
|
||||
void recvGetAccount(newcoin::TMGetAccount& packet);
|
||||
void recvAccount(newcoin::TMAccount& packet);
|
||||
void recvGetLedger(newcoin::TMGetLedger& packet);
|
||||
void recvLedger(newcoin::TMLedger& packet);
|
||||
void recvLedger(newcoin::TMLedgerData& packet);
|
||||
|
||||
public:
|
||||
typedef boost::shared_ptr<Peer> pointer;
|
||||
|
||||
@@ -47,6 +47,8 @@ class Serializer
|
||||
|
||||
// totality functions
|
||||
int getLength() const { return mData.size(); }
|
||||
const void* getDataPtr() const { return &mData.front(); }
|
||||
void* getDataPtr() { return &mData.front(); }
|
||||
const std::vector<unsigned char>& peekData() const { return mData; }
|
||||
std::vector<unsigned char> getData() const { return mData; }
|
||||
void secureErase() { memset(&(mData.front()), 0, mData.size()); erase(); }
|
||||
|
||||
@@ -32,12 +32,15 @@ enum MessageType {
|
||||
|
||||
|
||||
// Sent on connect
|
||||
|
||||
|
||||
message TMHello {
|
||||
required uint32 version = 1;
|
||||
optional uint32 ledgerIndex = 2;
|
||||
optional uint64 netTime = 3;
|
||||
optional bytes nodeID = 4; // node may opt to remain anonymous
|
||||
optional uint32 ipv4Port = 5;
|
||||
required uint32 version = 1;
|
||||
optional uint32 ledgerIndex = 2;
|
||||
optional uint64 netTime = 3;
|
||||
optional bytes nodeID = 4; // node may opt to remain anonymous
|
||||
optional uint32 ipv4Port = 5;
|
||||
optional bytes closedLedger = 6;
|
||||
}
|
||||
|
||||
|
||||
@@ -184,7 +187,7 @@ message TMGetLedger {
|
||||
optional uint32 seq = 4; // used to match replies to queries
|
||||
}
|
||||
|
||||
message TMLedger {
|
||||
message TMLedgerData {
|
||||
required bytes hash = 1;
|
||||
repeated LedgerNodes nodes = 2;
|
||||
optional uint32 seq = 3; // matches seq from query
|
||||
|
||||
Reference in New Issue
Block a user