// 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.io2;

table DirectoryEntry {
    /// Name of the entry.
    1: Name name;

    /// Describes the kinds of representations supported by the entry.
    2: NodeProtocolSet protocols;

    /// Describes the kinds of operations supported by the entry.
    3: Abilities abilities;
};

/// The maximum number of directory entires or watcher events returned
/// in a batch by a hanging-get pattern.
const uint64 MAX_DIRECTORY_BATCH_SIZE = 8192;
