Commit a7e14ad1 authored by yann300's avatar yann300 Committed by GitHub

Merge pull request #757 from ethereum/fixTxListener

Fix tx listener issues
parents 1248a800 cc872a7f
......@@ -62,20 +62,34 @@ class TxListener {
this.loopId = 'vm-listener'
} else {
this.loopId = setInterval(() => {
var currentLoopId = this.loopId
executionContext.web3().eth.getBlockNumber((error, blockNumber) => {
if (this.loopId === null || this.loopId === 'vm-listener') return
if (error) return console.log(error)
if (!this.lastBlock || blockNumber > this.lastBlock) {
if (currentLoopId === this.loopId && (!this.lastBlock || blockNumber > this.lastBlock)) {
if (!this.lastBlock) this.lastBlock = blockNumber - 1
var current = this.lastBlock + 1
this.lastBlock = blockNumber
executionContext.web3().eth.getBlock(this.lastBlock, true, (error, result) => {
if (!error) {
this._newBlock(Object.assign({type: 'web3'}, result))
while (blockNumber >= current) {
try {
this._manageBlock(current)
} catch (e) {
console.log(e)
}
current++
}
})
}
})
}, 2)
}, 2000)
}
}
_manageBlock (blockNumber) {
executionContext.web3().eth.getBlock(blockNumber, true, (error, result) => {
if (!error) {
this._newBlock(Object.assign({type: 'web3'}, result))
}
})
}
/**
......@@ -194,7 +208,7 @@ class TxListener {
fn: fn,
params: this._decodeInputParams(inputData.substring(8), getFunction(abi, fn))
}
return
return this._resolvedTransactions[tx.hash]
}
}
// fallback function
......
......@@ -22,6 +22,16 @@ class TxLogger {
opts.api.editorpanel.registerLogType('unknownTransaction', (data) => {
return renderUnknownTransaction(this, data)
})
opts.api.editorpanel.registerLogType('emptyBlock', (data) => {
return renderEmptyBlock(this, data)
})
opts.events.txListener.register('newBlock', (block) => {
if (!block.transactions.length) {
opts.api.editorpanel.log({type: 'emptyBlock', value: { block: block }})
}
})
opts.events.txListener.register('newTransaction', (tx) => {
log(this, tx, opts.api)
})
......@@ -66,11 +76,15 @@ function renderUnknownTransaction (self, data) {
return yo`<span id="tx${data.tx.hash}">${context(self, data.tx)}: from:${helper.shortenAddress(data.tx.from)}, to:${to}, value:${value(data.tx.value)} wei, data:${helper.shortenHexData((data.tx.input))}, hash:${helper.shortenHexData((data.tx.hash))}, <button onclick=${detail}>Details</button> <button onclick=${debug}>Debug</button></span>`
}
function renderEmptyBlock (self, data) {
return yo`<span>block ${data.block.number} - O transactions</span>`
}
function context (self, tx) {
if (executionContext.getProvider() === 'vm') {
return yo`<span>(vm)</span>`
} else {
return yo`<span>block:${tx.blockNumber}, txIndex:${tx.transactionIndex}`
return yo`<span>block:${tx.blockNumber}, txIndex:${tx.transactionIndex}</span>`
}
}
......
......@@ -69,7 +69,7 @@ TxRunner.prototype.execute = function (args, callback) {
return callback(err, resp)
}
tryTillResponse(self.web3, resp, callback)
tryTillResponse(resp, callback)
})
})
}
......
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