Commit 1b8a723d authored by Alex Beregszaszi's avatar Alex Beregszaszi

Use async.waterfall in runTx

parent 7ff0654b
......@@ -16,6 +16,7 @@
"test": "node test/index.js"
},
"devDependencies": {
"async": "^2.1.2",
"babel-cli": "^6.16.0",
"babel-plugin-transform-es2015-block-scoping": "^6.15.0",
"babel-plugin-transform-es2015-template-literals": "^6.8.0",
......
......@@ -9,6 +9,7 @@ var EthJSBlock = require('ethereumjs-block')
var BN = ethJSUtil.BN
var EventManager = require('./lib/eventManager')
var crypto = require('crypto')
var async = require('async')
/*
trigger debugRequested
......@@ -679,41 +680,61 @@ function tryTillResponse (web3, txhash, done) {
UniversalDApp.prototype.runTx = function (args, cb) {
var self = this
var tx = {
to: args.to,
data: args.data
}
async.waterfall([
// query gas limit
function (callback) {
tx.gasLimit = 3000000
var gasLimit = 3000000
// NOTE: getGasLimit should be async
if (self.getGasLimit) {
try {
gasLimit = self.getGasLimit()
tx.gasLimit = self.getGasLimit()
callback()
} catch (e) {
return cb(e)
callback(e)
}
} else {
callback()
}
},
// query value
function (callback) {
tx.value = 0
var value = 0
// NOTE: getValue should be async
if (self.getValue) {
try {
value = self.getValue()
tx.value = self.getValue()
callback()
} catch (e) {
return cb(e)
callback(e)
}
} else {
callback()
}
var from
},
// query address
function (callback) {
// NOTE: getAddress should be async
if (self.getAddress) {
from = self.getAddress()
tx.from = self.getAddress()
} else if (self.executionContext.isVM()) {
from = Object.keys(self.accounts)[0]
tx.from = Object.keys(self.accounts)[0]
} else {
from = self.web3.eth.accounts[0]
tx.from = self.web3.eth.accounts[0]
}
return this.rawRunTx({
from: args.from,
to: args.to,
data: args.data,
value: value,
gasLimit: gasLimit
}, cb)
callback()
},
// run transaction
function (callback) {
self.rawRunTx(tx, callback)
}
], cb)
}
UniversalDApp.prototype.rawRunTx = function (args, cb) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment