1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/services/test_service/test_request_tracker_client_impl.h"
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace mojo {
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace test {
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
10116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTestRequestTrackerClientImpl::TestRequestTrackerClientImpl(
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    TestRequestTrackerPtr tracker,
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    const std::string& service_name,
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    const mojo::Callback<void()>& callback)
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    : id_(0),
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      requests_since_upload_(0),
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      service_name_(service_name),
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      tracker_(tracker.Pass()),
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      tracking_connected_callback_(callback) {
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  tracker_.set_client(this);
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
22116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTestRequestTrackerClientImpl::~TestRequestTrackerClientImpl() {
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid TestRequestTrackerClientImpl::RecordNewRequest() {
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  requests_since_upload_++;
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  if (id_ == kInvalidId)
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch   return;
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  SendStats();
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid TestRequestTrackerClientImpl::SendStats() {
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  ServiceStatsPtr stats(ServiceStats::New());
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  stats->num_new_requests = requests_since_upload_;
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  stats->health = 0.7;
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  tracker_->RecordStats(id_, stats.Pass());
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  requests_since_upload_ = 0;
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid TestRequestTrackerClientImpl::SetIdAndReturnName(
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    uint64_t id,
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    const mojo::Callback<void(mojo::String)>& callback) {
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  assert(id != kInvalidId);
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  assert(id_ == kInvalidId);
45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  id_ = id;
46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  callback.Run(service_name_);
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  tracking_connected_callback_.Run();
48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  if (requests_since_upload_ == 0)
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    return;
50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  SendStats();
51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace test
54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace mojo
55