aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/mist/assets/ext/ethereum.js/lib/providermanager.js
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/mist/assets/ext/ethereum.js/lib/providermanager.js')
-rw-r--r--cmd/mist/assets/ext/ethereum.js/lib/providermanager.js45
1 files changed, 27 insertions, 18 deletions
diff --git a/cmd/mist/assets/ext/ethereum.js/lib/providermanager.js b/cmd/mist/assets/ext/ethereum.js/lib/providermanager.js
index 25cd14288..55f166bcd 100644
--- a/cmd/mist/assets/ext/ethereum.js/lib/providermanager.js
+++ b/cmd/mist/assets/ext/ethereum.js/lib/providermanager.js
@@ -23,7 +23,9 @@
* @date 2014
*/
-var web3 = require('./web3'); // jshint ignore:line
+var web3 = require('./web3');
+var jsonrpc = require('./jsonrpc');
+
/**
* Provider manager object prototype
@@ -37,25 +39,35 @@ var web3 = require('./web3'); // jshint ignore:line
var ProviderManager = function() {
this.polls = [];
this.provider = undefined;
- this.id = 1;
var self = this;
var poll = function () {
if (self.provider) {
- self.polls.forEach(function (data) {
- data.data._id = self.id;
- self.id++;
- var result = self.provider.send(data.data);
-
- result = JSON.parse(result);
+ var pollsBatch = self.polls.map(function (data) {
+ return data.data;
+ });
+
+ var payload = jsonrpc.toBatchPayload(pollsBatch);
+ var results = self.provider.send(payload);
+
+ self.polls.forEach(function (data, index) {
+ var result = results[index];
+ if (!jsonrpc.isValidResponse(result)) {
+ console.log(result);
+ return;
+ }
+
+ result = result.result;
// dont call the callback if result is not an array, or empty one
- if (result.error || !(result.result instanceof Array) || result.result.length === 0) {
+ if (!(result instanceof Array) || result.length === 0) {
return;
}
- data.callback(result.result);
+ data.callback(result);
+
});
+
}
setTimeout(poll, 1000);
};
@@ -63,22 +75,19 @@ var ProviderManager = function() {
};
/// sends outgoing requests
+/// @params data - an object with at least 'method' property
ProviderManager.prototype.send = function(data) {
-
- data.args = data.args || [];
- data._id = this.id++;
+ var payload = jsonrpc.toPayload(data.method, data.params);
if (this.provider === undefined) {
console.error('provider is not set');
return null;
}
- //TODO: handle error here?
- var result = this.provider.send(data);
- result = JSON.parse(result);
+ var result = this.provider.send(payload);
- if (result.error) {
- console.log(result.error);
+ if (!jsonrpc.isValidResponse(result)) {
+ console.log(result);
return null;
}