|
|
@ -25,7 +25,7 @@ module.exports.buildMessage = function(command, payload) { |
|
|
|
var Message = MESSAGES[command]; |
|
|
|
try { |
|
|
|
console.log('Message Class', Message); |
|
|
|
return Message.fromBuffer(payload); |
|
|
|
return new Message().fromBuffer(payload); |
|
|
|
} catch (err) { |
|
|
|
console.log('Error while parrsing message', command); |
|
|
|
console.log(err); |
|
|
@ -40,7 +40,7 @@ function Version(subversion, nonce) { |
|
|
|
this.nonce = nonce || CONNECTION_NONCE; |
|
|
|
}; |
|
|
|
|
|
|
|
Version.fromBuffer = function(payload) { |
|
|
|
Version.prototype.fromBuffer = function(payload) { |
|
|
|
var message = new Version(); |
|
|
|
|
|
|
|
var parser = new BufferReader(payload); |
|
|
@ -73,13 +73,13 @@ Version.prototype.serialize = function() { |
|
|
|
|
|
|
|
module.exports.Version = Version; |
|
|
|
|
|
|
|
// ====== INV/GETDATA MESSAGE ======
|
|
|
|
// ====== INV MESSAGE ======
|
|
|
|
function Inventory(inventory) { |
|
|
|
this.command = 'inv'; |
|
|
|
this.inventory = inventory || []; |
|
|
|
} |
|
|
|
|
|
|
|
Inventory.fromBuffer = function(payload) { |
|
|
|
Inventory.prototype.fromBuffer = function(payload) { |
|
|
|
var message = new Inventory(); |
|
|
|
|
|
|
|
var parser = new BufferReader(payload); |
|
|
@ -106,21 +106,24 @@ Inventory.prototype.serialize = function() { |
|
|
|
return put.buffer(); |
|
|
|
}; |
|
|
|
|
|
|
|
module.exports.Inventory = Inventory; |
|
|
|
|
|
|
|
// ====== GETDATA MESSAGE ======
|
|
|
|
function GetData(inventory) { |
|
|
|
this.command = 'getdata'; |
|
|
|
this.inventory = inventory || []; |
|
|
|
} |
|
|
|
|
|
|
|
GetData.fromBuffer = Inventory.fromBuffer; |
|
|
|
GetData.prototype.serialize = Inventory.prototype.serialize; |
|
|
|
util.inherits(GetData, Inventory); |
|
|
|
module.exports.GetData = GetData; |
|
|
|
|
|
|
|
// ====== PING/PONG MESSAGE ======
|
|
|
|
// ====== PING MESSAGE ======
|
|
|
|
function Ping(nonce) { |
|
|
|
this.command = 'ping'; |
|
|
|
this.nonce = nonce || CONNECTION_NONCE; |
|
|
|
} |
|
|
|
|
|
|
|
Ping.fromBuffer = function(payload) { |
|
|
|
Ping.prototype.fromBuffer = function(payload) { |
|
|
|
var nonce = new BufferReader(payload).read(8); |
|
|
|
return new Ping(nonce); |
|
|
|
}; |
|
|
@ -129,14 +132,16 @@ Ping.prototype.serialize = function() { |
|
|
|
return this.nonce; |
|
|
|
}; |
|
|
|
|
|
|
|
module.exports.Ping = Ping; |
|
|
|
|
|
|
|
// ====== PONG MESSAGE ======
|
|
|
|
function Pong(nonce) { |
|
|
|
this.command = 'pong'; |
|
|
|
this.nonce = nonce || CONNECTION_NONCE; |
|
|
|
} |
|
|
|
|
|
|
|
Pong.fromBuffer = Ping.fromBuffer; |
|
|
|
Pong.prototype.serialize = Ping.prototype.serialize; |
|
|
|
|
|
|
|
util.inherits(Pong, Ping); |
|
|
|
module.exports.Pong = Pong; |
|
|
|
|
|
|
|
// ====== ADDR MESSAGE ======
|
|
|
|
function Addresses(nonce) { |
|
|
@ -144,7 +149,7 @@ function Addresses(nonce) { |
|
|
|
this.addresses = []; |
|
|
|
} |
|
|
|
|
|
|
|
Address.fromBuffer = function(payload) { |
|
|
|
Address.prototype.fromBuffer = function(payload) { |
|
|
|
var message = new Address(); |
|
|
|
|
|
|
|
var parser = new BufferReader(payload); |
|
|
@ -168,12 +173,14 @@ Address.prototype.serialize = function() { |
|
|
|
return BufferUtil.EMPTY_BUFFER; // TODO
|
|
|
|
}; |
|
|
|
|
|
|
|
module.exports.Address = Address; |
|
|
|
|
|
|
|
// ====== GETADDR MESSAGE ======
|
|
|
|
function GetAddresses() { |
|
|
|
this.command = 'getaddr'; |
|
|
|
} |
|
|
|
|
|
|
|
GetAddresses.fromBuffer = function() { |
|
|
|
GetAddresses.prototype.fromBuffer = function() { |
|
|
|
return new GetAddresses(); |
|
|
|
}; |
|
|
|
|
|
|
@ -181,13 +188,14 @@ GetAddresses.prototype.serialize = function() { |
|
|
|
return BufferUtil.EMPTY_BUFFER; |
|
|
|
}; |
|
|
|
|
|
|
|
module.exports.GetAddresses = GetAddresses; |
|
|
|
|
|
|
|
// ====== VERACK MESSAGE ======
|
|
|
|
function VerAck() { |
|
|
|
this.command = 'verack'; |
|
|
|
} |
|
|
|
|
|
|
|
VerAck.fromBuffer = function() { |
|
|
|
VerAck.prototype.fromBuffer = function() { |
|
|
|
return new VerAck(); |
|
|
|
}; |
|
|
|
|
|
|
@ -195,13 +203,15 @@ VerAck.prototype.serialize = function() { |
|
|
|
return BufferUtil.EMPTY_BUFFER; |
|
|
|
}; |
|
|
|
|
|
|
|
module.exports.VerAck = VerAck; |
|
|
|
|
|
|
|
// ====== REJECT MESSAGE ======
|
|
|
|
// TODO: Parse REJECT message
|
|
|
|
function Reject() { |
|
|
|
this.command = 'reject'; |
|
|
|
} |
|
|
|
|
|
|
|
Reject.fromBuffer = function() { |
|
|
|
Reject.prototype.fromBuffer = function() { |
|
|
|
return new Reject(); |
|
|
|
}; |
|
|
|
|
|
|
@ -209,12 +219,14 @@ Reject.prototype.serialize = function() { |
|
|
|
return BufferUtil.EMPTY_BUFFER; |
|
|
|
}; |
|
|
|
|
|
|
|
module.exports.Reject = Reject; |
|
|
|
|
|
|
|
// ====== ALERT MESSAGE ======
|
|
|
|
function Alert(payload) { |
|
|
|
this.command = 'reject'; |
|
|
|
} |
|
|
|
|
|
|
|
Alert.fromBuffer = function() { |
|
|
|
Alert.prototype.fromBuffer = function() { |
|
|
|
var message = new Alert(); |
|
|
|
|
|
|
|
var parser = new BufferReader(payload); |
|
|
@ -227,13 +239,15 @@ Alert.prototype.serialize = function() { |
|
|
|
return BufferUtil.EMPTY_BUFFER; // TODO: Serialize
|
|
|
|
}; |
|
|
|
|
|
|
|
module.exports.Alert = Alert; |
|
|
|
|
|
|
|
// ====== HEADERS MESSAGE ======
|
|
|
|
function Headers(blockheaders) { |
|
|
|
this.command = 'headers'; |
|
|
|
this.headers = blockheaders || []; |
|
|
|
} |
|
|
|
|
|
|
|
Headers.fromBuffer = function() { |
|
|
|
Headers.prototype.fromBuffer = function() { |
|
|
|
var message = new Headers(); |
|
|
|
|
|
|
|
var parser = new BufferReader(payload); |
|
|
@ -252,13 +266,15 @@ Headers.prototype.serialize = function() { |
|
|
|
return BufferUtil.EMPTY_BUFFER; // TODO: Serialize
|
|
|
|
}; |
|
|
|
|
|
|
|
module.exports.Headers = Headers; |
|
|
|
|
|
|
|
// ====== BLOCK MESSAGE ======
|
|
|
|
function Block(block) { |
|
|
|
this.command = 'block'; |
|
|
|
this.block = block; |
|
|
|
} |
|
|
|
|
|
|
|
Block.fromBuffer = function() { |
|
|
|
Block.prototype.fromBuffer = function() { |
|
|
|
var parser = new BufferReader(payload); |
|
|
|
var block = Block().fromBufferReader(parser); |
|
|
|
return new Block(block); |
|
|
@ -268,13 +284,15 @@ Block.prototype.serialize = function() { |
|
|
|
return BufferUtil.EMPTY_BUFFER; // TODO: Serialize
|
|
|
|
}; |
|
|
|
|
|
|
|
module.exports.Block = Block; |
|
|
|
|
|
|
|
// ====== TX MESSAGE ======
|
|
|
|
function Transaction(transaction) { |
|
|
|
this.command = 'tx'; |
|
|
|
this.transaction = transaction; |
|
|
|
} |
|
|
|
|
|
|
|
Transaction.fromBuffer = function() { |
|
|
|
Transaction.prototype.fromBuffer = function() { |
|
|
|
var parser = new BufferReader(payload); |
|
|
|
var transaction = Transaction().fromBufferReader(parser); |
|
|
|
return new Transaction(transaction); |
|
|
@ -284,7 +302,9 @@ Transaction.prototype.serialize = function() { |
|
|
|
return BufferUtil.EMPTY_BUFFER; // TODO: Serialize
|
|
|
|
}; |
|
|
|
|
|
|
|
// ====== GETBLOCKS/GETHEADERS MESSAGE ======
|
|
|
|
module.exports.Transaction = Transaction; |
|
|
|
|
|
|
|
// ====== GETBLOCKS MESSAGE ======
|
|
|
|
function GetBlocks(starts, stop) { |
|
|
|
this.command = 'getblocks'; |
|
|
|
this.version = PROTOCOL_VERSION; |
|
|
@ -292,7 +312,7 @@ function GetBlocks(starts, stop) { |
|
|
|
this.stop = stop || BufferUtil.NULL_HASH; |
|
|
|
} |
|
|
|
|
|
|
|
GetBlocks.fromBuffer = function() { |
|
|
|
GetBlocks.prototype.fromBuffer = function() { |
|
|
|
var message = new GetBlocks(); |
|
|
|
|
|
|
|
var parser = new BufferReader(payload); |
|
|
@ -326,6 +346,9 @@ GetBlocks.prototype.serialize = function() { |
|
|
|
return put.buffer(); |
|
|
|
}; |
|
|
|
|
|
|
|
module.exports.GetBlocks = GetBlocks; |
|
|
|
|
|
|
|
// ====== GETHEADERS MESSAGE ======
|
|
|
|
function GetHeaders(starts, stop) { |
|
|
|
this.command = 'getheaders'; |
|
|
|
this.version = PROTOCOL_VERSION; |
|
|
@ -333,7 +356,5 @@ function GetHeaders(starts, stop) { |
|
|
|
this.stop = stop || BufferUtil.NULL_HASH; |
|
|
|
} |
|
|
|
|
|
|
|
GetHeaders.fromBuffer = GetBlocks.fromBuffer; |
|
|
|
GetHeaders.prototype.serialize = GetBlocks.prototype.serialize; |
|
|
|
|
|
|
|
|
|
|
|
util.inherits(GetHeaders, GetBlocks); |
|
|
|
module.exports.GetHeaders = GetHeaders; |
|
|
|