// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

[DartPackage="mojo_services"]
module tracing;

// To participate in the tracing ecosystem, implement the TraceProvider
// interface and connect to the tracing app. Then, when the provider's Start()
// function is called collect tracing data and pass it back via the provided
// TraceRecorder interface up until Stop() is called.

interface TraceProvider {
  // Categories can either be the empty string to mean the default set of
  // categories or a comma-delimited list of categories to trace.
  StartTracing(string categories, TraceRecorder recorder);
  StopTracing();
};

interface TraceRecorder {
  Record(string json);
};

interface TraceCollector {
  // Request tracing data from all connected providers to stream to
  // |stream|.
  Start(handle<data_pipe_producer> stream, string categories);

  // Stop tracing and flush results to the |stream| passed in to Start().
  // Closes |stream| when all data is collected.
  StopAndFlush();
};
