Merge pull request #757 from ethereum/fixTxListener

Fix tx listener issues
pull/1/head
yann300 8 years ago committed by GitHub
commit a7e14ad141
  1. 28
      src/app/execution/txListener.js
  2. 16
      src/app/execution/txLogger.js
  3. 2
      src/app/execution/txRunner.js

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

Loading…
Cancel
Save