Add missing serializations
This commit is contained in:
parent
56907c1a3b
commit
2d4b26a6a1
|
@ -5,12 +5,13 @@ var buffertools = require('buffertools');
|
||||||
var Put = require('bufferput');
|
var Put = require('bufferput');
|
||||||
var util = require('util');
|
var util = require('util');
|
||||||
|
|
||||||
var Block = require('../block');
|
var BlockHeaderModel = require('../blockheader');
|
||||||
|
var BlockModel = require('../block');
|
||||||
var BufferReader = require('../encoding/bufferreader');
|
var BufferReader = require('../encoding/bufferreader');
|
||||||
var BufferUtil = require('../util/buffer');
|
var BufferUtil = require('../util/buffer');
|
||||||
var Hash = require('../crypto/hash');
|
var Hash = require('../crypto/hash');
|
||||||
var Random = require('../crypto/random');
|
var Random = require('../crypto/random');
|
||||||
var Transaction = require('../transaction');
|
var TransactionModel = require('../transaction');
|
||||||
|
|
||||||
var CONNECTION_NONCE = Random.getPseudoRandomBuffer(8);
|
var CONNECTION_NONCE = Random.getPseudoRandomBuffer(8);
|
||||||
var PROTOCOL_VERSION = 70000;
|
var PROTOCOL_VERSION = 70000;
|
||||||
|
@ -303,7 +304,17 @@ Addresses.prototype.fromBuffer = function(payload) {
|
||||||
};
|
};
|
||||||
|
|
||||||
Addresses.prototype.getPayload = function() {
|
Addresses.prototype.getPayload = function() {
|
||||||
return BufferUtil.EMPTY_BUFFER; // TODO
|
var put = new Put();
|
||||||
|
put.varint(this.addresses.length);
|
||||||
|
|
||||||
|
for (var i = 0; i < this.addresses.length; i++) {
|
||||||
|
put.word32le(this.addresses[i].time);
|
||||||
|
put.word64le(this.addresses[i].services);
|
||||||
|
put.put(this.addresses[i].ip);
|
||||||
|
put.word16be(this.addresses[i].port);
|
||||||
|
}
|
||||||
|
|
||||||
|
return put.buffer();
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports.Addresses = Message.COMMANDS['addr'] = Addresses;
|
module.exports.Addresses = Message.COMMANDS['addr'] = Addresses;
|
||||||
|
@ -360,7 +371,14 @@ Alert.prototype.fromBuffer = function(payload) {
|
||||||
};
|
};
|
||||||
|
|
||||||
Alert.prototype.getPayload = function() {
|
Alert.prototype.getPayload = function() {
|
||||||
return BufferUtil.EMPTY_BUFFER; // TODO: Serialize
|
var put = new Put();
|
||||||
|
put.varint(this.payload.length);
|
||||||
|
put.put(this.payload);
|
||||||
|
|
||||||
|
put.varint(this.signature.length);
|
||||||
|
put.put(this.signature);
|
||||||
|
|
||||||
|
return put.buffer();
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports.Alert = Message.COMMANDS['alert'] = Alert;
|
module.exports.Alert = Message.COMMANDS['alert'] = Alert;
|
||||||
|
@ -382,7 +400,7 @@ Headers.prototype.fromBuffer = function(payload) {
|
||||||
|
|
||||||
this.headers = [];
|
this.headers = [];
|
||||||
for (var i = 0; i < count; i++) {
|
for (var i = 0; i < count; i++) {
|
||||||
var header = Block().fromBufferReader(parser);
|
var header = BlockHeaderModel._fromBufferReader(parser);
|
||||||
this.headers.push(header);
|
this.headers.push(header);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -390,7 +408,15 @@ Headers.prototype.fromBuffer = function(payload) {
|
||||||
};
|
};
|
||||||
|
|
||||||
Headers.prototype.getPayload = function() {
|
Headers.prototype.getPayload = function() {
|
||||||
return BufferUtil.EMPTY_BUFFER; // TODO: Serialize
|
var put = new Put();
|
||||||
|
put.varint(this.headers.length);
|
||||||
|
|
||||||
|
for (var i = 0; i < this.headers.length; i++) {
|
||||||
|
var buffer = this.headers[i].toBuffer();
|
||||||
|
put.put(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
return put.buffer();
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports.Headers = Message.COMMANDS['headers'] = Headers;
|
module.exports.Headers = Message.COMMANDS['headers'] = Headers;
|
||||||
|
@ -407,13 +433,12 @@ function Block(block) {
|
||||||
util.inherits(Block, Message);
|
util.inherits(Block, Message);
|
||||||
|
|
||||||
Block.prototype.fromBuffer = function(payload) {
|
Block.prototype.fromBuffer = function(payload) {
|
||||||
var parser = new BufferReader(payload);
|
this.block = BlockModel(payload);
|
||||||
this.block = Block().fromBufferReader(parser);
|
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
Block.prototype.getPayload = function() {
|
Block.prototype.getPayload = function() {
|
||||||
return BufferUtil.EMPTY_BUFFER; // TODO: Serialize
|
return this.block.toBuffer();
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports.Block = Message.COMMANDS['block'] = Block;
|
module.exports.Block = Message.COMMANDS['block'] = Block;
|
||||||
|
@ -430,13 +455,12 @@ function Transaction(transaction) {
|
||||||
util.inherits(Transaction, Message);
|
util.inherits(Transaction, Message);
|
||||||
|
|
||||||
Transaction.prototype.fromBuffer = function(payload) {
|
Transaction.prototype.fromBuffer = function(payload) {
|
||||||
var parser = new BufferReader(payload);
|
this.transaction = TransactionModel(payload);
|
||||||
this.transaction = Transaction().fromBufferReader(parser);
|
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
Transaction.prototype.getPayload = function() {
|
Transaction.prototype.getPayload = function() {
|
||||||
return BufferUtil.EMPTY_BUFFER; // TODO: Serialize
|
return this.transaction.toBuffer();
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports.Transaction = Message.COMMANDS['tx'] = Transaction;
|
module.exports.Transaction = Message.COMMANDS['tx'] = Transaction;
|
||||||
|
@ -474,7 +498,7 @@ GetBlocks.prototype.getPayload = function() {
|
||||||
put.word32le(this.version);
|
put.word32le(this.version);
|
||||||
put.varint(this.starts.length);
|
put.varint(this.starts.length);
|
||||||
|
|
||||||
for (var i = 0; i < starts.length; i++) {
|
for (var i = 0; i < this.starts.length; i++) {
|
||||||
if (this.starts[i].length != 32) {
|
if (this.starts[i].length != 32) {
|
||||||
throw new Error('Invalid hash length');
|
throw new Error('Invalid hash length');
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue