Browse Source

git push origin developMerge branch 'debris-nobatch' into develop

cl-refactor
Gav Wood 10 years ago
parent
commit
4904896bf0
  1. 16
      libethereum/Client.cpp
  2. 6
      libethereum/Client.h
  3. 35
      libjsqrc/ethereumjs/dist/ethereum.js
  4. 4
      libjsqrc/ethereumjs/dist/ethereum.js.map
  5. 2
      libjsqrc/ethereumjs/dist/ethereum.min.js
  6. 35
      libjsqrc/ethereumjs/lib/providermanager.js

16
libethereum/Client.cpp

@ -568,10 +568,18 @@ void Client::doWork()
if (chrono::system_clock::now() - m_lastGarbageCollection > chrono::seconds(5))
{
// garbage collect on watches
Guard l(m_filterLock);
for (auto key: keysOf(m_watches))
if (chrono::system_clock::now() - m_watches[key].lastPoll > chrono::seconds(5))
uninstallWatch(key);
vector<unsigned> toUninstall;
{
Guard l(m_filterLock);
for (auto key: keysOf(m_watches))
if (chrono::system_clock::now() - m_watches[key].lastPoll > chrono::seconds(20))
{
toUninstall.push_back(key);
cnote << "GC: Uninstall" << key << "(" << chrono::duration_cast<chrono::seconds>(chrono::system_clock::now() - m_watches[key].lastPoll).count() << "s old)";
}
}
for (auto i: toUninstall)
uninstallWatch(i);
m_lastGarbageCollection = chrono::system_clock::now();
}
}

6
libethereum/Client.h

@ -89,12 +89,12 @@ static const LocalisedLogEntry InitialChange(SpecialLogEntry, 0);
struct ClientWatch
{
ClientWatch() {}
explicit ClientWatch(h256 _id): id(_id) {}
ClientWatch(): lastPoll(std::chrono::system_clock::now()) {}
explicit ClientWatch(h256 _id): id(_id), lastPoll(std::chrono::system_clock::now()) {}
h256 id;
LocalisedLogEntries changes = LocalisedLogEntries{ InitialChange };
mutable std::chrono::system_clock::time_point lastPoll;
mutable std::chrono::system_clock::time_point lastPoll = std::chrono::system_clock::now();
};
struct WatchChannel: public LogChannel { static const char* name() { return "(o)"; } static const int verbosity = 7; };

35
libjsqrc/ethereumjs/dist/ethereum.js

@ -1043,37 +1043,16 @@ var ProviderManager = function() {
var self = this;
var poll = function () {
if (self.provider) {
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("INVALID RESPONSE");
console.log("results:" + JSON.stringify(results));
console.log("data:" + JSON.stringify(data));
console.log("index:" + index);
console.log("result:" + JSON.stringify(result));
return;
}
self.polls.forEach(function (data) {
var result = self.send(data.data);
result = result.result;
// dont call the callback if result is not an array, or empty one
if (!(result instanceof Array) || result.length === 0) {
return;
}
data.callback(result);
if (!(result instanceof Array) || result.length === 0) {
return;
}
});il
data.callback(result);
});
}
setTimeout(poll, 1000);
};
poll();

4
libjsqrc/ethereumjs/dist/ethereum.js.map

File diff suppressed because one or more lines are too long

2
libjsqrc/ethereumjs/dist/ethereum.min.js

File diff suppressed because one or more lines are too long

35
libjsqrc/ethereumjs/lib/providermanager.js

@ -42,37 +42,16 @@ var ProviderManager = function() {
var self = this;
var poll = function () {
if (self.provider) {
var pollsBatch = self.polls.map(function (data) {
return data.data;
});
self.polls.forEach(function (data) {
var result = self.send(data.data);
var payload = jsonrpc.toBatchPayload(pollsBatch);
var results = self.provider.send(payload);
if (!(result instanceof Array) || result.length === 0) {
return;
}
self.polls.forEach(function (data, index) {
var result = results[index];
data.callback(result);
});
if (!jsonrpc.isValidResponse(result)) {
console.log("INVALID RESPONSE");
console.log("results:" + JSON.stringify(results));
console.log("data:" + JSON.stringify(data));
console.log("index:" + index);
console.log("result:" + JSON.stringify(result));
return;
}
result = result.result;
// dont call the callback if result is not an array, or empty one
if (!(result instanceof Array) || result.length === 0) {
return;
}
data.callback(result);
});il
}
setTimeout(poll, 1000);
};
poll();

Loading…
Cancel
Save