diff options
Diffstat (limited to 'lib/providermanager.js')
-rw-r--r-- | lib/providermanager.js | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/lib/providermanager.js b/lib/providermanager.js index c3b121451..83e11605b 100644 --- a/lib/providermanager.js +++ b/lib/providermanager.js @@ -35,19 +35,26 @@ var web3 = require('./web3'); // jshint ignore:line * and provider manager polling mechanism is not used */ var ProviderManager = function() { - this.queued = []; this.polls = []; - this.ready = false; this.provider = undefined; this.id = 1; var self = this; var poll = function () { - if (self.provider && self.provider.poll) { + if (self.provider) { self.polls.forEach(function (data) { data.data._id = self.id; self.id++; - self.provider.poll(data.data, data.id); + var result = self.provider.send(data.data); + + result = JSON.parse(result); + + // dont call the callback if result is an error, empty array or false + if (result.error || (result.result instanceof Array ? result.result.length === 0 : !result.result)) { + return; + } + + data.callback(result); }); } setTimeout(poll, 12000); @@ -55,7 +62,7 @@ var ProviderManager = function() { poll(); }; -/// sends outgoing requests, if provider is not available, enqueue the request +/// sends outgoing requests ProviderManager.prototype.send = function(data) { data.args = data.args || []; @@ -74,26 +81,13 @@ ProviderManager.prototype.send = function(data) { /// setups provider, which will be used for sending messages ProviderManager.prototype.set = function(provider) { - if(this.provider !== undefined && this.provider.unload !== undefined) { - this.provider.unload(); - } - this.provider = provider; - this.ready = true; -}; - -/// @returns true if the provider i properly set -ProviderManager.prototype.installed = function() { - return this.provider !== undefined; }; /// this method is only used, when we do not have native qt bindings and have to do polling on our own /// should be callled, on start watching for eth/shh changes -ProviderManager.prototype.startPolling = function (data, pollId) { - if (!this.provider || !this.provider.poll) { - return; - } - this.polls.push({data: data, id: pollId}); +ProviderManager.prototype.startPolling = function (data, pollId, callback) { + this.polls.push({data: data, id: pollId, callback: callback}); }; /// should be called to stop polling for certain watch changes |