Protocol enhancements for network 'previous ledger' sync.

This commit is contained in:
JoelKatz
2012-01-24 21:29:54 -08:00
parent 7215f5b220
commit b5afbf52ec
4 changed files with 23 additions and 9 deletions

View File

@@ -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
View File

@@ -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;

View File

@@ -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(); }

View File

@@ -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