Chromium Code Reviews| Index: remoting/webapp/me2mom/log_to_server.js |
| diff --git a/remoting/webapp/me2mom/log_to_server.js b/remoting/webapp/me2mom/log_to_server.js |
| index 017bc1afe21c0ce4816f1a8d4fcb05803e871f53..2dfc4326344a4031e1c23077764e553692368d87 100644 |
| --- a/remoting/webapp/me2mom/log_to_server.js |
| +++ b/remoting/webapp/me2mom/log_to_server.js |
| @@ -16,7 +16,10 @@ var remoting = remoting || {}; |
| * @constructor |
| */ |
| remoting.LogToServer = function() { |
| - /** @type Array.<string> */ this.pendingEntries = []; |
| + /** @type Array.<string> */ |
| + this.pendingEntries = []; |
| + /** @type {remoting.StatsAccumulator} */ |
| + this.statsAccumulator = new remoting.StatsAccumulator(); |
| }; |
| // Local storage keys. |
| @@ -56,6 +59,44 @@ remoting.LogToServer.prototype.logClientSessionStateChange = |
| entry.addWebappVersionField(); |
| entry.addIdField(this.getId()); |
| this.log(entry); |
| + // Don't accumulate connection statistics across state changes. |
| + this.logAccumulatedStatistics(); |
| + this.statsAccumulator.empty(); |
| +}; |
| + |
| +/** |
| + * Logs connection statistics. |
| + * @param {Object.<string, number>} stats the connection statistics |
| + */ |
| +remoting.LogToServer.prototype.logStatistics = function(stats) { |
| + // Store the statistics. |
| + this.statsAccumulator.add(stats); |
| + // Send statistics to the server if they've been accumulating for at least |
| + // 60 seconds. |
| + if (this.statsAccumulator.getTimeSinceFirstValue() >= 60 * 1000) { |
|
Jamie
2011/12/09 06:58:34
Optional: How would you feel about replacing this
simonmorris
2011/12/09 18:40:36
One problem is that LogToServer would then have to
|
| + this.logAccumulatedStatistics(); |
| + } |
| +}; |
| + |
| +/** |
| + * Moves connection statistics from the accumulator to the log server. |
| + * |
| + * If all the statistics are zero, then the accumulator is still emptied, |
| + * but the statistics are not sent to the log server. |
| + * |
| + * @private |
| + */ |
| +remoting.LogToServer.prototype.logAccumulatedStatistics = function() { |
| + var entry = remoting.ServerLogEntry.prototype.makeStats( |
| + this.statsAccumulator); |
| + if (entry) { |
| + entry.addHostFields(); |
| + entry.addChromeVersionField(); |
| + entry.addWebappVersionField(); |
| + entry.addIdField(this.getId()); |
| + this.log(entry); |
| + } |
| + this.statsAccumulator.empty(); |
| }; |
| /** |