Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / mojo / services / test_service / test_request_tracker.mojom
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 module mojo.test {
6
7 // Various counters that services can periodically send to a
8 // TestTrackedRequestService for recording.
9 struct ServiceStats {
10   uint64 num_new_requests;
11   double health;
12 };
13
14 // A per-service summary of all the ServiceStats the
15 // TestTrackedRequestService has observed.
16 struct ServiceReport {
17   string? service_name;
18   uint64 total_requests;
19   double mean_health;
20 };
21
22 // A simple interface to obtain a "report" from all services that have
23 // opted to connect themselves to for request tracking.
24 interface TestTrackedRequestService {
25   GetReport() => (ServiceReport?[]? report);
26 };
27
28 // TestRequestTracker records ServiceStats for an individual service
29 // connection for aggregation in a TestTrackedRequestService.
30 [Client=TestRequestTrackerClient]
31 interface TestRequestTracker {
32   // Upload a ServiceStats for tracking.
33   RecordStats(uint64 client_id, ServiceStats? stats);
34 };
35
36 // The client-side contract for uploading ServiceStats to TestRequestTracker.
37 interface TestRequestTrackerClient {
38   const uint64 kInvalidId = 0;
39   // Handshake to tell the client its global identifier and get the name.
40   SetIdAndReturnName(uint64 id) => (string? service_name);
41 };
42
43 }  // module mojo.test