diff options
author | John Abd-El-Malek <jam@chromium.org> | 2015-04-02 10:29:35 -0700 |
---|---|---|
committer | John Abd-El-Malek <jam@chromium.org> | 2015-04-02 17:31:11 +0000 |
commit | 537a670451020f4764d511cbdf8e30ec91ef897c (patch) | |
tree | d2868da2b0d33dc7ed8c8e709ae4a7f5bd5aefd8 /mojo/services/test_service/test_request_tracker_impl.cc | |
parent | 83653dd1da59dfa7ddd9e48d4cd507a11cefd968 (diff) | |
download | chromium_src-537a670451020f4764d511cbdf8e30ec91ef897c.zip chromium_src-537a670451020f4764d511cbdf8e30ec91ef897c.tar.gz chromium_src-537a670451020f4764d511cbdf8e30ec91ef897c.tar.bz2 |
Get mojo_shell building inside chromium checkout.
This brings in mojo_shell and the necessary services to make html_viewer work.
This is copied from the Mojo repo at 272fbba5887d66fc0111e2ab44c1edf67b7f23e0.
R=scottmg@chromium.org
Review URL: https://codereview.chromium.org/1049993002
Cr-Commit-Position: refs/heads/master@{#323528}
Diffstat (limited to 'mojo/services/test_service/test_request_tracker_impl.cc')
-rw-r--r-- | mojo/services/test_service/test_request_tracker_impl.cc | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/mojo/services/test_service/test_request_tracker_impl.cc b/mojo/services/test_service/test_request_tracker_impl.cc new file mode 100644 index 0000000..09fa4d5 --- /dev/null +++ b/mojo/services/test_service/test_request_tracker_impl.cc @@ -0,0 +1,75 @@ +// 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/test_request_tracker_impl.h" + +namespace mojo { +namespace test { + +TrackingContext::TrackingContext() : next_id(1) { +} + +TrackingContext::~TrackingContext() { +} + +TestRequestTrackerImpl::TestRequestTrackerImpl( + InterfaceRequest<TestRequestTracker> request, + TrackingContext* context) + : context_(context), binding_(this, request.Pass()), weak_factory_(this) { +} + +TestRequestTrackerImpl::~TestRequestTrackerImpl() { +} + +void TestRequestTrackerImpl::RecordStats( + uint64_t client_id, + ServiceStatsPtr stats) { + assert(context_->ids_to_names.find(client_id) != + context_->ids_to_names.end()); + context_->records[client_id].push_back(*stats); +} + +void TestRequestTrackerImpl::SetNameAndReturnId( + const String& service_name, + const Callback<void(uint64_t id)>& callback) { + uint64_t id = context_->next_id++; + callback.Run(id); + DCHECK(context_->ids_to_names.find(id) == context_->ids_to_names.end()); + context_->ids_to_names[id] = service_name; +} + +TestTrackedRequestServiceImpl::TestTrackedRequestServiceImpl( + InterfaceRequest<TestTrackedRequestService> request, + TrackingContext* context) + : context_(context), binding_(this, request.Pass()) { +} + +TestTrackedRequestServiceImpl::~TestTrackedRequestServiceImpl() { +} + +void TestTrackedRequestServiceImpl::GetReport( + const mojo::Callback<void(mojo::Array<ServiceReportPtr>)>& callback) { + mojo::Array<ServiceReportPtr> reports; + for (AllRecordsMap::const_iterator it1 = context_->records.begin(); + it1 != context_->records.end(); ++it1) { + ServiceReportPtr report(ServiceReport::New()); + report->service_name = context_->ids_to_names[it1->first]; + double mean_health_numerator = 0; + size_t num_samples = it1->second.size(); + if (num_samples == 0) + continue; + + for (std::vector<ServiceStats>::const_iterator it2 = it1->second.begin(); + it2 != it1->second.end(); ++it2) { + report->total_requests += it2->num_new_requests; + mean_health_numerator += it2->health; + } + report->mean_health = mean_health_numerator / num_samples; + reports.push_back(report.Pass()); + } + callback.Run(reports.Pass()); +} + +} // namespace test +} // namespace mojo |