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

library fuchsia.diagnostics.test;

/// Controller for an embedded Archivist.
/// This is only to be used from tests.
[Discoverable]
protocol Controller {
    /// Consume/Drain all the pending messages and connection requests and clean exit.
    /// Clients should check for observer to die as this connection would be closed as
    /// soon as stop is processed by observer.
    Stop();
};
