// Copyright 2019 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.sys2;

/// The type of storage offered by this component.
enum StorageType {
    /// General data storage.
    DATA = 1;

    /// Cache storage that may be deleted at any time by the system.
    CACHE = 2;

    /// Meta storage that will be used by component manager to persist metadata
    /// and other information about the component
    META = 3;
};

/// Declares a storage capability backed by a directory from which data, cache,
/// or meta storage can be offered.
table StorageDecl {
    /// The name of this storage
    1: string:MAX_STORAGE_NAME_LENGTH name;

    /// The provider of the underlying directory capability relative to the
    /// component itself. Must be `realm`, `self`, or `child`.
    2: Ref source;

    /// The incoming path to the directory capability. If "source == SELF", this
    /// is a path in the component's outgoing directory. Otherwise, it is the
    /// path by which the capability was presented to the component.
    3: string:MAX_PATH_LENGTH source_path;
};
