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