| Index: mojo/services/test_service/monitoring_uploader.cc
|
| diff --git a/mojo/services/test_service/monitoring_uploader.cc b/mojo/services/test_service/monitoring_uploader.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..053ddc3bcc9291bf96ade1fb3c424fbb87959863
|
| --- /dev/null
|
| +++ b/mojo/services/test_service/monitoring_uploader.cc
|
| @@ -0,0 +1,54 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "mojo/services/test_service/monitoring_uploader.h"
|
| +
|
| +namespace mojo {
|
| +namespace test {
|
| +
|
| +MonitoringUploader::MonitoringUploader(
|
| + ToyMonitoringServiceStatsRecorderPtr recorder,
|
| + const std::string& service_name,
|
| + const mojo::Callback<void()>& callback)
|
| + : id_(0),
|
| + requests_since_upload_(0),
|
| + service_name_(service_name),
|
| + recorder_(recorder.Pass()),
|
| + monitoring_connected_callback_(callback) {
|
| + recorder_.set_client(this);
|
| +}
|
| +
|
| +MonitoringUploader::~MonitoringUploader() {
|
| +}
|
| +
|
| +void MonitoringUploader::RecordNewRequest() {
|
| + requests_since_upload_++;
|
| + if (id_ == kInvalidId)
|
| + return;
|
| + SendStats();
|
| +}
|
| +
|
| +void MonitoringUploader::SendStats() {
|
| + ServiceStatsPtr stats(ServiceStats::New());
|
| + stats->num_new_requests = requests_since_upload_;
|
| + stats->health = 0.7;
|
| + recorder_->RecordStats(id_, stats.Pass());
|
| + requests_since_upload_ = 0;
|
| +}
|
| +
|
| +void MonitoringUploader::SetIdAndReturnName(
|
| + uint64_t id,
|
| + const mojo::Callback<void(mojo::String)>& callback) {
|
| + assert(id != kInvalidId);
|
| + assert(id_ == kInvalidId);
|
| + id_ = id;
|
| + callback.Run(service_name_);
|
| + monitoring_connected_callback_.Run();
|
| + if (requests_since_upload_ == 0)
|
| + return;
|
| + SendStats();
|
| +}
|
| +
|
| +} // namespace test
|
| +} // namespace mojo
|
|
|