refactor example and ./lib.

This commit is contained in:
Christopher Jeffrey 2014-09-25 14:28:08 -07:00
parent 447fec3874
commit 6467c8a058
2 changed files with 58 additions and 29 deletions

View File

@ -1,46 +1,63 @@
#!/usr/bin/env node #!/usr/bin/env node
/**
* bitcoind.js example
*/
process.title = 'bitcoind.js'; process.title = 'bitcoind.js';
var util = require('util'); var util = require('util');
/**
* bitcoind
*/
var bitcoind = require('../')(); var bitcoind = require('../')();
var genesisBlock = '0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f'; var genesisBlock = '0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f';
var genesisTx = '0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b'; var genesisTx = '0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b';
bitcoind.start(function(err) { bitcoind.on('error', function(err) {
bitcoind.on('error', function(err) { print('bitcoind: error="%s"', err.message);
console.log('bitcoind: error="%s"', err.message); });
bitcoind.on('open', function(status) {
print('bitcoind: status="%s"', status);
// getBlocks(bitcoind);
// bitcoind.on('block', function(block) {
// print('Found block:');
// print(block);
// });
// bitcoind.on('tx', function(tx) {
// print('Found tx:');
// print(tx);
// });
bitcoind.once('tx', function(tx) {
print('Broadcasting tx...');
return tx.broadcast(function(err, hash, tx) {
if (err) throw err;
print('tx hash: %s', hash);
print(tx);
});
}); });
bitcoind.on('open', function(status) {
console.log('bitcoind: status="%s"', status); bitcoind.on('mptx', function(mptx) {
// getBlocks(bitcoind); print('Found mempool tx:');
// bitcoind.on('block', function(block) { print(mptx);
// print('Found block:');
// print(block);
// });
// bitcoind.on('tx', function(tx) {
// print('Found tx:');
// print(tx);
// });
bitcoind.once('tx', function(tx) {
console.log('Broadcasting tx...');
tx.broadcast(function(err, hash, tx) {
if (err) throw err;
console.log('tx hash: %s', hash);
print(tx);
});
});
bitcoind.on('mptx', function(mptx) {
print('Found mempool tx:');
print(mptx);
});
}); });
}); });
/**
* Helpers
*/
function getBlocks(bitcoind) { function getBlocks(bitcoind) {
setTimeout(function() { return setTimeout(function() {
(function next(hash) { return (function next(hash) {
return bitcoind.getBlock(hash, function(err, block) { return bitcoind.getBlock(hash, function(err, block) {
if (err) return print(err.message); if (err) return print(err.message);
print(block); print(block);
@ -56,7 +73,7 @@ function getBlocks(bitcoind) {
}); });
} }
if (process.argv[2] === '-r' && block.nextblockhash) { if (process.argv[2] === '-r' && block.nextblockhash) {
setTimeout(next.bind(null, block.nextblockhash), 500); return setTimeout(next.bind(null, block.nextblockhash), 500);
} }
}); });
})(genesisBlock); })(genesisBlock);
@ -68,5 +85,8 @@ function inspect(obj) {
} }
function print(obj) { function print(obj) {
if (typeof obj === 'string') {
return process.stdout.write(util.format.apply(util, arguments) + '\n');
}
return process.stdout.write(inspect(obj) + '\n'); return process.stdout.write(inspect(obj) + '\n');
} }

View File

@ -33,6 +33,12 @@ function Bitcoin(options) {
this.options = options; this.options = options;
Bitcoin.global = this; Bitcoin.global = this;
this.on('newListener', function(name) {
if (name === 'open') {
self.start();
}
});
} }
Bitcoin.prototype.__proto__ = EventEmitter.prototype; Bitcoin.prototype.__proto__ = EventEmitter.prototype;
@ -40,6 +46,9 @@ Bitcoin.prototype.__proto__ = EventEmitter.prototype;
Bitcoin.prototype.start = function(callback) { Bitcoin.prototype.start = function(callback) {
var self = this; var self = this;
if (this._started) return;
this._started = true;
var none = {}; var none = {};
var isSignal = {}; var isSignal = {};
var sigint = { name: 'SIGINT', signal: isSignal }; var sigint = { name: 'SIGINT', signal: isSignal };