Home | History | Annotate | Download | only in test_service
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef MOJO_SERVICES_TEST_SERVICE_TEST_REQUEST_TRACKER_IMPL_H_
      6 #define MOJO_SERVICES_TEST_SERVICE_TEST_REQUEST_TRACKER_IMPL_H_
      7 
      8 #include "base/memory/weak_ptr.h"
      9 #include "mojo/public/cpp/system/macros.h"
     10 #include "mojo/services/test_service/test_request_tracker.mojom.h"
     11 
     12 namespace mojo {
     13 class ApplicationConnection;
     14 namespace test {
     15 
     16 typedef std::map<uint64_t, std::vector<ServiceStats> > AllRecordsMap;
     17 
     18 // Shared state between all instances of TestRequestTrackerImpl
     19 // and the master TrackedRequestService.
     20 struct TrackingContext {
     21   TrackingContext();
     22   ~TrackingContext();
     23   AllRecordsMap records;
     24   std::map<uint64_t, std::string> ids_to_names;
     25   uint64_t next_id;
     26 };
     27 
     28 class TestRequestTrackerImpl : public InterfaceImpl<TestRequestTracker> {
     29  public:
     30   explicit TestRequestTrackerImpl(TrackingContext* context);
     31   virtual ~TestRequestTrackerImpl();
     32 
     33   // TestRequestTracker.
     34   virtual void RecordStats(uint64_t client_id,
     35                            ServiceStatsPtr stats) MOJO_OVERRIDE;
     36 
     37   // InterfaceImpl override.
     38   virtual void OnConnectionEstablished() MOJO_OVERRIDE;
     39 
     40  private:
     41   void UploaderNameCallback(uint64_t id, const mojo::String& name);
     42   TrackingContext* context_;
     43   base::WeakPtrFactory<TestRequestTrackerImpl> weak_factory_;
     44   MOJO_DISALLOW_COPY_AND_ASSIGN(TestRequestTrackerImpl);
     45 };
     46 
     47 class TestTrackedRequestServiceImpl
     48     : public InterfaceImpl<TestTrackedRequestService> {
     49  public:
     50   explicit TestTrackedRequestServiceImpl(TrackingContext* context);
     51   virtual ~TestTrackedRequestServiceImpl();
     52 
     53   // |TestTrackedRequestService| implementation.
     54   virtual void GetReport(
     55       const mojo::Callback<void(mojo::Array<ServiceReportPtr>)>& callback)
     56           MOJO_OVERRIDE;
     57 
     58  private:
     59   TrackingContext* context_;
     60   MOJO_DISALLOW_COPY_AND_ASSIGN(TestTrackedRequestServiceImpl);
     61 };
     62 
     63 }  // namespace test
     64 }  // namespace mojo
     65 
     66 #endif  // MOJO_SERVICES_TEST_SERVICE_TEST_REQUEST_TRACKER_IMPL_H_
     67