Add missing serializations

This commit is contained in:
Yemel Jardi 2014-12-10 11:28:27 -03:00
parent 56907c1a3b
commit 2d4b26a6a1
1 changed files with 37 additions and 13 deletions

View File

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