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#ifndef MOJO_SERVICES_TEST_SERVICE_TEST_REQUEST_TRACKER_IMPL_H_ 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define MOJO_SERVICES_TEST_SERVICE_TEST_REQUEST_TRACKER_IMPL_H_ 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/memory/weak_ptr.h" 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/public/cpp/system/macros.h" 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/services/test_service/test_request_tracker.mojom.h" 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace mojo { 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass ApplicationConnection; 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace test { 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdochtypedef std::map<uint64_t, std::vector<ServiceStats> > AllRecordsMap; 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Shared state between all instances of TestRequestTrackerImpl 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// and the master TrackedRequestService. 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdochstruct TrackingContext { 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TrackingContext(); 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ~TrackingContext(); 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch AllRecordsMap records; 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch std::map<uint64_t, std::string> ids_to_names; 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch uint64_t next_id; 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}; 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass TestRequestTrackerImpl : public InterfaceImpl<TestRequestTracker> { 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public: 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) explicit TestRequestTrackerImpl(TrackingContext* context); 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual ~TestRequestTrackerImpl(); 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // TestRequestTracker. 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void RecordStats(uint64_t client_id, 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ServiceStatsPtr stats) MOJO_OVERRIDE; 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // InterfaceImpl override. 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void OnConnectionEstablished() MOJO_OVERRIDE; 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private: 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void UploaderNameCallback(uint64_t id, const mojo::String& name); 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TrackingContext* context_; 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch base::WeakPtrFactory<TestRequestTrackerImpl> weak_factory_; 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch MOJO_DISALLOW_COPY_AND_ASSIGN(TestRequestTrackerImpl); 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}; 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass TestTrackedRequestServiceImpl 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch : public InterfaceImpl<TestTrackedRequestService> { 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public: 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) explicit TestTrackedRequestServiceImpl(TrackingContext* context); 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual ~TestTrackedRequestServiceImpl(); 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // |TestTrackedRequestService| implementation. 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void GetReport( 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const mojo::Callback<void(mojo::Array<ServiceReportPtr>)>& callback) 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch MOJO_OVERRIDE; 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private: 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TrackingContext* context_; 60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch MOJO_DISALLOW_COPY_AND_ASSIGN(TestTrackedRequestServiceImpl); 61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}; 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace test 64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace mojo 65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif // MOJO_SERVICES_TEST_SERVICE_TEST_REQUEST_TRACKER_IMPL_H_ 67