// Copyright 2021 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.feedback;

/// Used to externally control the data provider, say when disk space is becoming scarce or user
/// privacy settings change.
@discoverable
protocol DataProviderController {
    /// Disables persistent logging for the remainder of the boot and drops any logs that have been
    /// persisted. Returns when both have completed. Persistent logging cannot
    /// be re-enabled at the moment due to the fact that a device is expected to reboot soon after
    /// persistent logging has been disabled.
    ///
    /// Be aware that any snapshots created during the next boot will not have logs from the
    /// current boot and can make debugging difficult.
    DisableAndDropPersistentLogs() -> ();
};
