blob: 6ff0dbd85d6f63d931f3607b285de845f9dd5c64 [file] [log] [blame]
// WARNING: This file is machine generated by fidlgen.
#pragma once
#include <lib/fidl/internal.h>
#include <lib/fidl/txn_header.h>
#include <lib/fidl/llcpp/array.h>
#include <lib/fidl/llcpp/coding.h>
#include <lib/fidl/llcpp/connect_service.h>
#include <lib/fidl/llcpp/service_handler_interface.h>
#include <lib/fidl/llcpp/string_view.h>
#include <lib/fidl/llcpp/sync_call.h>
#include <lib/fidl/llcpp/traits.h>
#include <lib/fidl/llcpp/transaction.h>
#include <lib/fidl/llcpp/vector_view.h>
#include <lib/fit/function.h>
#include <lib/zx/channel.h>
#include <lib/zx/event.h>
#include <lib/zx/eventpair.h>
#include <lib/zx/handle.h>
#include <lib/zx/socket.h>
#include <lib/zx/vmo.h>
#include <zircon/fidl.h>
#include <fuchsia/mem/llcpp/fidl.h>
namespace llcpp {
namespace fuchsia {
namespace io {
struct WatchedEvent;
struct Vmofile;
struct Tty;
struct StreamSocket;
class DirectoryWatcher;
struct Socket;
struct Service;
enum class SeekOrigin : uint32_t {
START = 0u,
CURRENT = 1u,
END = 2u,
};
struct Pipe;
struct NodeAttributes;
struct FilesystemInfo;
struct FileObject;
struct DirectoryObject;
struct Device;
struct DatagramSocket;
struct NodeInfo;
class Node;
class File;
class Directory;
class DirectoryAdmin;
extern "C" const fidl_type_t v1_fuchsia_io_NodeInfoTable;
// Describes how the connection to an should be handled, as well as
// how to interpret the optional handle.
//
// Refer to `Node.Describe()` and `Node.OnOpen()` for usage.
struct NodeInfo {
NodeInfo() : ordinal_(Ordinal::Invalid), envelope_{} {}
enum class Tag : fidl_xunion_tag_t {
kService = 1, // 0x1
kFile = 2, // 0x2
kDirectory = 3, // 0x3
kPipe = 4, // 0x4
kVmofile = 5, // 0x5
kDevice = 6, // 0x6
kTty = 7, // 0x7
kSocket = 8, // 0x8
kDatagramSocket = 9, // 0x9
kStreamSocket = 10, // 0xa
};
bool has_invalid_tag() const { return ordinal_ == Ordinal::Invalid; }
bool is_service() const { return ordinal() == Ordinal::kService; }
static NodeInfo WithService(::llcpp::fuchsia::io::Service* val) {
NodeInfo result;
result.set_service(val);
return result;
}
void set_service(::llcpp::fuchsia::io::Service* elem) {
ordinal_ = Ordinal::kService;
envelope_.data = static_cast<void*>(elem);
}
::llcpp::fuchsia::io::Service& mutable_service() {
ZX_ASSERT(ordinal() == Ordinal::kService);
return *static_cast<::llcpp::fuchsia::io::Service*>(envelope_.data);
}
const ::llcpp::fuchsia::io::Service& service() const {
ZX_ASSERT(ordinal() == Ordinal::kService);
return *static_cast<::llcpp::fuchsia::io::Service*>(envelope_.data);
}
bool is_file() const { return ordinal() == Ordinal::kFile; }
static NodeInfo WithFile(::llcpp::fuchsia::io::FileObject* val) {
NodeInfo result;
result.set_file(val);
return result;
}
void set_file(::llcpp::fuchsia::io::FileObject* elem) {
ordinal_ = Ordinal::kFile;
envelope_.data = static_cast<void*>(elem);
}
::llcpp::fuchsia::io::FileObject& mutable_file() {
ZX_ASSERT(ordinal() == Ordinal::kFile);
return *static_cast<::llcpp::fuchsia::io::FileObject*>(envelope_.data);
}
const ::llcpp::fuchsia::io::FileObject& file() const {
ZX_ASSERT(ordinal() == Ordinal::kFile);
return *static_cast<::llcpp::fuchsia::io::FileObject*>(envelope_.data);
}
bool is_directory() const { return ordinal() == Ordinal::kDirectory; }
static NodeInfo WithDirectory(::llcpp::fuchsia::io::DirectoryObject* val) {
NodeInfo result;
result.set_directory(val);
return result;
}
void set_directory(::llcpp::fuchsia::io::DirectoryObject* elem) {
ordinal_ = Ordinal::kDirectory;
envelope_.data = static_cast<void*>(elem);
}
::llcpp::fuchsia::io::DirectoryObject& mutable_directory() {
ZX_ASSERT(ordinal() == Ordinal::kDirectory);
return *static_cast<::llcpp::fuchsia::io::DirectoryObject*>(envelope_.data);
}
const ::llcpp::fuchsia::io::DirectoryObject& directory() const {
ZX_ASSERT(ordinal() == Ordinal::kDirectory);
return *static_cast<::llcpp::fuchsia::io::DirectoryObject*>(envelope_.data);
}
bool is_pipe() const { return ordinal() == Ordinal::kPipe; }
static NodeInfo WithPipe(::llcpp::fuchsia::io::Pipe* val) {
NodeInfo result;
result.set_pipe(val);
return result;
}
void set_pipe(::llcpp::fuchsia::io::Pipe* elem) {
ordinal_ = Ordinal::kPipe;
envelope_.data = static_cast<void*>(elem);
}
::llcpp::fuchsia::io::Pipe& mutable_pipe() {
ZX_ASSERT(ordinal() == Ordinal::kPipe);
return *static_cast<::llcpp::fuchsia::io::Pipe*>(envelope_.data);
}
const ::llcpp::fuchsia::io::Pipe& pipe() const {
ZX_ASSERT(ordinal() == Ordinal::kPipe);
return *static_cast<::llcpp::fuchsia::io::Pipe*>(envelope_.data);
}
bool is_vmofile() const { return ordinal() == Ordinal::kVmofile; }
static NodeInfo WithVmofile(::llcpp::fuchsia::io::Vmofile* val) {
NodeInfo result;
result.set_vmofile(val);
return result;
}
void set_vmofile(::llcpp::fuchsia::io::Vmofile* elem) {
ordinal_ = Ordinal::kVmofile;
envelope_.data = static_cast<void*>(elem);
}
::llcpp::fuchsia::io::Vmofile& mutable_vmofile() {
ZX_ASSERT(ordinal() == Ordinal::kVmofile);
return *static_cast<::llcpp::fuchsia::io::Vmofile*>(envelope_.data);
}
const ::llcpp::fuchsia::io::Vmofile& vmofile() const {
ZX_ASSERT(ordinal() == Ordinal::kVmofile);
return *static_cast<::llcpp::fuchsia::io::Vmofile*>(envelope_.data);
}
bool is_device() const { return ordinal() == Ordinal::kDevice; }
static NodeInfo WithDevice(::llcpp::fuchsia::io::Device* val) {
NodeInfo result;
result.set_device(val);
return result;
}
void set_device(::llcpp::fuchsia::io::Device* elem) {
ordinal_ = Ordinal::kDevice;
envelope_.data = static_cast<void*>(elem);
}
::llcpp::fuchsia::io::Device& mutable_device() {
ZX_ASSERT(ordinal() == Ordinal::kDevice);
return *static_cast<::llcpp::fuchsia::io::Device*>(envelope_.data);
}
const ::llcpp::fuchsia::io::Device& device() const {
ZX_ASSERT(ordinal() == Ordinal::kDevice);
return *static_cast<::llcpp::fuchsia::io::Device*>(envelope_.data);
}
bool is_tty() const { return ordinal() == Ordinal::kTty; }
static NodeInfo WithTty(::llcpp::fuchsia::io::Tty* val) {
NodeInfo result;
result.set_tty(val);
return result;
}
void set_tty(::llcpp::fuchsia::io::Tty* elem) {
ordinal_ = Ordinal::kTty;
envelope_.data = static_cast<void*>(elem);
}
::llcpp::fuchsia::io::Tty& mutable_tty() {
ZX_ASSERT(ordinal() == Ordinal::kTty);
return *static_cast<::llcpp::fuchsia::io::Tty*>(envelope_.data);
}
const ::llcpp::fuchsia::io::Tty& tty() const {
ZX_ASSERT(ordinal() == Ordinal::kTty);
return *static_cast<::llcpp::fuchsia::io::Tty*>(envelope_.data);
}
bool is_socket() const { return ordinal() == Ordinal::kSocket; }
static NodeInfo WithSocket(::llcpp::fuchsia::io::Socket* val) {
NodeInfo result;
result.set_socket(val);
return result;
}
void set_socket(::llcpp::fuchsia::io::Socket* elem) {
ordinal_ = Ordinal::kSocket;
envelope_.data = static_cast<void*>(elem);
}
::llcpp::fuchsia::io::Socket& mutable_socket() {
ZX_ASSERT(ordinal() == Ordinal::kSocket);
return *static_cast<::llcpp::fuchsia::io::Socket*>(envelope_.data);
}
const ::llcpp::fuchsia::io::Socket& socket() const {
ZX_ASSERT(ordinal() == Ordinal::kSocket);
return *static_cast<::llcpp::fuchsia::io::Socket*>(envelope_.data);
}
bool is_datagram_socket() const { return ordinal() == Ordinal::kDatagramSocket; }
static NodeInfo WithDatagramSocket(::llcpp::fuchsia::io::DatagramSocket* val) {
NodeInfo result;
result.set_datagram_socket(val);
return result;
}
void set_datagram_socket(::llcpp::fuchsia::io::DatagramSocket* elem) {
ordinal_ = Ordinal::kDatagramSocket;
envelope_.data = static_cast<void*>(elem);
}
::llcpp::fuchsia::io::DatagramSocket& mutable_datagram_socket() {
ZX_ASSERT(ordinal() == Ordinal::kDatagramSocket);
return *static_cast<::llcpp::fuchsia::io::DatagramSocket*>(envelope_.data);
}
const ::llcpp::fuchsia::io::DatagramSocket& datagram_socket() const {
ZX_ASSERT(ordinal() == Ordinal::kDatagramSocket);
return *static_cast<::llcpp::fuchsia::io::DatagramSocket*>(envelope_.data);
}
bool is_stream_socket() const { return ordinal() == Ordinal::kStreamSocket; }
static NodeInfo WithStreamSocket(::llcpp::fuchsia::io::StreamSocket* val) {
NodeInfo result;
result.set_stream_socket(val);
return result;
}
void set_stream_socket(::llcpp::fuchsia::io::StreamSocket* elem) {
ordinal_ = Ordinal::kStreamSocket;
envelope_.data = static_cast<void*>(elem);
}
::llcpp::fuchsia::io::StreamSocket& mutable_stream_socket() {
ZX_ASSERT(ordinal() == Ordinal::kStreamSocket);
return *static_cast<::llcpp::fuchsia::io::StreamSocket*>(envelope_.data);
}
const ::llcpp::fuchsia::io::StreamSocket& stream_socket() const {
ZX_ASSERT(ordinal() == Ordinal::kStreamSocket);
return *static_cast<::llcpp::fuchsia::io::StreamSocket*>(envelope_.data);
}
Tag which() const {
ZX_ASSERT(!has_invalid_tag());
return static_cast<Tag>(ordinal());
}
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_NodeInfoTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 24;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 24;
static constexpr bool HasPointer = true;
private:
enum class Ordinal : fidl_xunion_tag_t {
Invalid = 0,
kService = 1, // 0x1
kFile = 2, // 0x2
kDirectory = 3, // 0x3
kPipe = 4, // 0x4
kVmofile = 5, // 0x5
kDevice = 6, // 0x6
kTty = 7, // 0x7
kSocket = 8, // 0x8
kDatagramSocket = 9, // 0x9
kStreamSocket = 10, // 0xa
};
Ordinal ordinal() const {
return ordinal_;
}
static void SizeAndOffsetAssertionHelper();
Ordinal ordinal_;
FIDL_ALIGNDECL
fidl_envelope_t envelope_;
};
extern "C" const fidl_type_t v1_fuchsia_io_WatchedEventTable;
// WatchedEvent describes events returned from a DirectoryWatcher.
struct WatchedEvent {
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_WatchedEventTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 256;
static constexpr bool HasPointer = true;
uint8_t event = {};
uint8_t len = {};
::fidl::VectorView<uint8_t> name = {};
};
// Used by `Directory.Watch`. Requests transmission of `WATCH_EVENT_REMOVED`.
constexpr uint32_t WATCH_MASK_REMOVED = 4u;
// Used by `Directory.Watch`. Requests transmission of `WATCH_EVENT_IDLE`.
constexpr uint32_t WATCH_MASK_IDLE = 16u;
// Used by `Directory.Watch`. Requests transmission of `WATCH_EVENT_EXISTING`.
constexpr uint32_t WATCH_MASK_EXISTING = 8u;
// Used by `Directory.Watch`. Requests transmission of `WATCH_EVENT_DELETED`.
constexpr uint32_t WATCH_MASK_DELETED = 1u;
// Used by `Directory.Watch`. Requests transmission of all watcher events.
constexpr uint32_t WATCH_MASK_ALL = 31u;
// Used by `Directory.Watch`. Requests transmission of `WATCH_EVENT_ADDED`.
constexpr uint32_t WATCH_MASK_ADDED = 2u;
// Identifies a node has been removed (either deleted or moved) from the directory.
constexpr uint8_t WATCH_EVENT_REMOVED = 2u;
// Identifies that no more `WATCH_EVENT_EXISTING` events will be sent.
constexpr uint8_t WATCH_EVENT_IDLE = 4u;
// Identifies a node already existed in the directory when watching started.
constexpr uint8_t WATCH_EVENT_EXISTING = 3u;
// Indicates the directory being watched has been deleted.
constexpr uint8_t WATCH_EVENT_DELETED = 0u;
// Indicates a node has been created (either new or moved) into a directory.
constexpr uint8_t WATCH_EVENT_ADDED = 1u;
extern "C" const fidl_type_t v1_fuchsia_io_VmofileTable;
// The object is a file which is represented as an immutable VMO.
// Although a VMO is returned as a part of this structure, this underlying object
// may represent multiple Vmofiles. To identify the logical portion of the VMO
// that represents the single file, an offset and length parameter are also supplied.
struct Vmofile {
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_VmofileTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 24;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasPointer = false;
// The VMO which backs this file.
::zx::vmo vmo = {};
// The index into `vmo` which represents the first byte of the file.
uint64_t offset = {};
// The number of bytes, starting at `offset`, which may be used to represent this file.
uint64_t length = {};
};
// Requests that the VMO be writable.
constexpr uint32_t VMO_FLAG_WRITE = 2u;
// Requests that the VMO be readable.
constexpr uint32_t VMO_FLAG_READ = 1u;
// Require a copy-on-write clone of the underlying VMO.
// The request should fail if the VMO is not cloned.
// May not be supplied with fuchsia_io_`VMO_FLAG_EXACT`.
constexpr uint32_t VMO_FLAG_PRIVATE = 65536u;
// Requests that the VMO be executable.
constexpr uint32_t VMO_FLAG_EXEC = 4u;
// Require an exact (non-cloned) handle to the underlying VMO.
// The request should fail if a handle to the exact VMO is not returned.
// May not be supplied with `VMO_FLAG_PRIVATE`.
constexpr uint32_t VMO_FLAG_EXACT = 131072u;
extern "C" const fidl_type_t v1_fuchsia_io_TtyTable;
// The object may be cast to interface 'Tty'
struct Tty {
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_TtyTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 4;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasPointer = false;
::zx::eventpair event = {};
};
extern "C" const fidl_type_t v1_fuchsia_io_StreamSocketTable;
// The object may be cast to interface [`fuchsia.posix.socket.StreamSocket`].
struct StreamSocket {
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_StreamSocketTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 4;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasPointer = false;
::zx::socket socket = {};
};
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryWatcherOnEventRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryWatcherOnEventResponseTable;
// DirectoryWatcher transmits messages from a filesystem server
// about events happening in the filesystem. Clients can register
// new watchers using the `Directory.Watch` method, where they can
// filter which events they want to receive notifications for.
class DirectoryWatcher final {
DirectoryWatcher() = delete;
public:
struct OnEventRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::fidl::VectorView<uint8_t> events;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryWatcherOnEventRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 32;
static constexpr uint32_t MaxOutOfLine = 8192;
static constexpr uint32_t AltPrimarySize = 32;
static constexpr uint32_t AltMaxOutOfLine = 8192;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
};
// Collection of return types of FIDL calls in this interface.
class ResultOf final {
ResultOf() = delete;
private:
class OnEvent_Impl final : private ::fidl::internal::StatusAndError {
using Super = ::fidl::internal::StatusAndError;
public:
OnEvent_Impl(::zx::unowned_channel _client_end, ::fidl::VectorView<uint8_t> events);
~OnEvent_Impl() = default;
OnEvent_Impl(OnEvent_Impl&& other) = default;
OnEvent_Impl& operator=(OnEvent_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
};
public:
using OnEvent = OnEvent_Impl;
};
// Collection of return types of FIDL calls in this interface,
// when the caller-allocate flavor or in-place call is used.
class UnownedResultOf final {
UnownedResultOf() = delete;
private:
class OnEvent_Impl final : private ::fidl::internal::StatusAndError {
using Super = ::fidl::internal::StatusAndError;
public:
OnEvent_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::fidl::VectorView<uint8_t> events);
~OnEvent_Impl() = default;
OnEvent_Impl(OnEvent_Impl&& other) = default;
OnEvent_Impl& operator=(OnEvent_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
};
public:
using OnEvent = OnEvent_Impl;
};
class SyncClient final {
public:
explicit SyncClient(::zx::channel channel) : channel_(std::move(channel)) {}
~SyncClient() = default;
SyncClient(SyncClient&&) = default;
SyncClient& operator=(SyncClient&&) = default;
const ::zx::channel& channel() const { return channel_; }
::zx::channel* mutable_channel() { return &channel_; }
// Request is heap-allocated.
ResultOf::OnEvent OnEvent(::fidl::VectorView<uint8_t> events);
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::OnEvent OnEvent(::fidl::BytePart _request_buffer, ::fidl::VectorView<uint8_t> events);
private:
::zx::channel channel_;
};
// Methods to make a sync FIDL call directly on an unowned channel, avoiding setting up a client.
class Call final {
Call() = delete;
public:
// Request is heap-allocated.
static ResultOf::OnEvent OnEvent(::zx::unowned_channel _client_end, ::fidl::VectorView<uint8_t> events);
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::OnEvent OnEvent(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::fidl::VectorView<uint8_t> events);
};
// Messages are encoded and decoded in-place when these methods are used.
// Additionally, requests must be already laid-out according to the FIDL wire-format.
class InPlace final {
InPlace() = delete;
public:
static ::fidl::internal::StatusAndError OnEvent(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<OnEventRequest> params);
};
// Pure-virtual interface to be implemented by a server.
class Interface {
public:
Interface() = default;
virtual ~Interface() = default;
using _Outer = DirectoryWatcher;
using _Base = ::fidl::CompleterBase;
using OnEventCompleter = ::fidl::Completer<>;
virtual void OnEvent(::fidl::VectorView<uint8_t> events, OnEventCompleter::Sync _completer) = 0;
};
// Attempts to dispatch the incoming message to a handler function in the server implementation.
// If there is no matching handler, it returns false, leaving the message and transaction intact.
// In all other cases, it consumes the message and returns true.
// It is possible to chain multiple TryDispatch functions in this manner.
static bool TryDispatch(Interface* impl, fidl_msg_t* msg, ::fidl::Transaction* txn);
// Dispatches the incoming message to one of the handlers functions in the interface.
// If there is no matching handler, it closes all the handles in |msg| and closes the channel with
// a |ZX_ERR_NOT_SUPPORTED| epitaph, before returning false. The message should then be discarded.
static bool Dispatch(Interface* impl, fidl_msg_t* msg, ::fidl::Transaction* txn);
// Same as |Dispatch|, but takes a |void*| instead of |Interface*|. Only used with |fidl::Bind|
// to reduce template expansion.
// Do not call this method manually. Use |Dispatch| instead.
static bool TypeErasedDispatch(void* impl, fidl_msg_t* msg, ::fidl::Transaction* txn) {
return Dispatch(static_cast<Interface*>(impl), msg, txn);
}
// Helper functions to fill in the transaction header in a |DecodedMessage<TransactionalMessage>|.
class SetTransactionHeaderFor final {
SetTransactionHeaderFor() = delete;
public:
static void OnEventRequest(const ::fidl::DecodedMessage<DirectoryWatcher::OnEventRequest>& _msg);
};
};
extern "C" const fidl_type_t v1_fuchsia_io_SocketTable;
// The object may be cast to interface [`fuchsia.posix.socket.Control`].
struct Socket {
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_SocketTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 4;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasPointer = false;
::zx::socket socket = {};
};
extern "C" const fidl_type_t v1_fuchsia_io_ServiceTable;
// The default protocol, interface information must be acquired some
// other way.
struct Service {
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_ServiceTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 1;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasPointer = false;
uint8_t __reserved = {};
};
extern "C" const fidl_type_t v1_fuchsia_io_PipeTable;
// The object is accompanied by a pipe.
struct Pipe {
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_PipeTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 4;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasPointer = false;
::zx::socket socket = {};
};
// Can write to target object.
constexpr uint32_t OPEN_RIGHT_WRITABLE = 2u;
// Can read from target object.
constexpr uint32_t OPEN_RIGHT_READABLE = 1u;
// Connection can map target object executable.
constexpr uint32_t OPEN_RIGHT_EXECUTABLE = 8u;
// Connection can mount/umount filesystem.
constexpr uint32_t OPEN_RIGHT_ADMIN = 4u;
// Truncate the object before usage.
constexpr uint32_t OPEN_FLAG_TRUNCATE = 262144u;
// Specify this flag to request POSIX-compatibility. Currently, it affects permission handling.
// During Open:
// - If the target path is a directory, the rights on the new connection expand to include
// `OPEN_RIGHT_WRITABLE` if and only if the current connection and all intermediate mount points
// are writable, and to include `OPEN_RIGHT_EXECUTABLE` if and only if the current connection and
// all intermediate mount points are executable.
// - Otherwise, this flag is ignored. It is an access denied error to request more rights
// than those on the current connection, or any intermediate mount points.
//
// If the posix compatibility flag is not specified, opening always uses the requested rights,
// failing the operation with access denied error if requested rights exceeds the rights attached
// to the current connection.
//
// If the requesting connection is read-only and the requested rights are read-only, the flag
// may be ignored by the server, and is not forwarded downstream. This is an implementation detail,
// necessary to enforce hierarchical permissions across mount points, and should have no effect
// on the expected behavior for clients.
constexpr uint32_t OPEN_FLAG_POSIX = 16777216u;
// If the object is a mount point, open the local directory.
constexpr uint32_t OPEN_FLAG_NO_REMOTE = 2097152u;
// Assert that the object to be opened is not a directory.
// Return an error if the target object is a directory.
constexpr uint32_t OPEN_FLAG_NOT_DIRECTORY = 33554432u;
// Open a reference to the object, not the object itself.
// It is ONLY valid to pass the following flags together with `OPEN_FLAG_NODE_REFERENCE`:
// - `OPEN_FLAG_DIRECTORY`
// - `OPEN_FLAG_NOT_DIRECTORY`
// - `OPEN_FLAG_DESCRIBE`
// otherwise an error is returned.
// If an object is opened or cloned using this method, the resulting connection does not carry
// any permission flags.
// The resulting node allows a limited set of operations: `GetAttr`, `Clone`, `Close`, `Describe`,
// and, if the node is a file, these extra operations: `GetFlags`, `SetFlags`.
constexpr uint32_t OPEN_FLAG_NODE_REFERENCE = 4194304u;
// Assert that the object to be opened is a directory.
// Return an error if the target object is not a directory.
constexpr uint32_t OPEN_FLAG_DIRECTORY = 524288u;
// Requests that an "OnOpen" event is sent to the interface request.
// The event will contain a non-null NodeInfo if the open/clone is successful.
constexpr uint32_t OPEN_FLAG_DESCRIBE = 8388608u;
// (with Create) Fail if the object already exists.
constexpr uint32_t OPEN_FLAG_CREATE_IF_ABSENT = 131072u;
// Create the object if it doesn't exist.
constexpr uint32_t OPEN_FLAG_CREATE = 65536u;
// Seek to the end of the object before all writes.
constexpr uint32_t OPEN_FLAG_APPEND = 1048576u;
// Binary OR of `OPEN_FLAG_DIRECTORY`, OPEN_FLAG_NOT_DIRECTORY, OPEN_FLAG_DESCRIBE, and
// `OPEN_FLAG_NODE_REFERENCE`. Flags used when opening a node reference must fall within this mask.
constexpr uint32_t OPEN_FLAGS_ALLOWED_WITH_NODE_REFERENCE = 46661632u;
extern "C" const fidl_type_t v1_fuchsia_io_NodeAttributesTable;
// NodeAttributes defines generic information about a filesystem node.
struct NodeAttributes {
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_NodeAttributesTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 56;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasPointer = false;
// Protection bits and node type information describe in 'mode'.
uint32_t mode = {};
// A filesystem-unique ID.
uint64_t id = {};
// Node size, in bytes.
uint64_t content_size = {};
// Space needed to store node (possibly larger than size), in bytes.
uint64_t storage_size = {};
// Hard link count.
uint64_t link_count = {};
// Time of creation (may be updated manually after creation) in ns since Unix epoch, UTC.
uint64_t creation_time = {};
// Time of last modification in ns since Unix epoch, UTC.
uint64_t modification_time = {};
};
constexpr uint32_t NODE_ATTRIBUTE_FLAG_MODIFICATION_TIME = 2u;
// The fields of 'attributes' which are used to update the Node are indicated
// by the 'flags' argument.
constexpr uint32_t NODE_ATTRIBUTE_FLAG_CREATION_TIME = 1u;
constexpr uint32_t MOUNT_CREATE_FLAG_REPLACE = 1u;
constexpr uint32_t MODE_TYPE_SOCKET = 49152u;
constexpr uint32_t MODE_TYPE_SERVICE = 65536u;
// Bits indicating node type. The canonical mechanism to check
// for a node type is to take 'mode', bitwise AND it with the
// `MODE_TYPE_MASK`, and check exact equality against a mode type.
constexpr uint32_t MODE_TYPE_MASK = 1044480u;
constexpr uint32_t MODE_TYPE_FILE = 32768u;
constexpr uint32_t MODE_TYPE_DIRECTORY = 16384u;
constexpr uint32_t MODE_TYPE_BLOCK_DEVICE = 24576u;
// Bits reserved for posix protections. Native fuchsia filesystems
// are not required to set bits contained within `MODE_PROTECTION_MASK`,
// but filesystems that wish to do so may refer to sys/stat.h for their
// definitions.
constexpr uint32_t MODE_PROTECTION_MASK = 4095u;
// The maximum length, in bytes, of a filesystem string.
constexpr uint64_t MAX_PATH = 4096u;
constexpr uint64_t MAX_FS_NAME_BUFFER = 32u;
// The maximum length, in bytes, of a single filesystem component.
constexpr uint64_t MAX_FILENAME = 255u;
// The maximal buffer size which can be transmitted for buffered operations.
// This capacity is currently set somewhat arbitrarily.
constexpr uint64_t MAX_BUF = 8192u;
// Nodes which do not have ino values should return this value
// from Readdir and GetAttr.
constexpr uint64_t INO_UNKNOWN = 18446744073709551615u;
extern "C" const fidl_type_t v1_fuchsia_io_FilesystemInfoTable;
struct FilesystemInfo {
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FilesystemInfoTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 96;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasPointer = false;
// The number of data bytes which may be stored in a filesystem.
uint64_t total_bytes = {};
// The number of data bytes which are in use by the filesystem.
uint64_t used_bytes = {};
// The number of nodes which may be stored in the filesystem.
uint64_t total_nodes = {};
// The number of nodes used by the filesystem.
uint64_t used_nodes = {};
// The amount of space which may be allocated from the underlying
// volume manager. If unsupported, this will be zero.
uint64_t free_shared_pool_bytes = {};
// A unique identifier for this filesystem instance. Will not be preserved
// across reboots.
uint64_t fs_id = {};
// The size of a single filesystem block.
uint32_t block_size = {};
// The maximum length of a filesystem name.
uint32_t max_filename_size = {};
// A unique identifier for the type of the underlying filesystem.
uint32_t fs_type = {};
uint32_t padding = {};
::fidl::Array<int8_t, 32> name = {};
};
extern "C" const fidl_type_t v1_fuchsia_io_FileObjectTable;
// The object may be cast to interface 'File'.
struct FileObject {
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileObjectTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 4;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasPointer = false;
// An optional event which transmits information about an object's readability
// or writability. This event relays information about the underlying object, not
// the capability granted to client: this event may be signalled "readable" on a
// connection that does not have the capability to read.
//
// The "`FILE_SIGNAL_`" values may be observed on this event.
::zx::event event = {};
};
// Indicates the file is ready for writing.
constexpr uint32_t FILE_SIGNAL_WRITABLE = 33554432u;
// Indicates the file is ready for reading.
constexpr uint32_t FILE_SIGNAL_READABLE = 16777216u;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryObjectTable;
// The object may be cast to interface 'Directory'.
struct DirectoryObject {
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryObjectTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 1;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasPointer = false;
uint8_t __reserved = {};
};
extern "C" const fidl_type_t v1_fuchsia_io_DeviceTable;
// The object may be cast to interface 'Device'.
struct Device {
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DeviceTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 4;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasPointer = false;
// An optional event which transmits information about a device's state.
//
// The "`DEVICE_SIGNAL_`" values may be observed on this event.
::zx::eventpair event = {};
};
extern "C" const fidl_type_t v1_fuchsia_io_DatagramSocketTable;
// The object may be cast to interface [`fuchsia.posix.socket.DatagramSocket`].
struct DatagramSocket {
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DatagramSocketTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 4;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasPointer = false;
// See [`fuchsia.posix.socket.DatagramSocket`] for details.
::zx::eventpair event = {};
};
extern "C" const fidl_type_t v1_fuchsia_io_NodeCloneRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_NodeCloneResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_NodeCloseRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_NodeCloseResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_NodeDescribeRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_NodeDescribeResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_NodeOnOpenRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_NodeOnOpenEventTable;
extern "C" const fidl_type_t v1_fuchsia_io_NodeSyncRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_NodeSyncResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_NodeGetAttrRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_NodeGetAttrResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_NodeSetAttrRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_NodeSetAttrResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_NodeNodeGetFlagsRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_NodeNodeGetFlagsResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_NodeNodeSetFlagsRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_NodeNodeSetFlagsResponseTable;
// Node defines the minimal interface for entities which can be accessed in a filesystem.
class Node final {
Node() = delete;
public:
struct CloneRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint32_t flags;
::zx::channel object;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_NodeCloneRequestTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 24;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
};
struct CloseResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_NodeCloseResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using CloseRequest = ::fidl::AnyZeroArgMessage;
struct DescribeResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::llcpp::fuchsia::io::NodeInfo info;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_NodeDescribeResponseTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 40;
static constexpr uint32_t MaxOutOfLine = 24;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = true;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using DescribeRequest = ::fidl::AnyZeroArgMessage;
struct OnOpenResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
::llcpp::fuchsia::io::NodeInfo info;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_NodeOnOpenEventTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 48;
static constexpr uint32_t MaxOutOfLine = 24;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = true;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct SyncResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_NodeSyncResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using SyncRequest = ::fidl::AnyZeroArgMessage;
struct GetAttrResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
::llcpp::fuchsia::io::NodeAttributes attributes;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_NodeGetAttrResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 80;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using GetAttrRequest = ::fidl::AnyZeroArgMessage;
struct SetAttrResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_NodeSetAttrResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct SetAttrRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint32_t flags;
::llcpp::fuchsia::io::NodeAttributes attributes;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_NodeSetAttrRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 80;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 80;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = SetAttrResponse;
};
struct NodeGetFlagsResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
uint32_t flags;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_NodeNodeGetFlagsResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using NodeGetFlagsRequest = ::fidl::AnyZeroArgMessage;
struct NodeSetFlagsResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_NodeNodeSetFlagsResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct NodeSetFlagsRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint32_t flags;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_NodeNodeSetFlagsRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 24;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = NodeSetFlagsResponse;
};
struct EventHandlers {
// An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
//
// Indicates the success or failure of the open operation, and optionally describes the
// object. If the status is `ZX_OK`, `info` contains descriptive information about the object
// (the same as would be returned by `Describe`).
fit::callback<zx_status_t(int32_t s, ::llcpp::fuchsia::io::NodeInfo info)> on_open;
// Fallback handler when an unknown ordinal is received.
// Caller may put custom error handling logic here.
fit::callback<zx_status_t()> unknown;
};
// Collection of return types of FIDL calls in this interface.
class ResultOf final {
ResultOf() = delete;
private:
class Clone_Impl final : private ::fidl::internal::StatusAndError {
using Super = ::fidl::internal::StatusAndError;
public:
Clone_Impl(::zx::unowned_channel _client_end, uint32_t flags, ::zx::channel object);
~Clone_Impl() = default;
Clone_Impl(Clone_Impl&& other) = default;
Clone_Impl& operator=(Clone_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
};
template <typename ResponseType>
class Close_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Close_Impl(::zx::unowned_channel _client_end);
~Close_Impl() = default;
Close_Impl(Close_Impl&& other) = default;
Close_Impl& operator=(Close_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Describe_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Describe_Impl(::zx::unowned_channel _client_end);
~Describe_Impl() = default;
Describe_Impl(Describe_Impl&& other) = default;
Describe_Impl& operator=(Describe_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Sync_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Sync_Impl(::zx::unowned_channel _client_end);
~Sync_Impl() = default;
Sync_Impl(Sync_Impl&& other) = default;
Sync_Impl& operator=(Sync_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetAttr_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
GetAttr_Impl(::zx::unowned_channel _client_end);
~GetAttr_Impl() = default;
GetAttr_Impl(GetAttr_Impl&& other) = default;
GetAttr_Impl& operator=(GetAttr_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class SetAttr_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
SetAttr_Impl(::zx::unowned_channel _client_end, uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes);
~SetAttr_Impl() = default;
SetAttr_Impl(SetAttr_Impl&& other) = default;
SetAttr_Impl& operator=(SetAttr_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class NodeGetFlags_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
NodeGetFlags_Impl(::zx::unowned_channel _client_end);
~NodeGetFlags_Impl() = default;
NodeGetFlags_Impl(NodeGetFlags_Impl&& other) = default;
NodeGetFlags_Impl& operator=(NodeGetFlags_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class NodeSetFlags_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
NodeSetFlags_Impl(::zx::unowned_channel _client_end, uint32_t flags);
~NodeSetFlags_Impl() = default;
NodeSetFlags_Impl(NodeSetFlags_Impl&& other) = default;
NodeSetFlags_Impl& operator=(NodeSetFlags_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
public:
using Clone = Clone_Impl;
using Close = Close_Impl<CloseResponse>;
using Describe = Describe_Impl<DescribeResponse>;
using Sync = Sync_Impl<SyncResponse>;
using GetAttr = GetAttr_Impl<GetAttrResponse>;
using SetAttr = SetAttr_Impl<SetAttrResponse>;
using NodeGetFlags = NodeGetFlags_Impl<NodeGetFlagsResponse>;
using NodeSetFlags = NodeSetFlags_Impl<NodeSetFlagsResponse>;
};
// Collection of return types of FIDL calls in this interface,
// when the caller-allocate flavor or in-place call is used.
class UnownedResultOf final {
UnownedResultOf() = delete;
private:
class Clone_Impl final : private ::fidl::internal::StatusAndError {
using Super = ::fidl::internal::StatusAndError;
public:
Clone_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::zx::channel object);
~Clone_Impl() = default;
Clone_Impl(Clone_Impl&& other) = default;
Clone_Impl& operator=(Clone_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
};
template <typename ResponseType>
class Close_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Close_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~Close_Impl() = default;
Close_Impl(Close_Impl&& other) = default;
Close_Impl& operator=(Close_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Describe_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Describe_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~Describe_Impl() = default;
Describe_Impl(Describe_Impl&& other) = default;
Describe_Impl& operator=(Describe_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Sync_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Sync_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~Sync_Impl() = default;
Sync_Impl(Sync_Impl&& other) = default;
Sync_Impl& operator=(Sync_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetAttr_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
GetAttr_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~GetAttr_Impl() = default;
GetAttr_Impl(GetAttr_Impl&& other) = default;
GetAttr_Impl& operator=(GetAttr_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class SetAttr_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
SetAttr_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes, ::fidl::BytePart _response_buffer);
~SetAttr_Impl() = default;
SetAttr_Impl(SetAttr_Impl&& other) = default;
SetAttr_Impl& operator=(SetAttr_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class NodeGetFlags_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
NodeGetFlags_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~NodeGetFlags_Impl() = default;
NodeGetFlags_Impl(NodeGetFlags_Impl&& other) = default;
NodeGetFlags_Impl& operator=(NodeGetFlags_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class NodeSetFlags_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
NodeSetFlags_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::fidl::BytePart _response_buffer);
~NodeSetFlags_Impl() = default;
NodeSetFlags_Impl(NodeSetFlags_Impl&& other) = default;
NodeSetFlags_Impl& operator=(NodeSetFlags_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
public:
using Clone = Clone_Impl;
using Close = Close_Impl<CloseResponse>;
using Describe = Describe_Impl<DescribeResponse>;
using Sync = Sync_Impl<SyncResponse>;
using GetAttr = GetAttr_Impl<GetAttrResponse>;
using SetAttr = SetAttr_Impl<SetAttrResponse>;
using NodeGetFlags = NodeGetFlags_Impl<NodeGetFlagsResponse>;
using NodeSetFlags = NodeSetFlags_Impl<NodeSetFlagsResponse>;
};
class SyncClient final {
public:
explicit SyncClient(::zx::channel channel) : channel_(std::move(channel)) {}
~SyncClient() = default;
SyncClient(SyncClient&&) = default;
SyncClient& operator=(SyncClient&&) = default;
const ::zx::channel& channel() const { return channel_; }
::zx::channel* mutable_channel() { return &channel_; }
// Create another connection to the same remote object.
//
// `flags` may be any of:
//
// - `OPEN_RIGHT_*`
// - `OPEN_FLAG_APPEND`
// - `OPEN_FLAG_NO_REMOTE`
// - `OPEN_FLAG_DESCRIBE`
// - `CLONE_FLAG_SAME_RIGHTS`
//
// All other flags are ignored.
//
// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
// cloned object.
// The cloned object must have rights less than or equal to the original object.
// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
// `CLONE_FLAG_SAME_RIGHTS`.
// Allocates 24 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Clone Clone(uint32_t flags, ::zx::channel object);
// Create another connection to the same remote object.
//
// `flags` may be any of:
//
// - `OPEN_RIGHT_*`
// - `OPEN_FLAG_APPEND`
// - `OPEN_FLAG_NO_REMOTE`
// - `OPEN_FLAG_DESCRIBE`
// - `CLONE_FLAG_SAME_RIGHTS`
//
// All other flags are ignored.
//
// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
// cloned object.
// The cloned object must have rights less than or equal to the original object.
// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
// `CLONE_FLAG_SAME_RIGHTS`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Clone Clone(::fidl::BytePart _request_buffer, uint32_t flags, ::zx::channel object);
// Terminates connection with object.
//
// This method does not require any rights.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Close Close();
// Terminates connection with object.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Close Close(::fidl::BytePart _response_buffer);
// Returns extra information about the type of the object.
// If the `Describe` operation fails, the connection is closed.
//
// This method does not require any rights.
// Allocates 80 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Describe Describe();
// Returns extra information about the type of the object.
// If the `Describe` operation fails, the connection is closed.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Describe Describe(::fidl::BytePart _response_buffer);
// Synchronizes updates to the node to the underlying media, if it exists.
//
// This method does not require any rights.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Sync Sync();
// Synchronizes updates to the node to the underlying media, if it exists.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Sync Sync(::fidl::BytePart _response_buffer);
// Acquires information about the node.
//
// This method does not require any rights.
// Allocates 96 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::GetAttr GetAttr();
// Acquires information about the node.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::GetAttr GetAttr(::fidl::BytePart _response_buffer);
// Updates information about the node.
// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 104 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::SetAttr SetAttr(uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes);
// Updates information about the node.
// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::SetAttr SetAttr(::fidl::BytePart _request_buffer, uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes, ::fidl::BytePart _response_buffer);
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// This method has the same functionality as GetFlags for File and is
// meant as an in-progress replacement.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::NodeGetFlags NodeGetFlags();
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// This method has the same functionality as GetFlags for File and is
// meant as an in-progress replacement.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::NodeGetFlags NodeGetFlags(::fidl::BytePart _response_buffer);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// This method has the same functionality as SetFlags for File and is
// meant as an in-progress replacement.
// Allocates 48 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::NodeSetFlags NodeSetFlags(uint32_t flags);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// This method has the same functionality as SetFlags for File and is
// meant as an in-progress replacement.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::NodeSetFlags NodeSetFlags(::fidl::BytePart _request_buffer, uint32_t flags, ::fidl::BytePart _response_buffer);
// Handle all possible events defined in this protocol.
// Blocks to consume exactly one message from the channel, then call the corresponding handler
// defined in |EventHandlers|. The return status of the handler function is folded with any
// transport-level errors and returned.
zx_status_t HandleEvents(EventHandlers handlers);
private:
::zx::channel channel_;
};
// Methods to make a sync FIDL call directly on an unowned channel, avoiding setting up a client.
class Call final {
Call() = delete;
public:
// Create another connection to the same remote object.
//
// `flags` may be any of:
//
// - `OPEN_RIGHT_*`
// - `OPEN_FLAG_APPEND`
// - `OPEN_FLAG_NO_REMOTE`
// - `OPEN_FLAG_DESCRIBE`
// - `CLONE_FLAG_SAME_RIGHTS`
//
// All other flags are ignored.
//
// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
// cloned object.
// The cloned object must have rights less than or equal to the original object.
// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
// `CLONE_FLAG_SAME_RIGHTS`.
// Allocates 24 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Clone Clone(::zx::unowned_channel _client_end, uint32_t flags, ::zx::channel object);
// Create another connection to the same remote object.
//
// `flags` may be any of:
//
// - `OPEN_RIGHT_*`
// - `OPEN_FLAG_APPEND`
// - `OPEN_FLAG_NO_REMOTE`
// - `OPEN_FLAG_DESCRIBE`
// - `CLONE_FLAG_SAME_RIGHTS`
//
// All other flags are ignored.
//
// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
// cloned object.
// The cloned object must have rights less than or equal to the original object.
// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
// `CLONE_FLAG_SAME_RIGHTS`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Clone Clone(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::zx::channel object);
// Terminates connection with object.
//
// This method does not require any rights.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Close Close(::zx::unowned_channel _client_end);
// Terminates connection with object.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Close Close(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Returns extra information about the type of the object.
// If the `Describe` operation fails, the connection is closed.
//
// This method does not require any rights.
// Allocates 80 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Describe Describe(::zx::unowned_channel _client_end);
// Returns extra information about the type of the object.
// If the `Describe` operation fails, the connection is closed.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Describe Describe(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Synchronizes updates to the node to the underlying media, if it exists.
//
// This method does not require any rights.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Sync Sync(::zx::unowned_channel _client_end);
// Synchronizes updates to the node to the underlying media, if it exists.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Sync Sync(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Acquires information about the node.
//
// This method does not require any rights.
// Allocates 96 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::GetAttr GetAttr(::zx::unowned_channel _client_end);
// Acquires information about the node.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::GetAttr GetAttr(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Updates information about the node.
// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 104 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::SetAttr SetAttr(::zx::unowned_channel _client_end, uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes);
// Updates information about the node.
// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::SetAttr SetAttr(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes, ::fidl::BytePart _response_buffer);
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// This method has the same functionality as GetFlags for File and is
// meant as an in-progress replacement.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::NodeGetFlags NodeGetFlags(::zx::unowned_channel _client_end);
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// This method has the same functionality as GetFlags for File and is
// meant as an in-progress replacement.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::NodeGetFlags NodeGetFlags(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// This method has the same functionality as SetFlags for File and is
// meant as an in-progress replacement.
// Allocates 48 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::NodeSetFlags NodeSetFlags(::zx::unowned_channel _client_end, uint32_t flags);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// This method has the same functionality as SetFlags for File and is
// meant as an in-progress replacement.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::NodeSetFlags NodeSetFlags(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::fidl::BytePart _response_buffer);
// Handle all possible events defined in this protocol.
// Blocks to consume exactly one message from the channel, then call the corresponding handler
// defined in |EventHandlers|. The return status of the handler function is folded with any
// transport-level errors and returned.
static zx_status_t HandleEvents(::zx::unowned_channel client_end, EventHandlers handlers);
};
// Messages are encoded and decoded in-place when these methods are used.
// Additionally, requests must be already laid-out according to the FIDL wire-format.
class InPlace final {
InPlace() = delete;
public:
// Create another connection to the same remote object.
//
// `flags` may be any of:
//
// - `OPEN_RIGHT_*`
// - `OPEN_FLAG_APPEND`
// - `OPEN_FLAG_NO_REMOTE`
// - `OPEN_FLAG_DESCRIBE`
// - `CLONE_FLAG_SAME_RIGHTS`
//
// All other flags are ignored.
//
// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
// cloned object.
// The cloned object must have rights less than or equal to the original object.
// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
// `CLONE_FLAG_SAME_RIGHTS`.
static ::fidl::internal::StatusAndError Clone(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<CloneRequest> params);
// Terminates connection with object.
//
// This method does not require any rights.
static ::fidl::DecodeResult<CloseResponse> Close(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Returns extra information about the type of the object.
// If the `Describe` operation fails, the connection is closed.
//
// This method does not require any rights.
static ::fidl::DecodeResult<DescribeResponse> Describe(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Synchronizes updates to the node to the underlying media, if it exists.
//
// This method does not require any rights.
static ::fidl::DecodeResult<SyncResponse> Sync(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Acquires information about the node.
//
// This method does not require any rights.
static ::fidl::DecodeResult<GetAttrResponse> GetAttr(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Updates information about the node.
// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
static ::fidl::DecodeResult<SetAttrResponse> SetAttr(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<SetAttrRequest> params, ::fidl::BytePart response_buffer);
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// This method has the same functionality as GetFlags for File and is
// meant as an in-progress replacement.
static ::fidl::DecodeResult<NodeGetFlagsResponse> NodeGetFlags(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// This method has the same functionality as SetFlags for File and is
// meant as an in-progress replacement.
static ::fidl::DecodeResult<NodeSetFlagsResponse> NodeSetFlags(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<NodeSetFlagsRequest> params, ::fidl::BytePart response_buffer);
};
// Pure-virtual interface to be implemented by a server.
class Interface {
public:
Interface() = default;
virtual ~Interface() = default;
using _Outer = Node;
using _Base = ::fidl::CompleterBase;
using CloneCompleter = ::fidl::Completer<>;
virtual void Clone(uint32_t flags, ::zx::channel object, CloneCompleter::Sync _completer) = 0;
class CloseCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<CloseResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using CloseCompleter = ::fidl::Completer<CloseCompleterBase>;
virtual void Close(CloseCompleter::Sync _completer) = 0;
class DescribeCompleterBase : public _Base {
public:
void Reply(::llcpp::fuchsia::io::NodeInfo info);
void Reply(::fidl::BytePart _buffer, ::llcpp::fuchsia::io::NodeInfo info);
void Reply(::fidl::DecodedMessage<DescribeResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using DescribeCompleter = ::fidl::Completer<DescribeCompleterBase>;
virtual void Describe(DescribeCompleter::Sync _completer) = 0;
class SyncCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<SyncResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using SyncCompleter = ::fidl::Completer<SyncCompleterBase>;
virtual void Sync(SyncCompleter::Sync _completer) = 0;
class GetAttrCompleterBase : public _Base {
public:
void Reply(int32_t s, ::llcpp::fuchsia::io::NodeAttributes attributes);
void Reply(::fidl::BytePart _buffer, int32_t s, ::llcpp::fuchsia::io::NodeAttributes attributes);
void Reply(::fidl::DecodedMessage<GetAttrResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using GetAttrCompleter = ::fidl::Completer<GetAttrCompleterBase>;
virtual void GetAttr(GetAttrCompleter::Sync _completer) = 0;
class SetAttrCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<SetAttrResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using SetAttrCompleter = ::fidl::Completer<SetAttrCompleterBase>;
virtual void SetAttr(uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes, SetAttrCompleter::Sync _completer) = 0;
class NodeGetFlagsCompleterBase : public _Base {
public:
void Reply(int32_t s, uint32_t flags);
void Reply(::fidl::BytePart _buffer, int32_t s, uint32_t flags);
void Reply(::fidl::DecodedMessage<NodeGetFlagsResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using NodeGetFlagsCompleter = ::fidl::Completer<NodeGetFlagsCompleterBase>;
virtual void NodeGetFlags(NodeGetFlagsCompleter::Sync _completer) { _completer.Close(ZX_ERR_NOT_SUPPORTED); }
class NodeSetFlagsCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<NodeSetFlagsResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using NodeSetFlagsCompleter = ::fidl::Completer<NodeSetFlagsCompleterBase>;
virtual void NodeSetFlags(uint32_t flags, NodeSetFlagsCompleter::Sync _completer) { _completer.Close(ZX_ERR_NOT_SUPPORTED); }
};
// Attempts to dispatch the incoming message to a handler function in the server implementation.
// If there is no matching handler, it returns false, leaving the message and transaction intact.
// In all other cases, it consumes the message and returns true.
// It is possible to chain multiple TryDispatch functions in this manner.
static bool TryDispatch(Interface* impl, fidl_msg_t* msg, ::fidl::Transaction* txn);
// Dispatches the incoming message to one of the handlers functions in the interface.
// If there is no matching handler, it closes all the handles in |msg| and closes the channel with
// a |ZX_ERR_NOT_SUPPORTED| epitaph, before returning false. The message should then be discarded.
static bool Dispatch(Interface* impl, fidl_msg_t* msg, ::fidl::Transaction* txn);
// Same as |Dispatch|, but takes a |void*| instead of |Interface*|. Only used with |fidl::Bind|
// to reduce template expansion.
// Do not call this method manually. Use |Dispatch| instead.
static bool TypeErasedDispatch(void* impl, fidl_msg_t* msg, ::fidl::Transaction* txn) {
return Dispatch(static_cast<Interface*>(impl), msg, txn);
}
// An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
//
// Indicates the success or failure of the open operation, and optionally describes the
// object. If the status is `ZX_OK`, `info` contains descriptive information about the object
// (the same as would be returned by `Describe`).
static zx_status_t SendOnOpenEvent(::zx::unowned_channel _chan, int32_t s, ::llcpp::fuchsia::io::NodeInfo info);
// An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
//
// Indicates the success or failure of the open operation, and optionally describes the
// object. If the status is `ZX_OK`, `info` contains descriptive information about the object
// (the same as would be returned by `Describe`).
// Caller provides the backing storage for FIDL message via response buffers.
static zx_status_t SendOnOpenEvent(::zx::unowned_channel _chan, ::fidl::BytePart _buffer, int32_t s, ::llcpp::fuchsia::io::NodeInfo info);
// An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
//
// Indicates the success or failure of the open operation, and optionally describes the
// object. If the status is `ZX_OK`, `info` contains descriptive information about the object
// (the same as would be returned by `Describe`).
// Messages are encoded in-place.
static zx_status_t SendOnOpenEvent(::zx::unowned_channel _chan, ::fidl::DecodedMessage<OnOpenResponse> params);
// Helper functions to fill in the transaction header in a |DecodedMessage<TransactionalMessage>|.
class SetTransactionHeaderFor final {
SetTransactionHeaderFor() = delete;
public:
static void CloneRequest(const ::fidl::DecodedMessage<Node::CloneRequest>& _msg);
static void CloseRequest(const ::fidl::DecodedMessage<Node::CloseRequest>& _msg);
static void CloseResponse(const ::fidl::DecodedMessage<Node::CloseResponse>& _msg);
static void DescribeRequest(const ::fidl::DecodedMessage<Node::DescribeRequest>& _msg);
static void DescribeResponse(const ::fidl::DecodedMessage<Node::DescribeResponse>& _msg);
static void OnOpenResponse(const ::fidl::DecodedMessage<Node::OnOpenResponse>& _msg);
static void SyncRequest(const ::fidl::DecodedMessage<Node::SyncRequest>& _msg);
static void SyncResponse(const ::fidl::DecodedMessage<Node::SyncResponse>& _msg);
static void GetAttrRequest(const ::fidl::DecodedMessage<Node::GetAttrRequest>& _msg);
static void GetAttrResponse(const ::fidl::DecodedMessage<Node::GetAttrResponse>& _msg);
static void SetAttrRequest(const ::fidl::DecodedMessage<Node::SetAttrRequest>& _msg);
static void SetAttrResponse(const ::fidl::DecodedMessage<Node::SetAttrResponse>& _msg);
static void NodeGetFlagsRequest(const ::fidl::DecodedMessage<Node::NodeGetFlagsRequest>& _msg);
static void NodeGetFlagsResponse(const ::fidl::DecodedMessage<Node::NodeGetFlagsResponse>& _msg);
static void NodeSetFlagsRequest(const ::fidl::DecodedMessage<Node::NodeSetFlagsRequest>& _msg);
static void NodeSetFlagsResponse(const ::fidl::DecodedMessage<Node::NodeSetFlagsResponse>& _msg);
};
};
extern "C" const fidl_type_t v1_fuchsia_io_FileCloneRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileCloneResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileCloseRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileCloseResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileDescribeRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileDescribeResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileOnOpenRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileOnOpenEventTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileSyncRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileSyncResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileGetAttrRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileGetAttrResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileSetAttrRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileSetAttrResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileNodeGetFlagsRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileNodeGetFlagsResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileNodeSetFlagsRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileNodeSetFlagsResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileReadRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileReadResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileReadAtRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileReadAtResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileWriteRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileWriteResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileWriteAtRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileWriteAtResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileSeekRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileSeekResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileTruncateRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileTruncateResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileGetFlagsRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileGetFlagsResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileSetFlagsRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileSetFlagsResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileGetBufferRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_FileGetBufferResponseTable;
// File defines the interface of a node which contains a flat layout of data.
class File final {
File() = delete;
public:
struct CloneRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint32_t flags;
::zx::channel object;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileCloneRequestTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 24;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
};
struct CloseResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileCloseResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using CloseRequest = ::fidl::AnyZeroArgMessage;
struct DescribeResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::llcpp::fuchsia::io::NodeInfo info;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileDescribeResponseTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 40;
static constexpr uint32_t MaxOutOfLine = 24;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = true;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using DescribeRequest = ::fidl::AnyZeroArgMessage;
struct OnOpenResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
::llcpp::fuchsia::io::NodeInfo info;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileOnOpenEventTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 48;
static constexpr uint32_t MaxOutOfLine = 24;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = true;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct SyncResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileSyncResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using SyncRequest = ::fidl::AnyZeroArgMessage;
struct GetAttrResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
::llcpp::fuchsia::io::NodeAttributes attributes;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileGetAttrResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 80;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using GetAttrRequest = ::fidl::AnyZeroArgMessage;
struct SetAttrResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileSetAttrResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct SetAttrRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint32_t flags;
::llcpp::fuchsia::io::NodeAttributes attributes;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileSetAttrRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 80;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 80;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = SetAttrResponse;
};
struct NodeGetFlagsResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
uint32_t flags;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileNodeGetFlagsResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using NodeGetFlagsRequest = ::fidl::AnyZeroArgMessage;
struct NodeSetFlagsResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileNodeSetFlagsResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct NodeSetFlagsRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint32_t flags;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileNodeSetFlagsRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 24;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = NodeSetFlagsResponse;
};
struct ReadResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
::fidl::VectorView<uint8_t> data;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileReadResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 40;
static constexpr uint32_t MaxOutOfLine = 8192;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct ReadRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint64_t count;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileReadRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 24;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = ReadResponse;
};
struct ReadAtResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
::fidl::VectorView<uint8_t> data;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileReadAtResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 40;
static constexpr uint32_t MaxOutOfLine = 8192;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct ReadAtRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint64_t count;
uint64_t offset;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileReadAtRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 32;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 32;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = ReadAtResponse;
};
struct WriteResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
uint64_t actual;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileWriteResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 32;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct WriteRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::fidl::VectorView<uint8_t> data;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileWriteRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 32;
static constexpr uint32_t MaxOutOfLine = 8192;
static constexpr uint32_t AltPrimarySize = 32;
static constexpr uint32_t AltMaxOutOfLine = 8192;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = WriteResponse;
};
struct WriteAtResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
uint64_t actual;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileWriteAtResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 32;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct WriteAtRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::fidl::VectorView<uint8_t> data;
uint64_t offset;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileWriteAtRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 40;
static constexpr uint32_t MaxOutOfLine = 8192;
static constexpr uint32_t AltPrimarySize = 40;
static constexpr uint32_t AltMaxOutOfLine = 8192;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = WriteAtResponse;
};
struct SeekResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
uint64_t offset;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileSeekResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 32;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct SeekRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int64_t offset;
::llcpp::fuchsia::io::SeekOrigin start;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileSeekRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 32;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 32;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = SeekResponse;
};
struct TruncateResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileTruncateResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct TruncateRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint64_t length;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileTruncateRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 24;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = TruncateResponse;
};
struct GetFlagsResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
uint32_t flags;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileGetFlagsResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using GetFlagsRequest = ::fidl::AnyZeroArgMessage;
struct SetFlagsResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileSetFlagsResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct SetFlagsRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint32_t flags;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileSetFlagsRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 24;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = SetFlagsResponse;
};
struct GetBufferResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
::llcpp::fuchsia::mem::Buffer* buffer;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileGetBufferResponseTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 32;
static constexpr uint32_t MaxOutOfLine = 16;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct GetBufferRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint32_t flags;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_FileGetBufferRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 24;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = GetBufferResponse;
};
struct EventHandlers {
// An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
//
// Indicates the success or failure of the open operation, and optionally describes the
// object. If the status is `ZX_OK`, `info` contains descriptive information about the object
// (the same as would be returned by `Describe`).
fit::callback<zx_status_t(int32_t s, ::llcpp::fuchsia::io::NodeInfo info)> on_open;
// Fallback handler when an unknown ordinal is received.
// Caller may put custom error handling logic here.
fit::callback<zx_status_t()> unknown;
};
// Collection of return types of FIDL calls in this interface.
class ResultOf final {
ResultOf() = delete;
private:
class Clone_Impl final : private ::fidl::internal::StatusAndError {
using Super = ::fidl::internal::StatusAndError;
public:
Clone_Impl(::zx::unowned_channel _client_end, uint32_t flags, ::zx::channel object);
~Clone_Impl() = default;
Clone_Impl(Clone_Impl&& other) = default;
Clone_Impl& operator=(Clone_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
};
template <typename ResponseType>
class Close_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Close_Impl(::zx::unowned_channel _client_end);
~Close_Impl() = default;
Close_Impl(Close_Impl&& other) = default;
Close_Impl& operator=(Close_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Describe_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Describe_Impl(::zx::unowned_channel _client_end);
~Describe_Impl() = default;
Describe_Impl(Describe_Impl&& other) = default;
Describe_Impl& operator=(Describe_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Sync_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Sync_Impl(::zx::unowned_channel _client_end);
~Sync_Impl() = default;
Sync_Impl(Sync_Impl&& other) = default;
Sync_Impl& operator=(Sync_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetAttr_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
GetAttr_Impl(::zx::unowned_channel _client_end);
~GetAttr_Impl() = default;
GetAttr_Impl(GetAttr_Impl&& other) = default;
GetAttr_Impl& operator=(GetAttr_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class SetAttr_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
SetAttr_Impl(::zx::unowned_channel _client_end, uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes);
~SetAttr_Impl() = default;
SetAttr_Impl(SetAttr_Impl&& other) = default;
SetAttr_Impl& operator=(SetAttr_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class NodeGetFlags_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
NodeGetFlags_Impl(::zx::unowned_channel _client_end);
~NodeGetFlags_Impl() = default;
NodeGetFlags_Impl(NodeGetFlags_Impl&& other) = default;
NodeGetFlags_Impl& operator=(NodeGetFlags_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class NodeSetFlags_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
NodeSetFlags_Impl(::zx::unowned_channel _client_end, uint32_t flags);
~NodeSetFlags_Impl() = default;
NodeSetFlags_Impl(NodeSetFlags_Impl&& other) = default;
NodeSetFlags_Impl& operator=(NodeSetFlags_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Read_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Read_Impl(::zx::unowned_channel _client_end, uint64_t count);
~Read_Impl() = default;
Read_Impl(Read_Impl&& other) = default;
Read_Impl& operator=(Read_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class ReadAt_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
ReadAt_Impl(::zx::unowned_channel _client_end, uint64_t count, uint64_t offset);
~ReadAt_Impl() = default;
ReadAt_Impl(ReadAt_Impl&& other) = default;
ReadAt_Impl& operator=(ReadAt_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Write_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Write_Impl(::zx::unowned_channel _client_end, ::fidl::VectorView<uint8_t> data);
~Write_Impl() = default;
Write_Impl(Write_Impl&& other) = default;
Write_Impl& operator=(Write_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class WriteAt_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
WriteAt_Impl(::zx::unowned_channel _client_end, ::fidl::VectorView<uint8_t> data, uint64_t offset);
~WriteAt_Impl() = default;
WriteAt_Impl(WriteAt_Impl&& other) = default;
WriteAt_Impl& operator=(WriteAt_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Seek_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Seek_Impl(::zx::unowned_channel _client_end, int64_t offset, ::llcpp::fuchsia::io::SeekOrigin start);
~Seek_Impl() = default;
Seek_Impl(Seek_Impl&& other) = default;
Seek_Impl& operator=(Seek_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Truncate_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Truncate_Impl(::zx::unowned_channel _client_end, uint64_t length);
~Truncate_Impl() = default;
Truncate_Impl(Truncate_Impl&& other) = default;
Truncate_Impl& operator=(Truncate_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetFlags_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
GetFlags_Impl(::zx::unowned_channel _client_end);
~GetFlags_Impl() = default;
GetFlags_Impl(GetFlags_Impl&& other) = default;
GetFlags_Impl& operator=(GetFlags_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class SetFlags_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
SetFlags_Impl(::zx::unowned_channel _client_end, uint32_t flags);
~SetFlags_Impl() = default;
SetFlags_Impl(SetFlags_Impl&& other) = default;
SetFlags_Impl& operator=(SetFlags_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetBuffer_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
GetBuffer_Impl(::zx::unowned_channel _client_end, uint32_t flags);
~GetBuffer_Impl() = default;
GetBuffer_Impl(GetBuffer_Impl&& other) = default;
GetBuffer_Impl& operator=(GetBuffer_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
public:
using Clone = Clone_Impl;
using Close = Close_Impl<CloseResponse>;
using Describe = Describe_Impl<DescribeResponse>;
using Sync = Sync_Impl<SyncResponse>;
using GetAttr = GetAttr_Impl<GetAttrResponse>;
using SetAttr = SetAttr_Impl<SetAttrResponse>;
using NodeGetFlags = NodeGetFlags_Impl<NodeGetFlagsResponse>;
using NodeSetFlags = NodeSetFlags_Impl<NodeSetFlagsResponse>;
using Read = Read_Impl<ReadResponse>;
using ReadAt = ReadAt_Impl<ReadAtResponse>;
using Write = Write_Impl<WriteResponse>;
using WriteAt = WriteAt_Impl<WriteAtResponse>;
using Seek = Seek_Impl<SeekResponse>;
using Truncate = Truncate_Impl<TruncateResponse>;
using GetFlags = GetFlags_Impl<GetFlagsResponse>;
using SetFlags = SetFlags_Impl<SetFlagsResponse>;
using GetBuffer = GetBuffer_Impl<GetBufferResponse>;
};
// Collection of return types of FIDL calls in this interface,
// when the caller-allocate flavor or in-place call is used.
class UnownedResultOf final {
UnownedResultOf() = delete;
private:
class Clone_Impl final : private ::fidl::internal::StatusAndError {
using Super = ::fidl::internal::StatusAndError;
public:
Clone_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::zx::channel object);
~Clone_Impl() = default;
Clone_Impl(Clone_Impl&& other) = default;
Clone_Impl& operator=(Clone_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
};
template <typename ResponseType>
class Close_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Close_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~Close_Impl() = default;
Close_Impl(Close_Impl&& other) = default;
Close_Impl& operator=(Close_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Describe_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Describe_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~Describe_Impl() = default;
Describe_Impl(Describe_Impl&& other) = default;
Describe_Impl& operator=(Describe_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Sync_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Sync_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~Sync_Impl() = default;
Sync_Impl(Sync_Impl&& other) = default;
Sync_Impl& operator=(Sync_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetAttr_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
GetAttr_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~GetAttr_Impl() = default;
GetAttr_Impl(GetAttr_Impl&& other) = default;
GetAttr_Impl& operator=(GetAttr_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class SetAttr_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
SetAttr_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes, ::fidl::BytePart _response_buffer);
~SetAttr_Impl() = default;
SetAttr_Impl(SetAttr_Impl&& other) = default;
SetAttr_Impl& operator=(SetAttr_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class NodeGetFlags_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
NodeGetFlags_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~NodeGetFlags_Impl() = default;
NodeGetFlags_Impl(NodeGetFlags_Impl&& other) = default;
NodeGetFlags_Impl& operator=(NodeGetFlags_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class NodeSetFlags_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
NodeSetFlags_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::fidl::BytePart _response_buffer);
~NodeSetFlags_Impl() = default;
NodeSetFlags_Impl(NodeSetFlags_Impl&& other) = default;
NodeSetFlags_Impl& operator=(NodeSetFlags_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Read_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Read_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint64_t count, ::fidl::BytePart _response_buffer);
~Read_Impl() = default;
Read_Impl(Read_Impl&& other) = default;
Read_Impl& operator=(Read_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class ReadAt_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
ReadAt_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint64_t count, uint64_t offset, ::fidl::BytePart _response_buffer);
~ReadAt_Impl() = default;
ReadAt_Impl(ReadAt_Impl&& other) = default;
ReadAt_Impl& operator=(ReadAt_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Write_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Write_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::fidl::VectorView<uint8_t> data, ::fidl::BytePart _response_buffer);
~Write_Impl() = default;
Write_Impl(Write_Impl&& other) = default;
Write_Impl& operator=(Write_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class WriteAt_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
WriteAt_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::fidl::VectorView<uint8_t> data, uint64_t offset, ::fidl::BytePart _response_buffer);
~WriteAt_Impl() = default;
WriteAt_Impl(WriteAt_Impl&& other) = default;
WriteAt_Impl& operator=(WriteAt_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Seek_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Seek_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, int64_t offset, ::llcpp::fuchsia::io::SeekOrigin start, ::fidl::BytePart _response_buffer);
~Seek_Impl() = default;
Seek_Impl(Seek_Impl&& other) = default;
Seek_Impl& operator=(Seek_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Truncate_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Truncate_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint64_t length, ::fidl::BytePart _response_buffer);
~Truncate_Impl() = default;
Truncate_Impl(Truncate_Impl&& other) = default;
Truncate_Impl& operator=(Truncate_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetFlags_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
GetFlags_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~GetFlags_Impl() = default;
GetFlags_Impl(GetFlags_Impl&& other) = default;
GetFlags_Impl& operator=(GetFlags_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class SetFlags_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
SetFlags_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::fidl::BytePart _response_buffer);
~SetFlags_Impl() = default;
SetFlags_Impl(SetFlags_Impl&& other) = default;
SetFlags_Impl& operator=(SetFlags_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetBuffer_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
GetBuffer_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::fidl::BytePart _response_buffer);
~GetBuffer_Impl() = default;
GetBuffer_Impl(GetBuffer_Impl&& other) = default;
GetBuffer_Impl& operator=(GetBuffer_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
public:
using Clone = Clone_Impl;
using Close = Close_Impl<CloseResponse>;
using Describe = Describe_Impl<DescribeResponse>;
using Sync = Sync_Impl<SyncResponse>;
using GetAttr = GetAttr_Impl<GetAttrResponse>;
using SetAttr = SetAttr_Impl<SetAttrResponse>;
using NodeGetFlags = NodeGetFlags_Impl<NodeGetFlagsResponse>;
using NodeSetFlags = NodeSetFlags_Impl<NodeSetFlagsResponse>;
using Read = Read_Impl<ReadResponse>;
using ReadAt = ReadAt_Impl<ReadAtResponse>;
using Write = Write_Impl<WriteResponse>;
using WriteAt = WriteAt_Impl<WriteAtResponse>;
using Seek = Seek_Impl<SeekResponse>;
using Truncate = Truncate_Impl<TruncateResponse>;
using GetFlags = GetFlags_Impl<GetFlagsResponse>;
using SetFlags = SetFlags_Impl<SetFlagsResponse>;
using GetBuffer = GetBuffer_Impl<GetBufferResponse>;
};
class SyncClient final {
public:
explicit SyncClient(::zx::channel channel) : channel_(std::move(channel)) {}
~SyncClient() = default;
SyncClient(SyncClient&&) = default;
SyncClient& operator=(SyncClient&&) = default;
const ::zx::channel& channel() const { return channel_; }
::zx::channel* mutable_channel() { return &channel_; }
// Create another connection to the same remote object.
//
// `flags` may be any of:
//
// - `OPEN_RIGHT_*`
// - `OPEN_FLAG_APPEND`
// - `OPEN_FLAG_NO_REMOTE`
// - `OPEN_FLAG_DESCRIBE`
// - `CLONE_FLAG_SAME_RIGHTS`
//
// All other flags are ignored.
//
// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
// cloned object.
// The cloned object must have rights less than or equal to the original object.
// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
// `CLONE_FLAG_SAME_RIGHTS`.
// Allocates 24 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Clone Clone(uint32_t flags, ::zx::channel object);
// Create another connection to the same remote object.
//
// `flags` may be any of:
//
// - `OPEN_RIGHT_*`
// - `OPEN_FLAG_APPEND`
// - `OPEN_FLAG_NO_REMOTE`
// - `OPEN_FLAG_DESCRIBE`
// - `CLONE_FLAG_SAME_RIGHTS`
//
// All other flags are ignored.
//
// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
// cloned object.
// The cloned object must have rights less than or equal to the original object.
// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
// `CLONE_FLAG_SAME_RIGHTS`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Clone Clone(::fidl::BytePart _request_buffer, uint32_t flags, ::zx::channel object);
// Terminates connection with object.
//
// This method does not require any rights.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Close Close();
// Terminates connection with object.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Close Close(::fidl::BytePart _response_buffer);
// Returns extra information about the type of the object.
// If the `Describe` operation fails, the connection is closed.
//
// This method does not require any rights.
// Allocates 80 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Describe Describe();
// Returns extra information about the type of the object.
// If the `Describe` operation fails, the connection is closed.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Describe Describe(::fidl::BytePart _response_buffer);
// Synchronizes updates to the node to the underlying media, if it exists.
//
// This method does not require any rights.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Sync Sync();
// Synchronizes updates to the node to the underlying media, if it exists.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Sync Sync(::fidl::BytePart _response_buffer);
// Acquires information about the node.
//
// This method does not require any rights.
// Allocates 96 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::GetAttr GetAttr();
// Acquires information about the node.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::GetAttr GetAttr(::fidl::BytePart _response_buffer);
// Updates information about the node.
// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 104 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::SetAttr SetAttr(uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes);
// Updates information about the node.
// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::SetAttr SetAttr(::fidl::BytePart _request_buffer, uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes, ::fidl::BytePart _response_buffer);
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// This method has the same functionality as GetFlags for File and is
// meant as an in-progress replacement.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::NodeGetFlags NodeGetFlags();
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// This method has the same functionality as GetFlags for File and is
// meant as an in-progress replacement.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::NodeGetFlags NodeGetFlags(::fidl::BytePart _response_buffer);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// This method has the same functionality as SetFlags for File and is
// meant as an in-progress replacement.
// Allocates 48 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::NodeSetFlags NodeSetFlags(uint32_t flags);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// This method has the same functionality as SetFlags for File and is
// meant as an in-progress replacement.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::NodeSetFlags NodeSetFlags(::fidl::BytePart _request_buffer, uint32_t flags, ::fidl::BytePart _response_buffer);
// Reads `count` bytes at the seek offset.
// The seek offset is moved forward by the number of bytes read.
//
// This method requires following rights: `OPEN_RIGHT_READABLE`.
// Allocates 24 bytes of request buffer on the stack. Response is heap-allocated.
ResultOf::Read Read(uint64_t count);
// Reads `count` bytes at the seek offset.
// The seek offset is moved forward by the number of bytes read.
//
// This method requires following rights: `OPEN_RIGHT_READABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Read Read(::fidl::BytePart _request_buffer, uint64_t count, ::fidl::BytePart _response_buffer);
// Reads `count` bytes at the provided offset.
// Does not affect the seek offset.
//
// This method requires following rights: `OPEN_RIGHT_READABLE`.
// Allocates 32 bytes of request buffer on the stack. Response is heap-allocated.
ResultOf::ReadAt ReadAt(uint64_t count, uint64_t offset);
// Reads `count` bytes at the provided offset.
// Does not affect the seek offset.
//
// This method requires following rights: `OPEN_RIGHT_READABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::ReadAt ReadAt(::fidl::BytePart _request_buffer, uint64_t count, uint64_t offset, ::fidl::BytePart _response_buffer);
// Writes data at the seek offset.
// The seek offset is moved forward by the number of bytes written.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 32 bytes of response buffer on the stack. Request is heap-allocated.
ResultOf::Write Write(::fidl::VectorView<uint8_t> data);
// Writes data at the seek offset.
// The seek offset is moved forward by the number of bytes written.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Write Write(::fidl::BytePart _request_buffer, ::fidl::VectorView<uint8_t> data, ::fidl::BytePart _response_buffer);
// Writes data to the provided offset.
// Does not affect the seek offset.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 32 bytes of response buffer on the stack. Request is heap-allocated.
ResultOf::WriteAt WriteAt(::fidl::VectorView<uint8_t> data, uint64_t offset);
// Writes data to the provided offset.
// Does not affect the seek offset.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::WriteAt WriteAt(::fidl::BytePart _request_buffer, ::fidl::VectorView<uint8_t> data, uint64_t offset, ::fidl::BytePart _response_buffer);
// Moves the offset at which the next invocation of `Read()` or `Write()` will
// occur.
//
// This method does not require any rights.
// Allocates 64 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Seek Seek(int64_t offset, ::llcpp::fuchsia::io::SeekOrigin start);
// Moves the offset at which the next invocation of `Read()` or `Write()` will
// occur.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Seek Seek(::fidl::BytePart _request_buffer, int64_t offset, ::llcpp::fuchsia::io::SeekOrigin start, ::fidl::BytePart _response_buffer);
// Shrinks the file size to 'length' bytes.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 48 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Truncate Truncate(uint64_t length);
// Shrinks the file size to 'length' bytes.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Truncate Truncate(::fidl::BytePart _request_buffer, uint64_t length, ::fidl::BytePart _response_buffer);
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::GetFlags GetFlags();
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::GetFlags GetFlags(::fidl::BytePart _response_buffer);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// Allocates 48 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::SetFlags SetFlags(uint32_t flags);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::SetFlags SetFlags(::fidl::BytePart _request_buffer, uint32_t flags, ::fidl::BytePart _response_buffer);
// Acquires a buffer representing this file, if there is one, with the
// requested access rights.
//
// `flags` may be any of `VMO_FLAG_*`.
//
// This method requires following rights:
//
// - `OPEN_RIGHT_WRITABLE` if `flags` includes `VMO_FLAG_WRITE`.
// - `OPEN_RIGHT_READABLE` if `flags` includes `VMO_FLAG_READ` or `VMO_FLAG_EXEC`.
// Allocates 72 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::GetBuffer GetBuffer(uint32_t flags);
// Acquires a buffer representing this file, if there is one, with the
// requested access rights.
//
// `flags` may be any of `VMO_FLAG_*`.
//
// This method requires following rights:
//
// - `OPEN_RIGHT_WRITABLE` if `flags` includes `VMO_FLAG_WRITE`.
// - `OPEN_RIGHT_READABLE` if `flags` includes `VMO_FLAG_READ` or `VMO_FLAG_EXEC`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::GetBuffer GetBuffer(::fidl::BytePart _request_buffer, uint32_t flags, ::fidl::BytePart _response_buffer);
// Handle all possible events defined in this protocol.
// Blocks to consume exactly one message from the channel, then call the corresponding handler
// defined in |EventHandlers|. The return status of the handler function is folded with any
// transport-level errors and returned.
zx_status_t HandleEvents(EventHandlers handlers);
private:
::zx::channel channel_;
};
// Methods to make a sync FIDL call directly on an unowned channel, avoiding setting up a client.
class Call final {
Call() = delete;
public:
// Create another connection to the same remote object.
//
// `flags` may be any of:
//
// - `OPEN_RIGHT_*`
// - `OPEN_FLAG_APPEND`
// - `OPEN_FLAG_NO_REMOTE`
// - `OPEN_FLAG_DESCRIBE`
// - `CLONE_FLAG_SAME_RIGHTS`
//
// All other flags are ignored.
//
// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
// cloned object.
// The cloned object must have rights less than or equal to the original object.
// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
// `CLONE_FLAG_SAME_RIGHTS`.
// Allocates 24 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Clone Clone(::zx::unowned_channel _client_end, uint32_t flags, ::zx::channel object);
// Create another connection to the same remote object.
//
// `flags` may be any of:
//
// - `OPEN_RIGHT_*`
// - `OPEN_FLAG_APPEND`
// - `OPEN_FLAG_NO_REMOTE`
// - `OPEN_FLAG_DESCRIBE`
// - `CLONE_FLAG_SAME_RIGHTS`
//
// All other flags are ignored.
//
// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
// cloned object.
// The cloned object must have rights less than or equal to the original object.
// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
// `CLONE_FLAG_SAME_RIGHTS`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Clone Clone(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::zx::channel object);
// Terminates connection with object.
//
// This method does not require any rights.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Close Close(::zx::unowned_channel _client_end);
// Terminates connection with object.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Close Close(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Returns extra information about the type of the object.
// If the `Describe` operation fails, the connection is closed.
//
// This method does not require any rights.
// Allocates 80 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Describe Describe(::zx::unowned_channel _client_end);
// Returns extra information about the type of the object.
// If the `Describe` operation fails, the connection is closed.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Describe Describe(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Synchronizes updates to the node to the underlying media, if it exists.
//
// This method does not require any rights.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Sync Sync(::zx::unowned_channel _client_end);
// Synchronizes updates to the node to the underlying media, if it exists.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Sync Sync(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Acquires information about the node.
//
// This method does not require any rights.
// Allocates 96 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::GetAttr GetAttr(::zx::unowned_channel _client_end);
// Acquires information about the node.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::GetAttr GetAttr(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Updates information about the node.
// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 104 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::SetAttr SetAttr(::zx::unowned_channel _client_end, uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes);
// Updates information about the node.
// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::SetAttr SetAttr(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes, ::fidl::BytePart _response_buffer);
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// This method has the same functionality as GetFlags for File and is
// meant as an in-progress replacement.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::NodeGetFlags NodeGetFlags(::zx::unowned_channel _client_end);
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// This method has the same functionality as GetFlags for File and is
// meant as an in-progress replacement.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::NodeGetFlags NodeGetFlags(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// This method has the same functionality as SetFlags for File and is
// meant as an in-progress replacement.
// Allocates 48 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::NodeSetFlags NodeSetFlags(::zx::unowned_channel _client_end, uint32_t flags);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// This method has the same functionality as SetFlags for File and is
// meant as an in-progress replacement.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::NodeSetFlags NodeSetFlags(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::fidl::BytePart _response_buffer);
// Reads `count` bytes at the seek offset.
// The seek offset is moved forward by the number of bytes read.
//
// This method requires following rights: `OPEN_RIGHT_READABLE`.
// Allocates 24 bytes of request buffer on the stack. Response is heap-allocated.
static ResultOf::Read Read(::zx::unowned_channel _client_end, uint64_t count);
// Reads `count` bytes at the seek offset.
// The seek offset is moved forward by the number of bytes read.
//
// This method requires following rights: `OPEN_RIGHT_READABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Read Read(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint64_t count, ::fidl::BytePart _response_buffer);
// Reads `count` bytes at the provided offset.
// Does not affect the seek offset.
//
// This method requires following rights: `OPEN_RIGHT_READABLE`.
// Allocates 32 bytes of request buffer on the stack. Response is heap-allocated.
static ResultOf::ReadAt ReadAt(::zx::unowned_channel _client_end, uint64_t count, uint64_t offset);
// Reads `count` bytes at the provided offset.
// Does not affect the seek offset.
//
// This method requires following rights: `OPEN_RIGHT_READABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::ReadAt ReadAt(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint64_t count, uint64_t offset, ::fidl::BytePart _response_buffer);
// Writes data at the seek offset.
// The seek offset is moved forward by the number of bytes written.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 32 bytes of response buffer on the stack. Request is heap-allocated.
static ResultOf::Write Write(::zx::unowned_channel _client_end, ::fidl::VectorView<uint8_t> data);
// Writes data at the seek offset.
// The seek offset is moved forward by the number of bytes written.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Write Write(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::fidl::VectorView<uint8_t> data, ::fidl::BytePart _response_buffer);
// Writes data to the provided offset.
// Does not affect the seek offset.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 32 bytes of response buffer on the stack. Request is heap-allocated.
static ResultOf::WriteAt WriteAt(::zx::unowned_channel _client_end, ::fidl::VectorView<uint8_t> data, uint64_t offset);
// Writes data to the provided offset.
// Does not affect the seek offset.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::WriteAt WriteAt(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::fidl::VectorView<uint8_t> data, uint64_t offset, ::fidl::BytePart _response_buffer);
// Moves the offset at which the next invocation of `Read()` or `Write()` will
// occur.
//
// This method does not require any rights.
// Allocates 64 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Seek Seek(::zx::unowned_channel _client_end, int64_t offset, ::llcpp::fuchsia::io::SeekOrigin start);
// Moves the offset at which the next invocation of `Read()` or `Write()` will
// occur.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Seek Seek(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, int64_t offset, ::llcpp::fuchsia::io::SeekOrigin start, ::fidl::BytePart _response_buffer);
// Shrinks the file size to 'length' bytes.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 48 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Truncate Truncate(::zx::unowned_channel _client_end, uint64_t length);
// Shrinks the file size to 'length' bytes.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Truncate Truncate(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint64_t length, ::fidl::BytePart _response_buffer);
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::GetFlags GetFlags(::zx::unowned_channel _client_end);
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::GetFlags GetFlags(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// Allocates 48 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::SetFlags SetFlags(::zx::unowned_channel _client_end, uint32_t flags);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::SetFlags SetFlags(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::fidl::BytePart _response_buffer);
// Acquires a buffer representing this file, if there is one, with the
// requested access rights.
//
// `flags` may be any of `VMO_FLAG_*`.
//
// This method requires following rights:
//
// - `OPEN_RIGHT_WRITABLE` if `flags` includes `VMO_FLAG_WRITE`.
// - `OPEN_RIGHT_READABLE` if `flags` includes `VMO_FLAG_READ` or `VMO_FLAG_EXEC`.
// Allocates 72 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::GetBuffer GetBuffer(::zx::unowned_channel _client_end, uint32_t flags);
// Acquires a buffer representing this file, if there is one, with the
// requested access rights.
//
// `flags` may be any of `VMO_FLAG_*`.
//
// This method requires following rights:
//
// - `OPEN_RIGHT_WRITABLE` if `flags` includes `VMO_FLAG_WRITE`.
// - `OPEN_RIGHT_READABLE` if `flags` includes `VMO_FLAG_READ` or `VMO_FLAG_EXEC`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::GetBuffer GetBuffer(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::fidl::BytePart _response_buffer);
// Handle all possible events defined in this protocol.
// Blocks to consume exactly one message from the channel, then call the corresponding handler
// defined in |EventHandlers|. The return status of the handler function is folded with any
// transport-level errors and returned.
static zx_status_t HandleEvents(::zx::unowned_channel client_end, EventHandlers handlers);
};
// Messages are encoded and decoded in-place when these methods are used.
// Additionally, requests must be already laid-out according to the FIDL wire-format.
class InPlace final {
InPlace() = delete;
public:
// Create another connection to the same remote object.
//
// `flags` may be any of:
//
// - `OPEN_RIGHT_*`
// - `OPEN_FLAG_APPEND`
// - `OPEN_FLAG_NO_REMOTE`
// - `OPEN_FLAG_DESCRIBE`
// - `CLONE_FLAG_SAME_RIGHTS`
//
// All other flags are ignored.
//
// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
// cloned object.
// The cloned object must have rights less than or equal to the original object.
// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
// `CLONE_FLAG_SAME_RIGHTS`.
static ::fidl::internal::StatusAndError Clone(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<CloneRequest> params);
// Terminates connection with object.
//
// This method does not require any rights.
static ::fidl::DecodeResult<CloseResponse> Close(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Returns extra information about the type of the object.
// If the `Describe` operation fails, the connection is closed.
//
// This method does not require any rights.
static ::fidl::DecodeResult<DescribeResponse> Describe(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Synchronizes updates to the node to the underlying media, if it exists.
//
// This method does not require any rights.
static ::fidl::DecodeResult<SyncResponse> Sync(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Acquires information about the node.
//
// This method does not require any rights.
static ::fidl::DecodeResult<GetAttrResponse> GetAttr(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Updates information about the node.
// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
static ::fidl::DecodeResult<SetAttrResponse> SetAttr(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<SetAttrRequest> params, ::fidl::BytePart response_buffer);
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// This method has the same functionality as GetFlags for File and is
// meant as an in-progress replacement.
static ::fidl::DecodeResult<NodeGetFlagsResponse> NodeGetFlags(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// This method has the same functionality as SetFlags for File and is
// meant as an in-progress replacement.
static ::fidl::DecodeResult<NodeSetFlagsResponse> NodeSetFlags(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<NodeSetFlagsRequest> params, ::fidl::BytePart response_buffer);
// Reads `count` bytes at the seek offset.
// The seek offset is moved forward by the number of bytes read.
//
// This method requires following rights: `OPEN_RIGHT_READABLE`.
static ::fidl::DecodeResult<ReadResponse> Read(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<ReadRequest> params, ::fidl::BytePart response_buffer);
// Reads `count` bytes at the provided offset.
// Does not affect the seek offset.
//
// This method requires following rights: `OPEN_RIGHT_READABLE`.
static ::fidl::DecodeResult<ReadAtResponse> ReadAt(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<ReadAtRequest> params, ::fidl::BytePart response_buffer);
// Writes data at the seek offset.
// The seek offset is moved forward by the number of bytes written.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
static ::fidl::DecodeResult<WriteResponse> Write(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<WriteRequest> params, ::fidl::BytePart response_buffer);
// Writes data to the provided offset.
// Does not affect the seek offset.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
static ::fidl::DecodeResult<WriteAtResponse> WriteAt(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<WriteAtRequest> params, ::fidl::BytePart response_buffer);
// Moves the offset at which the next invocation of `Read()` or `Write()` will
// occur.
//
// This method does not require any rights.
static ::fidl::DecodeResult<SeekResponse> Seek(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<SeekRequest> params, ::fidl::BytePart response_buffer);
// Shrinks the file size to 'length' bytes.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
static ::fidl::DecodeResult<TruncateResponse> Truncate(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<TruncateRequest> params, ::fidl::BytePart response_buffer);
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
static ::fidl::DecodeResult<GetFlagsResponse> GetFlags(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
static ::fidl::DecodeResult<SetFlagsResponse> SetFlags(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<SetFlagsRequest> params, ::fidl::BytePart response_buffer);
// Acquires a buffer representing this file, if there is one, with the
// requested access rights.
//
// `flags` may be any of `VMO_FLAG_*`.
//
// This method requires following rights:
//
// - `OPEN_RIGHT_WRITABLE` if `flags` includes `VMO_FLAG_WRITE`.
// - `OPEN_RIGHT_READABLE` if `flags` includes `VMO_FLAG_READ` or `VMO_FLAG_EXEC`.
static ::fidl::DecodeResult<GetBufferResponse> GetBuffer(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<GetBufferRequest> params, ::fidl::BytePart response_buffer);
};
// Pure-virtual interface to be implemented by a server.
class Interface {
public:
Interface() = default;
virtual ~Interface() = default;
using _Outer = File;
using _Base = ::fidl::CompleterBase;
using CloneCompleter = ::fidl::Completer<>;
virtual void Clone(uint32_t flags, ::zx::channel object, CloneCompleter::Sync _completer) = 0;
class CloseCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<CloseResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using CloseCompleter = ::fidl::Completer<CloseCompleterBase>;
virtual void Close(CloseCompleter::Sync _completer) = 0;
class DescribeCompleterBase : public _Base {
public:
void Reply(::llcpp::fuchsia::io::NodeInfo info);
void Reply(::fidl::BytePart _buffer, ::llcpp::fuchsia::io::NodeInfo info);
void Reply(::fidl::DecodedMessage<DescribeResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using DescribeCompleter = ::fidl::Completer<DescribeCompleterBase>;
virtual void Describe(DescribeCompleter::Sync _completer) = 0;
class SyncCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<SyncResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using SyncCompleter = ::fidl::Completer<SyncCompleterBase>;
virtual void Sync(SyncCompleter::Sync _completer) = 0;
class GetAttrCompleterBase : public _Base {
public:
void Reply(int32_t s, ::llcpp::fuchsia::io::NodeAttributes attributes);
void Reply(::fidl::BytePart _buffer, int32_t s, ::llcpp::fuchsia::io::NodeAttributes attributes);
void Reply(::fidl::DecodedMessage<GetAttrResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using GetAttrCompleter = ::fidl::Completer<GetAttrCompleterBase>;
virtual void GetAttr(GetAttrCompleter::Sync _completer) = 0;
class SetAttrCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<SetAttrResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using SetAttrCompleter = ::fidl::Completer<SetAttrCompleterBase>;
virtual void SetAttr(uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes, SetAttrCompleter::Sync _completer) = 0;
class NodeGetFlagsCompleterBase : public _Base {
public:
void Reply(int32_t s, uint32_t flags);
void Reply(::fidl::BytePart _buffer, int32_t s, uint32_t flags);
void Reply(::fidl::DecodedMessage<NodeGetFlagsResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using NodeGetFlagsCompleter = ::fidl::Completer<NodeGetFlagsCompleterBase>;
virtual void NodeGetFlags(NodeGetFlagsCompleter::Sync _completer) { _completer.Close(ZX_ERR_NOT_SUPPORTED); }
class NodeSetFlagsCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<NodeSetFlagsResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using NodeSetFlagsCompleter = ::fidl::Completer<NodeSetFlagsCompleterBase>;
virtual void NodeSetFlags(uint32_t flags, NodeSetFlagsCompleter::Sync _completer) { _completer.Close(ZX_ERR_NOT_SUPPORTED); }
class ReadCompleterBase : public _Base {
public:
void Reply(int32_t s, ::fidl::VectorView<uint8_t> data);
void Reply(::fidl::BytePart _buffer, int32_t s, ::fidl::VectorView<uint8_t> data);
void Reply(::fidl::DecodedMessage<ReadResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using ReadCompleter = ::fidl::Completer<ReadCompleterBase>;
virtual void Read(uint64_t count, ReadCompleter::Sync _completer) = 0;
class ReadAtCompleterBase : public _Base {
public:
void Reply(int32_t s, ::fidl::VectorView<uint8_t> data);
void Reply(::fidl::BytePart _buffer, int32_t s, ::fidl::VectorView<uint8_t> data);
void Reply(::fidl::DecodedMessage<ReadAtResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using ReadAtCompleter = ::fidl::Completer<ReadAtCompleterBase>;
virtual void ReadAt(uint64_t count, uint64_t offset, ReadAtCompleter::Sync _completer) = 0;
class WriteCompleterBase : public _Base {
public:
void Reply(int32_t s, uint64_t actual);
void Reply(::fidl::BytePart _buffer, int32_t s, uint64_t actual);
void Reply(::fidl::DecodedMessage<WriteResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using WriteCompleter = ::fidl::Completer<WriteCompleterBase>;
virtual void Write(::fidl::VectorView<uint8_t> data, WriteCompleter::Sync _completer) = 0;
class WriteAtCompleterBase : public _Base {
public:
void Reply(int32_t s, uint64_t actual);
void Reply(::fidl::BytePart _buffer, int32_t s, uint64_t actual);
void Reply(::fidl::DecodedMessage<WriteAtResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using WriteAtCompleter = ::fidl::Completer<WriteAtCompleterBase>;
virtual void WriteAt(::fidl::VectorView<uint8_t> data, uint64_t offset, WriteAtCompleter::Sync _completer) = 0;
class SeekCompleterBase : public _Base {
public:
void Reply(int32_t s, uint64_t offset);
void Reply(::fidl::BytePart _buffer, int32_t s, uint64_t offset);
void Reply(::fidl::DecodedMessage<SeekResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using SeekCompleter = ::fidl::Completer<SeekCompleterBase>;
virtual void Seek(int64_t offset, ::llcpp::fuchsia::io::SeekOrigin start, SeekCompleter::Sync _completer) = 0;
class TruncateCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<TruncateResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using TruncateCompleter = ::fidl::Completer<TruncateCompleterBase>;
virtual void Truncate(uint64_t length, TruncateCompleter::Sync _completer) = 0;
class GetFlagsCompleterBase : public _Base {
public:
void Reply(int32_t s, uint32_t flags);
void Reply(::fidl::BytePart _buffer, int32_t s, uint32_t flags);
void Reply(::fidl::DecodedMessage<GetFlagsResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using GetFlagsCompleter = ::fidl::Completer<GetFlagsCompleterBase>;
virtual void GetFlags(GetFlagsCompleter::Sync _completer) = 0;
class SetFlagsCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<SetFlagsResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using SetFlagsCompleter = ::fidl::Completer<SetFlagsCompleterBase>;
virtual void SetFlags(uint32_t flags, SetFlagsCompleter::Sync _completer) = 0;
class GetBufferCompleterBase : public _Base {
public:
void Reply(int32_t s, ::llcpp::fuchsia::mem::Buffer* buffer);
void Reply(::fidl::BytePart _buffer, int32_t s, ::llcpp::fuchsia::mem::Buffer* buffer);
void Reply(::fidl::DecodedMessage<GetBufferResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using GetBufferCompleter = ::fidl::Completer<GetBufferCompleterBase>;
virtual void GetBuffer(uint32_t flags, GetBufferCompleter::Sync _completer) = 0;
};
// Attempts to dispatch the incoming message to a handler function in the server implementation.
// If there is no matching handler, it returns false, leaving the message and transaction intact.
// In all other cases, it consumes the message and returns true.
// It is possible to chain multiple TryDispatch functions in this manner.
static bool TryDispatch(Interface* impl, fidl_msg_t* msg, ::fidl::Transaction* txn);
// Dispatches the incoming message to one of the handlers functions in the interface.
// If there is no matching handler, it closes all the handles in |msg| and closes the channel with
// a |ZX_ERR_NOT_SUPPORTED| epitaph, before returning false. The message should then be discarded.
static bool Dispatch(Interface* impl, fidl_msg_t* msg, ::fidl::Transaction* txn);
// Same as |Dispatch|, but takes a |void*| instead of |Interface*|. Only used with |fidl::Bind|
// to reduce template expansion.
// Do not call this method manually. Use |Dispatch| instead.
static bool TypeErasedDispatch(void* impl, fidl_msg_t* msg, ::fidl::Transaction* txn) {
return Dispatch(static_cast<Interface*>(impl), msg, txn);
}
// An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
//
// Indicates the success or failure of the open operation, and optionally describes the
// object. If the status is `ZX_OK`, `info` contains descriptive information about the object
// (the same as would be returned by `Describe`).
static zx_status_t SendOnOpenEvent(::zx::unowned_channel _chan, int32_t s, ::llcpp::fuchsia::io::NodeInfo info);
// An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
//
// Indicates the success or failure of the open operation, and optionally describes the
// object. If the status is `ZX_OK`, `info` contains descriptive information about the object
// (the same as would be returned by `Describe`).
// Caller provides the backing storage for FIDL message via response buffers.
static zx_status_t SendOnOpenEvent(::zx::unowned_channel _chan, ::fidl::BytePart _buffer, int32_t s, ::llcpp::fuchsia::io::NodeInfo info);
// An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
//
// Indicates the success or failure of the open operation, and optionally describes the
// object. If the status is `ZX_OK`, `info` contains descriptive information about the object
// (the same as would be returned by `Describe`).
// Messages are encoded in-place.
static zx_status_t SendOnOpenEvent(::zx::unowned_channel _chan, ::fidl::DecodedMessage<OnOpenResponse> params);
// Helper functions to fill in the transaction header in a |DecodedMessage<TransactionalMessage>|.
class SetTransactionHeaderFor final {
SetTransactionHeaderFor() = delete;
public:
static void CloneRequest(const ::fidl::DecodedMessage<File::CloneRequest>& _msg);
static void CloseRequest(const ::fidl::DecodedMessage<File::CloseRequest>& _msg);
static void CloseResponse(const ::fidl::DecodedMessage<File::CloseResponse>& _msg);
static void DescribeRequest(const ::fidl::DecodedMessage<File::DescribeRequest>& _msg);
static void DescribeResponse(const ::fidl::DecodedMessage<File::DescribeResponse>& _msg);
static void OnOpenResponse(const ::fidl::DecodedMessage<File::OnOpenResponse>& _msg);
static void SyncRequest(const ::fidl::DecodedMessage<File::SyncRequest>& _msg);
static void SyncResponse(const ::fidl::DecodedMessage<File::SyncResponse>& _msg);
static void GetAttrRequest(const ::fidl::DecodedMessage<File::GetAttrRequest>& _msg);
static void GetAttrResponse(const ::fidl::DecodedMessage<File::GetAttrResponse>& _msg);
static void SetAttrRequest(const ::fidl::DecodedMessage<File::SetAttrRequest>& _msg);
static void SetAttrResponse(const ::fidl::DecodedMessage<File::SetAttrResponse>& _msg);
static void NodeGetFlagsRequest(const ::fidl::DecodedMessage<File::NodeGetFlagsRequest>& _msg);
static void NodeGetFlagsResponse(const ::fidl::DecodedMessage<File::NodeGetFlagsResponse>& _msg);
static void NodeSetFlagsRequest(const ::fidl::DecodedMessage<File::NodeSetFlagsRequest>& _msg);
static void NodeSetFlagsResponse(const ::fidl::DecodedMessage<File::NodeSetFlagsResponse>& _msg);
static void ReadRequest(const ::fidl::DecodedMessage<File::ReadRequest>& _msg);
static void ReadResponse(const ::fidl::DecodedMessage<File::ReadResponse>& _msg);
static void ReadAtRequest(const ::fidl::DecodedMessage<File::ReadAtRequest>& _msg);
static void ReadAtResponse(const ::fidl::DecodedMessage<File::ReadAtResponse>& _msg);
static void WriteRequest(const ::fidl::DecodedMessage<File::WriteRequest>& _msg);
static void WriteResponse(const ::fidl::DecodedMessage<File::WriteResponse>& _msg);
static void WriteAtRequest(const ::fidl::DecodedMessage<File::WriteAtRequest>& _msg);
static void WriteAtResponse(const ::fidl::DecodedMessage<File::WriteAtResponse>& _msg);
static void SeekRequest(const ::fidl::DecodedMessage<File::SeekRequest>& _msg);
static void SeekResponse(const ::fidl::DecodedMessage<File::SeekResponse>& _msg);
static void TruncateRequest(const ::fidl::DecodedMessage<File::TruncateRequest>& _msg);
static void TruncateResponse(const ::fidl::DecodedMessage<File::TruncateResponse>& _msg);
static void GetFlagsRequest(const ::fidl::DecodedMessage<File::GetFlagsRequest>& _msg);
static void GetFlagsResponse(const ::fidl::DecodedMessage<File::GetFlagsResponse>& _msg);
static void SetFlagsRequest(const ::fidl::DecodedMessage<File::SetFlagsRequest>& _msg);
static void SetFlagsResponse(const ::fidl::DecodedMessage<File::SetFlagsResponse>& _msg);
static void GetBufferRequest(const ::fidl::DecodedMessage<File::GetBufferRequest>& _msg);
static void GetBufferResponse(const ::fidl::DecodedMessage<File::GetBufferResponse>& _msg);
};
};
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryCloneRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryCloneResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryCloseRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryCloseResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryDescribeRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryDescribeResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryOnOpenRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryOnOpenEventTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectorySyncRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectorySyncResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryGetAttrRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryGetAttrResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectorySetAttrRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectorySetAttrResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryNodeGetFlagsRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryNodeGetFlagsResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryNodeSetFlagsRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryNodeSetFlagsResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryOpenRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryOpenResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryUnlinkRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryUnlinkResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryReadDirentsRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryReadDirentsResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryRewindRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryRewindResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryGetTokenRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryGetTokenResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryRenameRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryRenameResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryLinkRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryLinkResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryWatchRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryWatchResponseTable;
// Directory defines a node which is capable of containing other Objects.
class Directory final {
Directory() = delete;
public:
struct CloneRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint32_t flags;
::zx::channel object;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryCloneRequestTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 24;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
};
struct CloseResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryCloseResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using CloseRequest = ::fidl::AnyZeroArgMessage;
struct DescribeResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::llcpp::fuchsia::io::NodeInfo info;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryDescribeResponseTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 40;
static constexpr uint32_t MaxOutOfLine = 24;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = true;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using DescribeRequest = ::fidl::AnyZeroArgMessage;
struct OnOpenResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
::llcpp::fuchsia::io::NodeInfo info;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryOnOpenEventTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 48;
static constexpr uint32_t MaxOutOfLine = 24;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = true;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct SyncResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectorySyncResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using SyncRequest = ::fidl::AnyZeroArgMessage;
struct GetAttrResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
::llcpp::fuchsia::io::NodeAttributes attributes;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryGetAttrResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 80;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using GetAttrRequest = ::fidl::AnyZeroArgMessage;
struct SetAttrResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectorySetAttrResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct SetAttrRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint32_t flags;
::llcpp::fuchsia::io::NodeAttributes attributes;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectorySetAttrRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 80;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 80;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = SetAttrResponse;
};
struct NodeGetFlagsResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
uint32_t flags;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryNodeGetFlagsResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using NodeGetFlagsRequest = ::fidl::AnyZeroArgMessage;
struct NodeSetFlagsResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryNodeSetFlagsResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct NodeSetFlagsRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint32_t flags;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryNodeSetFlagsRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 24;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = NodeSetFlagsResponse;
};
struct OpenRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint32_t flags;
uint32_t mode;
::fidl::StringView path;
::zx::channel object;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryOpenRequestTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 48;
static constexpr uint32_t MaxOutOfLine = 4096;
static constexpr uint32_t AltPrimarySize = 48;
static constexpr uint32_t AltMaxOutOfLine = 4096;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
};
struct UnlinkResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryUnlinkResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct UnlinkRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::fidl::StringView path;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryUnlinkRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 32;
static constexpr uint32_t MaxOutOfLine = 4096;
static constexpr uint32_t AltPrimarySize = 32;
static constexpr uint32_t AltMaxOutOfLine = 4096;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = UnlinkResponse;
};
struct ReadDirentsResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
::fidl::VectorView<uint8_t> dirents;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryReadDirentsResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 40;
static constexpr uint32_t MaxOutOfLine = 8192;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct ReadDirentsRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint64_t max_bytes;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryReadDirentsRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 24;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = ReadDirentsResponse;
};
struct RewindResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryRewindResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using RewindRequest = ::fidl::AnyZeroArgMessage;
struct GetTokenResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
::zx::handle token;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryGetTokenResponseTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using GetTokenRequest = ::fidl::AnyZeroArgMessage;
struct RenameResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryRenameResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct RenameRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::fidl::StringView src;
::zx::handle dst_parent_token;
::fidl::StringView dst;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryRenameRequestTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 56;
static constexpr uint32_t MaxOutOfLine = 8192;
static constexpr uint32_t AltPrimarySize = 56;
static constexpr uint32_t AltMaxOutOfLine = 8192;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = RenameResponse;
};
struct LinkResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryLinkResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct LinkRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::fidl::StringView src;
::zx::handle dst_parent_token;
::fidl::StringView dst;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryLinkRequestTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 56;
static constexpr uint32_t MaxOutOfLine = 8192;
static constexpr uint32_t AltPrimarySize = 56;
static constexpr uint32_t AltMaxOutOfLine = 8192;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = LinkResponse;
};
struct WatchResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryWatchResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct WatchRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint32_t mask;
uint32_t options;
::zx::channel watcher;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryWatchRequestTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 32;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 32;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = WatchResponse;
};
struct EventHandlers {
// An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
//
// Indicates the success or failure of the open operation, and optionally describes the
// object. If the status is `ZX_OK`, `info` contains descriptive information about the object
// (the same as would be returned by `Describe`).
fit::callback<zx_status_t(int32_t s, ::llcpp::fuchsia::io::NodeInfo info)> on_open;
// Fallback handler when an unknown ordinal is received.
// Caller may put custom error handling logic here.
fit::callback<zx_status_t()> unknown;
};
// Collection of return types of FIDL calls in this interface.
class ResultOf final {
ResultOf() = delete;
private:
class Clone_Impl final : private ::fidl::internal::StatusAndError {
using Super = ::fidl::internal::StatusAndError;
public:
Clone_Impl(::zx::unowned_channel _client_end, uint32_t flags, ::zx::channel object);
~Clone_Impl() = default;
Clone_Impl(Clone_Impl&& other) = default;
Clone_Impl& operator=(Clone_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
};
template <typename ResponseType>
class Close_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Close_Impl(::zx::unowned_channel _client_end);
~Close_Impl() = default;
Close_Impl(Close_Impl&& other) = default;
Close_Impl& operator=(Close_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Describe_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Describe_Impl(::zx::unowned_channel _client_end);
~Describe_Impl() = default;
Describe_Impl(Describe_Impl&& other) = default;
Describe_Impl& operator=(Describe_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Sync_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Sync_Impl(::zx::unowned_channel _client_end);
~Sync_Impl() = default;
Sync_Impl(Sync_Impl&& other) = default;
Sync_Impl& operator=(Sync_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetAttr_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
GetAttr_Impl(::zx::unowned_channel _client_end);
~GetAttr_Impl() = default;
GetAttr_Impl(GetAttr_Impl&& other) = default;
GetAttr_Impl& operator=(GetAttr_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class SetAttr_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
SetAttr_Impl(::zx::unowned_channel _client_end, uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes);
~SetAttr_Impl() = default;
SetAttr_Impl(SetAttr_Impl&& other) = default;
SetAttr_Impl& operator=(SetAttr_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class NodeGetFlags_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
NodeGetFlags_Impl(::zx::unowned_channel _client_end);
~NodeGetFlags_Impl() = default;
NodeGetFlags_Impl(NodeGetFlags_Impl&& other) = default;
NodeGetFlags_Impl& operator=(NodeGetFlags_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class NodeSetFlags_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
NodeSetFlags_Impl(::zx::unowned_channel _client_end, uint32_t flags);
~NodeSetFlags_Impl() = default;
NodeSetFlags_Impl(NodeSetFlags_Impl&& other) = default;
NodeSetFlags_Impl& operator=(NodeSetFlags_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
class Open_Impl final : private ::fidl::internal::StatusAndError {
using Super = ::fidl::internal::StatusAndError;
public:
Open_Impl(::zx::unowned_channel _client_end, uint32_t flags, uint32_t mode, ::fidl::StringView path, ::zx::channel object);
~Open_Impl() = default;
Open_Impl(Open_Impl&& other) = default;
Open_Impl& operator=(Open_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
};
template <typename ResponseType>
class Unlink_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Unlink_Impl(::zx::unowned_channel _client_end, ::fidl::StringView path);
~Unlink_Impl() = default;
Unlink_Impl(Unlink_Impl&& other) = default;
Unlink_Impl& operator=(Unlink_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class ReadDirents_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
ReadDirents_Impl(::zx::unowned_channel _client_end, uint64_t max_bytes);
~ReadDirents_Impl() = default;
ReadDirents_Impl(ReadDirents_Impl&& other) = default;
ReadDirents_Impl& operator=(ReadDirents_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Rewind_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Rewind_Impl(::zx::unowned_channel _client_end);
~Rewind_Impl() = default;
Rewind_Impl(Rewind_Impl&& other) = default;
Rewind_Impl& operator=(Rewind_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetToken_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
GetToken_Impl(::zx::unowned_channel _client_end);
~GetToken_Impl() = default;
GetToken_Impl(GetToken_Impl&& other) = default;
GetToken_Impl& operator=(GetToken_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Rename_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Rename_Impl(::zx::unowned_channel _client_end, ::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst);
~Rename_Impl() = default;
Rename_Impl(Rename_Impl&& other) = default;
Rename_Impl& operator=(Rename_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Link_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Link_Impl(::zx::unowned_channel _client_end, ::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst);
~Link_Impl() = default;
Link_Impl(Link_Impl&& other) = default;
Link_Impl& operator=(Link_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Watch_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Watch_Impl(::zx::unowned_channel _client_end, uint32_t mask, uint32_t options, ::zx::channel watcher);
~Watch_Impl() = default;
Watch_Impl(Watch_Impl&& other) = default;
Watch_Impl& operator=(Watch_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
public:
using Clone = Clone_Impl;
using Close = Close_Impl<CloseResponse>;
using Describe = Describe_Impl<DescribeResponse>;
using Sync = Sync_Impl<SyncResponse>;
using GetAttr = GetAttr_Impl<GetAttrResponse>;
using SetAttr = SetAttr_Impl<SetAttrResponse>;
using NodeGetFlags = NodeGetFlags_Impl<NodeGetFlagsResponse>;
using NodeSetFlags = NodeSetFlags_Impl<NodeSetFlagsResponse>;
using Open = Open_Impl;
using Unlink = Unlink_Impl<UnlinkResponse>;
using ReadDirents = ReadDirents_Impl<ReadDirentsResponse>;
using Rewind = Rewind_Impl<RewindResponse>;
using GetToken = GetToken_Impl<GetTokenResponse>;
using Rename = Rename_Impl<RenameResponse>;
using Link = Link_Impl<LinkResponse>;
using Watch = Watch_Impl<WatchResponse>;
};
// Collection of return types of FIDL calls in this interface,
// when the caller-allocate flavor or in-place call is used.
class UnownedResultOf final {
UnownedResultOf() = delete;
private:
class Clone_Impl final : private ::fidl::internal::StatusAndError {
using Super = ::fidl::internal::StatusAndError;
public:
Clone_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::zx::channel object);
~Clone_Impl() = default;
Clone_Impl(Clone_Impl&& other) = default;
Clone_Impl& operator=(Clone_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
};
template <typename ResponseType>
class Close_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Close_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~Close_Impl() = default;
Close_Impl(Close_Impl&& other) = default;
Close_Impl& operator=(Close_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Describe_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Describe_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~Describe_Impl() = default;
Describe_Impl(Describe_Impl&& other) = default;
Describe_Impl& operator=(Describe_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Sync_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Sync_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~Sync_Impl() = default;
Sync_Impl(Sync_Impl&& other) = default;
Sync_Impl& operator=(Sync_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetAttr_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
GetAttr_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~GetAttr_Impl() = default;
GetAttr_Impl(GetAttr_Impl&& other) = default;
GetAttr_Impl& operator=(GetAttr_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class SetAttr_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
SetAttr_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes, ::fidl::BytePart _response_buffer);
~SetAttr_Impl() = default;
SetAttr_Impl(SetAttr_Impl&& other) = default;
SetAttr_Impl& operator=(SetAttr_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class NodeGetFlags_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
NodeGetFlags_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~NodeGetFlags_Impl() = default;
NodeGetFlags_Impl(NodeGetFlags_Impl&& other) = default;
NodeGetFlags_Impl& operator=(NodeGetFlags_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class NodeSetFlags_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
NodeSetFlags_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::fidl::BytePart _response_buffer);
~NodeSetFlags_Impl() = default;
NodeSetFlags_Impl(NodeSetFlags_Impl&& other) = default;
NodeSetFlags_Impl& operator=(NodeSetFlags_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
class Open_Impl final : private ::fidl::internal::StatusAndError {
using Super = ::fidl::internal::StatusAndError;
public:
Open_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, uint32_t mode, ::fidl::StringView path, ::zx::channel object);
~Open_Impl() = default;
Open_Impl(Open_Impl&& other) = default;
Open_Impl& operator=(Open_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
};
template <typename ResponseType>
class Unlink_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Unlink_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::fidl::StringView path, ::fidl::BytePart _response_buffer);
~Unlink_Impl() = default;
Unlink_Impl(Unlink_Impl&& other) = default;
Unlink_Impl& operator=(Unlink_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class ReadDirents_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
ReadDirents_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint64_t max_bytes, ::fidl::BytePart _response_buffer);
~ReadDirents_Impl() = default;
ReadDirents_Impl(ReadDirents_Impl&& other) = default;
ReadDirents_Impl& operator=(ReadDirents_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Rewind_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Rewind_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~Rewind_Impl() = default;
Rewind_Impl(Rewind_Impl&& other) = default;
Rewind_Impl& operator=(Rewind_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetToken_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
GetToken_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~GetToken_Impl() = default;
GetToken_Impl(GetToken_Impl&& other) = default;
GetToken_Impl& operator=(GetToken_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Rename_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Rename_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst, ::fidl::BytePart _response_buffer);
~Rename_Impl() = default;
Rename_Impl(Rename_Impl&& other) = default;
Rename_Impl& operator=(Rename_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Link_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Link_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst, ::fidl::BytePart _response_buffer);
~Link_Impl() = default;
Link_Impl(Link_Impl&& other) = default;
Link_Impl& operator=(Link_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Watch_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Watch_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t mask, uint32_t options, ::zx::channel watcher, ::fidl::BytePart _response_buffer);
~Watch_Impl() = default;
Watch_Impl(Watch_Impl&& other) = default;
Watch_Impl& operator=(Watch_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
public:
using Clone = Clone_Impl;
using Close = Close_Impl<CloseResponse>;
using Describe = Describe_Impl<DescribeResponse>;
using Sync = Sync_Impl<SyncResponse>;
using GetAttr = GetAttr_Impl<GetAttrResponse>;
using SetAttr = SetAttr_Impl<SetAttrResponse>;
using NodeGetFlags = NodeGetFlags_Impl<NodeGetFlagsResponse>;
using NodeSetFlags = NodeSetFlags_Impl<NodeSetFlagsResponse>;
using Open = Open_Impl;
using Unlink = Unlink_Impl<UnlinkResponse>;
using ReadDirents = ReadDirents_Impl<ReadDirentsResponse>;
using Rewind = Rewind_Impl<RewindResponse>;
using GetToken = GetToken_Impl<GetTokenResponse>;
using Rename = Rename_Impl<RenameResponse>;
using Link = Link_Impl<LinkResponse>;
using Watch = Watch_Impl<WatchResponse>;
};
class SyncClient final {
public:
explicit SyncClient(::zx::channel channel) : channel_(std::move(channel)) {}
~SyncClient() = default;
SyncClient(SyncClient&&) = default;
SyncClient& operator=(SyncClient&&) = default;
const ::zx::channel& channel() const { return channel_; }
::zx::channel* mutable_channel() { return &channel_; }
// Create another connection to the same remote object.
//
// `flags` may be any of:
//
// - `OPEN_RIGHT_*`
// - `OPEN_FLAG_APPEND`
// - `OPEN_FLAG_NO_REMOTE`
// - `OPEN_FLAG_DESCRIBE`
// - `CLONE_FLAG_SAME_RIGHTS`
//
// All other flags are ignored.
//
// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
// cloned object.
// The cloned object must have rights less than or equal to the original object.
// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
// `CLONE_FLAG_SAME_RIGHTS`.
// Allocates 24 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Clone Clone(uint32_t flags, ::zx::channel object);
// Create another connection to the same remote object.
//
// `flags` may be any of:
//
// - `OPEN_RIGHT_*`
// - `OPEN_FLAG_APPEND`
// - `OPEN_FLAG_NO_REMOTE`
// - `OPEN_FLAG_DESCRIBE`
// - `CLONE_FLAG_SAME_RIGHTS`
//
// All other flags are ignored.
//
// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
// cloned object.
// The cloned object must have rights less than or equal to the original object.
// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
// `CLONE_FLAG_SAME_RIGHTS`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Clone Clone(::fidl::BytePart _request_buffer, uint32_t flags, ::zx::channel object);
// Terminates connection with object.
//
// This method does not require any rights.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Close Close();
// Terminates connection with object.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Close Close(::fidl::BytePart _response_buffer);
// Returns extra information about the type of the object.
// If the `Describe` operation fails, the connection is closed.
//
// This method does not require any rights.
// Allocates 80 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Describe Describe();
// Returns extra information about the type of the object.
// If the `Describe` operation fails, the connection is closed.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Describe Describe(::fidl::BytePart _response_buffer);
// Synchronizes updates to the node to the underlying media, if it exists.
//
// This method does not require any rights.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Sync Sync();
// Synchronizes updates to the node to the underlying media, if it exists.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Sync Sync(::fidl::BytePart _response_buffer);
// Acquires information about the node.
//
// This method does not require any rights.
// Allocates 96 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::GetAttr GetAttr();
// Acquires information about the node.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::GetAttr GetAttr(::fidl::BytePart _response_buffer);
// Updates information about the node.
// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 104 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::SetAttr SetAttr(uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes);
// Updates information about the node.
// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::SetAttr SetAttr(::fidl::BytePart _request_buffer, uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes, ::fidl::BytePart _response_buffer);
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// This method has the same functionality as GetFlags for File and is
// meant as an in-progress replacement.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::NodeGetFlags NodeGetFlags();
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// This method has the same functionality as GetFlags for File and is
// meant as an in-progress replacement.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::NodeGetFlags NodeGetFlags(::fidl::BytePart _response_buffer);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// This method has the same functionality as SetFlags for File and is
// meant as an in-progress replacement.
// Allocates 48 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::NodeSetFlags NodeSetFlags(uint32_t flags);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// This method has the same functionality as SetFlags for File and is
// meant as an in-progress replacement.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::NodeSetFlags NodeSetFlags(::fidl::BytePart _request_buffer, uint32_t flags, ::fidl::BytePart _response_buffer);
// Opens a new object relative to this directory object.
//
// `path` may contain multiple segments, separated by "/" characters,
// and should never be empty; i.e., "" is an invalid path.
//
// `flags` may be any of the `OPEN_FLAG_*` and `OPEN_RIGHT_*` values, bitwise ORed together.
// The `OPEN_FLAG_DESCRIBE` flag may cause an `OnOpen` event to be transmitted
// on the `object` handle, indicating the type of object opened.
//
// If an unknown value is sent for either flags or mode, the connection should
// be closed.
//
// `OPEN_RIGHT_*` flags provided in `flags` will restrict access rights on
// the `object` channel which will be connected to the opened entity.
//
// Rights are never increased. When you open a nested entity within a directory, you may only
// request the same rights as what the directory connection already has, or a subset of those.
// Exceeding those rights causes an access denied error to be transmitted in the
// `OnOpen` event if applicable, and the `object` connection closed.
//
// The caller must specify either one or more of the `OPEN_RIGHT_*` flags, or
// the `OPEN_FLAG_NODE_REFERENCE` flag.
// Request is heap-allocated.
ResultOf::Open Open(uint32_t flags, uint32_t mode, ::fidl::StringView path, ::zx::channel object);
// Opens a new object relative to this directory object.
//
// `path` may contain multiple segments, separated by "/" characters,
// and should never be empty; i.e., "" is an invalid path.
//
// `flags` may be any of the `OPEN_FLAG_*` and `OPEN_RIGHT_*` values, bitwise ORed together.
// The `OPEN_FLAG_DESCRIBE` flag may cause an `OnOpen` event to be transmitted
// on the `object` handle, indicating the type of object opened.
//
// If an unknown value is sent for either flags or mode, the connection should
// be closed.
//
// `OPEN_RIGHT_*` flags provided in `flags` will restrict access rights on
// the `object` channel which will be connected to the opened entity.
//
// Rights are never increased. When you open a nested entity within a directory, you may only
// request the same rights as what the directory connection already has, or a subset of those.
// Exceeding those rights causes an access denied error to be transmitted in the
// `OnOpen` event if applicable, and the `object` connection closed.
//
// The caller must specify either one or more of the `OPEN_RIGHT_*` flags, or
// the `OPEN_FLAG_NODE_REFERENCE` flag.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Open Open(::fidl::BytePart _request_buffer, uint32_t flags, uint32_t mode, ::fidl::StringView path, ::zx::channel object);
// Detaches an object from this directory object.
//
// The underlying object may or may not be deleted after this method
// completes: although the link will be removed from the containing directory,
// objects with multiple references (such as files which are still open)
// will not actually be destroyed until all references are removed.
//
// If a directory is unlinked while it still has an open reference,
// it must become read-only, preventing new entries from being created
// until all references close and the directory is destroyed.
//
// `path` identifies the file which should be detached.
// If `path` contains multiple segments, separated by "/" characters,
// then the directory is traversed, one segment at a time, relative to the
// originally accessed Directory.
//
// Returns:
// `ZX_ERR_ACCESS_DENIED` if the connection (or the underlying filesystem) does not
// allow writable access.
// `ZX_ERR_INVALID_ARGS` if `path` contains ".." segments.
// `ZX_ERR_NOT_EMPTY` if `path` refers to a non-empty directory.
// `ZX_ERR_UNAVAILABLE` if `path` refers to a mount point, containing a remote channel.
// `ZX_ERR_UNAVAILABLE` if `path` is ".".
//
// Other errors may be returned for filesystem-specific reasons.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 24 bytes of response buffer on the stack. Request is heap-allocated.
ResultOf::Unlink Unlink(::fidl::StringView path);
// Detaches an object from this directory object.
//
// The underlying object may or may not be deleted after this method
// completes: although the link will be removed from the containing directory,
// objects with multiple references (such as files which are still open)
// will not actually be destroyed until all references are removed.
//
// If a directory is unlinked while it still has an open reference,
// it must become read-only, preventing new entries from being created
// until all references close and the directory is destroyed.
//
// `path` identifies the file which should be detached.
// If `path` contains multiple segments, separated by "/" characters,
// then the directory is traversed, one segment at a time, relative to the
// originally accessed Directory.
//
// Returns:
// `ZX_ERR_ACCESS_DENIED` if the connection (or the underlying filesystem) does not
// allow writable access.
// `ZX_ERR_INVALID_ARGS` if `path` contains ".." segments.
// `ZX_ERR_NOT_EMPTY` if `path` refers to a non-empty directory.
// `ZX_ERR_UNAVAILABLE` if `path` refers to a mount point, containing a remote channel.
// `ZX_ERR_UNAVAILABLE` if `path` is ".".
//
// Other errors may be returned for filesystem-specific reasons.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Unlink Unlink(::fidl::BytePart _request_buffer, ::fidl::StringView path, ::fidl::BytePart _response_buffer);
// Reads a collection of variably sized dirents into a buffer.
// The number of dirents in a directory may be very large: akin to
// calling read multiple times on a file, directories have a seek
// offset which is updated on subsequent calls to ReadDirents.
//
// These dirents are of the form:
// ```
// struct dirent {
// // Describes the inode of the entry.
// uint64 ino;
// // Describes the length of the dirent name in bytes.
// uint8 size;
// // Describes the type of the entry. Aligned with the
// // POSIX d_type values. Use `DIRENT_TYPE_*` constants.
// uint8 type;
// // Unterminated name of entry.
// char name[0];
// }
// ```
//
// This method does not require any rights, since one could always probe for
// directory contents by triggering name conflicts during file creation.
// Allocates 24 bytes of request buffer on the stack. Response is heap-allocated.
ResultOf::ReadDirents ReadDirents(uint64_t max_bytes);
// Reads a collection of variably sized dirents into a buffer.
// The number of dirents in a directory may be very large: akin to
// calling read multiple times on a file, directories have a seek
// offset which is updated on subsequent calls to ReadDirents.
//
// These dirents are of the form:
// ```
// struct dirent {
// // Describes the inode of the entry.
// uint64 ino;
// // Describes the length of the dirent name in bytes.
// uint8 size;
// // Describes the type of the entry. Aligned with the
// // POSIX d_type values. Use `DIRENT_TYPE_*` constants.
// uint8 type;
// // Unterminated name of entry.
// char name[0];
// }
// ```
//
// This method does not require any rights, since one could always probe for
// directory contents by triggering name conflicts during file creation.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::ReadDirents ReadDirents(::fidl::BytePart _request_buffer, uint64_t max_bytes, ::fidl::BytePart _response_buffer);
// Resets the directory seek offset.
//
// This method does not require any rights, similar to ReadDirents.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Rewind Rewind();
// Resets the directory seek offset.
//
// This method does not require any rights, similar to ReadDirents.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Rewind Rewind(::fidl::BytePart _response_buffer);
// Acquires a token to a Directory which can be used to identify
// access to it at a later point in time.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::GetToken GetToken();
// Acquires a token to a Directory which can be used to identify
// access to it at a later point in time.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::GetToken GetToken(::fidl::BytePart _response_buffer);
// Renames an object named src to the name dst, in a directory represented by token.
//
// `src/dst` must be resolved object names. Including "/" in any position
// other than the end of the string will return `ZX_ERR_INVALID_ARGS`.
// Returning "/" at the end of either string implies that it must be a
// directory, or else `ZX_ERR_NOT_DIR` should be returned.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 24 bytes of response buffer on the stack. Request is heap-allocated.
ResultOf::Rename Rename(::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst);
// Renames an object named src to the name dst, in a directory represented by token.
//
// `src/dst` must be resolved object names. Including "/" in any position
// other than the end of the string will return `ZX_ERR_INVALID_ARGS`.
// Returning "/" at the end of either string implies that it must be a
// directory, or else `ZX_ERR_NOT_DIR` should be returned.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Rename Rename(::fidl::BytePart _request_buffer, ::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst, ::fidl::BytePart _response_buffer);
// Creates a link to an object named src by the name dst, within a directory represented by
// token.
//
// `src` must be a resolved object name. Including "/" in the string will
// return `ZX_ERR_INVALID_ARGS`.
//
// `dst` must be a resolved object name. Including "/" in the string will
// return `ZX_ERR_INVALID_ARGS`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 24 bytes of response buffer on the stack. Request is heap-allocated.
ResultOf::Link Link(::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst);
// Creates a link to an object named src by the name dst, within a directory represented by
// token.
//
// `src` must be a resolved object name. Including "/" in the string will
// return `ZX_ERR_INVALID_ARGS`.
//
// `dst` must be a resolved object name. Including "/" in the string will
// return `ZX_ERR_INVALID_ARGS`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Link Link(::fidl::BytePart _request_buffer, ::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst, ::fidl::BytePart _response_buffer);
// Watches a directory, receiving events of added messages on the
// watcher request channel.
//
// The `watcher` handle will send messages of the form:
// ```
// struct {
// uint8 event;
// uint8 len;
// char name[];
// };
// ```
// Where names are NOT null-terminated.
//
// This API is unstable; in the future, watcher will be a `DirectoryWatcher` client.
//
// Mask specifies a bitmask of events to observe.
// Options must be zero; it is reserved.
//
// This method does not require any rights, similar to ReadDirents.
// Allocates 56 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Watch Watch(uint32_t mask, uint32_t options, ::zx::channel watcher);
// Watches a directory, receiving events of added messages on the
// watcher request channel.
//
// The `watcher` handle will send messages of the form:
// ```
// struct {
// uint8 event;
// uint8 len;
// char name[];
// };
// ```
// Where names are NOT null-terminated.
//
// This API is unstable; in the future, watcher will be a `DirectoryWatcher` client.
//
// Mask specifies a bitmask of events to observe.
// Options must be zero; it is reserved.
//
// This method does not require any rights, similar to ReadDirents.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Watch Watch(::fidl::BytePart _request_buffer, uint32_t mask, uint32_t options, ::zx::channel watcher, ::fidl::BytePart _response_buffer);
// Handle all possible events defined in this protocol.
// Blocks to consume exactly one message from the channel, then call the corresponding handler
// defined in |EventHandlers|. The return status of the handler function is folded with any
// transport-level errors and returned.
zx_status_t HandleEvents(EventHandlers handlers);
private:
::zx::channel channel_;
};
// Methods to make a sync FIDL call directly on an unowned channel, avoiding setting up a client.
class Call final {
Call() = delete;
public:
// Create another connection to the same remote object.
//
// `flags` may be any of:
//
// - `OPEN_RIGHT_*`
// - `OPEN_FLAG_APPEND`
// - `OPEN_FLAG_NO_REMOTE`
// - `OPEN_FLAG_DESCRIBE`
// - `CLONE_FLAG_SAME_RIGHTS`
//
// All other flags are ignored.
//
// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
// cloned object.
// The cloned object must have rights less than or equal to the original object.
// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
// `CLONE_FLAG_SAME_RIGHTS`.
// Allocates 24 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Clone Clone(::zx::unowned_channel _client_end, uint32_t flags, ::zx::channel object);
// Create another connection to the same remote object.
//
// `flags` may be any of:
//
// - `OPEN_RIGHT_*`
// - `OPEN_FLAG_APPEND`
// - `OPEN_FLAG_NO_REMOTE`
// - `OPEN_FLAG_DESCRIBE`
// - `CLONE_FLAG_SAME_RIGHTS`
//
// All other flags are ignored.
//
// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
// cloned object.
// The cloned object must have rights less than or equal to the original object.
// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
// `CLONE_FLAG_SAME_RIGHTS`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Clone Clone(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::zx::channel object);
// Terminates connection with object.
//
// This method does not require any rights.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Close Close(::zx::unowned_channel _client_end);
// Terminates connection with object.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Close Close(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Returns extra information about the type of the object.
// If the `Describe` operation fails, the connection is closed.
//
// This method does not require any rights.
// Allocates 80 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Describe Describe(::zx::unowned_channel _client_end);
// Returns extra information about the type of the object.
// If the `Describe` operation fails, the connection is closed.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Describe Describe(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Synchronizes updates to the node to the underlying media, if it exists.
//
// This method does not require any rights.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Sync Sync(::zx::unowned_channel _client_end);
// Synchronizes updates to the node to the underlying media, if it exists.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Sync Sync(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Acquires information about the node.
//
// This method does not require any rights.
// Allocates 96 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::GetAttr GetAttr(::zx::unowned_channel _client_end);
// Acquires information about the node.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::GetAttr GetAttr(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Updates information about the node.
// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 104 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::SetAttr SetAttr(::zx::unowned_channel _client_end, uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes);
// Updates information about the node.
// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::SetAttr SetAttr(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes, ::fidl::BytePart _response_buffer);
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// This method has the same functionality as GetFlags for File and is
// meant as an in-progress replacement.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::NodeGetFlags NodeGetFlags(::zx::unowned_channel _client_end);
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// This method has the same functionality as GetFlags for File and is
// meant as an in-progress replacement.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::NodeGetFlags NodeGetFlags(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// This method has the same functionality as SetFlags for File and is
// meant as an in-progress replacement.
// Allocates 48 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::NodeSetFlags NodeSetFlags(::zx::unowned_channel _client_end, uint32_t flags);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// This method has the same functionality as SetFlags for File and is
// meant as an in-progress replacement.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::NodeSetFlags NodeSetFlags(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::fidl::BytePart _response_buffer);
// Opens a new object relative to this directory object.
//
// `path` may contain multiple segments, separated by "/" characters,
// and should never be empty; i.e., "" is an invalid path.
//
// `flags` may be any of the `OPEN_FLAG_*` and `OPEN_RIGHT_*` values, bitwise ORed together.
// The `OPEN_FLAG_DESCRIBE` flag may cause an `OnOpen` event to be transmitted
// on the `object` handle, indicating the type of object opened.
//
// If an unknown value is sent for either flags or mode, the connection should
// be closed.
//
// `OPEN_RIGHT_*` flags provided in `flags` will restrict access rights on
// the `object` channel which will be connected to the opened entity.
//
// Rights are never increased. When you open a nested entity within a directory, you may only
// request the same rights as what the directory connection already has, or a subset of those.
// Exceeding those rights causes an access denied error to be transmitted in the
// `OnOpen` event if applicable, and the `object` connection closed.
//
// The caller must specify either one or more of the `OPEN_RIGHT_*` flags, or
// the `OPEN_FLAG_NODE_REFERENCE` flag.
// Request is heap-allocated.
static ResultOf::Open Open(::zx::unowned_channel _client_end, uint32_t flags, uint32_t mode, ::fidl::StringView path, ::zx::channel object);
// Opens a new object relative to this directory object.
//
// `path` may contain multiple segments, separated by "/" characters,
// and should never be empty; i.e., "" is an invalid path.
//
// `flags` may be any of the `OPEN_FLAG_*` and `OPEN_RIGHT_*` values, bitwise ORed together.
// The `OPEN_FLAG_DESCRIBE` flag may cause an `OnOpen` event to be transmitted
// on the `object` handle, indicating the type of object opened.
//
// If an unknown value is sent for either flags or mode, the connection should
// be closed.
//
// `OPEN_RIGHT_*` flags provided in `flags` will restrict access rights on
// the `object` channel which will be connected to the opened entity.
//
// Rights are never increased. When you open a nested entity within a directory, you may only
// request the same rights as what the directory connection already has, or a subset of those.
// Exceeding those rights causes an access denied error to be transmitted in the
// `OnOpen` event if applicable, and the `object` connection closed.
//
// The caller must specify either one or more of the `OPEN_RIGHT_*` flags, or
// the `OPEN_FLAG_NODE_REFERENCE` flag.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Open Open(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, uint32_t mode, ::fidl::StringView path, ::zx::channel object);
// Detaches an object from this directory object.
//
// The underlying object may or may not be deleted after this method
// completes: although the link will be removed from the containing directory,
// objects with multiple references (such as files which are still open)
// will not actually be destroyed until all references are removed.
//
// If a directory is unlinked while it still has an open reference,
// it must become read-only, preventing new entries from being created
// until all references close and the directory is destroyed.
//
// `path` identifies the file which should be detached.
// If `path` contains multiple segments, separated by "/" characters,
// then the directory is traversed, one segment at a time, relative to the
// originally accessed Directory.
//
// Returns:
// `ZX_ERR_ACCESS_DENIED` if the connection (or the underlying filesystem) does not
// allow writable access.
// `ZX_ERR_INVALID_ARGS` if `path` contains ".." segments.
// `ZX_ERR_NOT_EMPTY` if `path` refers to a non-empty directory.
// `ZX_ERR_UNAVAILABLE` if `path` refers to a mount point, containing a remote channel.
// `ZX_ERR_UNAVAILABLE` if `path` is ".".
//
// Other errors may be returned for filesystem-specific reasons.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 24 bytes of response buffer on the stack. Request is heap-allocated.
static ResultOf::Unlink Unlink(::zx::unowned_channel _client_end, ::fidl::StringView path);
// Detaches an object from this directory object.
//
// The underlying object may or may not be deleted after this method
// completes: although the link will be removed from the containing directory,
// objects with multiple references (such as files which are still open)
// will not actually be destroyed until all references are removed.
//
// If a directory is unlinked while it still has an open reference,
// it must become read-only, preventing new entries from being created
// until all references close and the directory is destroyed.
//
// `path` identifies the file which should be detached.
// If `path` contains multiple segments, separated by "/" characters,
// then the directory is traversed, one segment at a time, relative to the
// originally accessed Directory.
//
// Returns:
// `ZX_ERR_ACCESS_DENIED` if the connection (or the underlying filesystem) does not
// allow writable access.
// `ZX_ERR_INVALID_ARGS` if `path` contains ".." segments.
// `ZX_ERR_NOT_EMPTY` if `path` refers to a non-empty directory.
// `ZX_ERR_UNAVAILABLE` if `path` refers to a mount point, containing a remote channel.
// `ZX_ERR_UNAVAILABLE` if `path` is ".".
//
// Other errors may be returned for filesystem-specific reasons.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Unlink Unlink(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::fidl::StringView path, ::fidl::BytePart _response_buffer);
// Reads a collection of variably sized dirents into a buffer.
// The number of dirents in a directory may be very large: akin to
// calling read multiple times on a file, directories have a seek
// offset which is updated on subsequent calls to ReadDirents.
//
// These dirents are of the form:
// ```
// struct dirent {
// // Describes the inode of the entry.
// uint64 ino;
// // Describes the length of the dirent name in bytes.
// uint8 size;
// // Describes the type of the entry. Aligned with the
// // POSIX d_type values. Use `DIRENT_TYPE_*` constants.
// uint8 type;
// // Unterminated name of entry.
// char name[0];
// }
// ```
//
// This method does not require any rights, since one could always probe for
// directory contents by triggering name conflicts during file creation.
// Allocates 24 bytes of request buffer on the stack. Response is heap-allocated.
static ResultOf::ReadDirents ReadDirents(::zx::unowned_channel _client_end, uint64_t max_bytes);
// Reads a collection of variably sized dirents into a buffer.
// The number of dirents in a directory may be very large: akin to
// calling read multiple times on a file, directories have a seek
// offset which is updated on subsequent calls to ReadDirents.
//
// These dirents are of the form:
// ```
// struct dirent {
// // Describes the inode of the entry.
// uint64 ino;
// // Describes the length of the dirent name in bytes.
// uint8 size;
// // Describes the type of the entry. Aligned with the
// // POSIX d_type values. Use `DIRENT_TYPE_*` constants.
// uint8 type;
// // Unterminated name of entry.
// char name[0];
// }
// ```
//
// This method does not require any rights, since one could always probe for
// directory contents by triggering name conflicts during file creation.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::ReadDirents ReadDirents(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint64_t max_bytes, ::fidl::BytePart _response_buffer);
// Resets the directory seek offset.
//
// This method does not require any rights, similar to ReadDirents.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Rewind Rewind(::zx::unowned_channel _client_end);
// Resets the directory seek offset.
//
// This method does not require any rights, similar to ReadDirents.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Rewind Rewind(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Acquires a token to a Directory which can be used to identify
// access to it at a later point in time.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::GetToken GetToken(::zx::unowned_channel _client_end);
// Acquires a token to a Directory which can be used to identify
// access to it at a later point in time.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::GetToken GetToken(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Renames an object named src to the name dst, in a directory represented by token.
//
// `src/dst` must be resolved object names. Including "/" in any position
// other than the end of the string will return `ZX_ERR_INVALID_ARGS`.
// Returning "/" at the end of either string implies that it must be a
// directory, or else `ZX_ERR_NOT_DIR` should be returned.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 24 bytes of response buffer on the stack. Request is heap-allocated.
static ResultOf::Rename Rename(::zx::unowned_channel _client_end, ::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst);
// Renames an object named src to the name dst, in a directory represented by token.
//
// `src/dst` must be resolved object names. Including "/" in any position
// other than the end of the string will return `ZX_ERR_INVALID_ARGS`.
// Returning "/" at the end of either string implies that it must be a
// directory, or else `ZX_ERR_NOT_DIR` should be returned.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Rename Rename(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst, ::fidl::BytePart _response_buffer);
// Creates a link to an object named src by the name dst, within a directory represented by
// token.
//
// `src` must be a resolved object name. Including "/" in the string will
// return `ZX_ERR_INVALID_ARGS`.
//
// `dst` must be a resolved object name. Including "/" in the string will
// return `ZX_ERR_INVALID_ARGS`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 24 bytes of response buffer on the stack. Request is heap-allocated.
static ResultOf::Link Link(::zx::unowned_channel _client_end, ::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst);
// Creates a link to an object named src by the name dst, within a directory represented by
// token.
//
// `src` must be a resolved object name. Including "/" in the string will
// return `ZX_ERR_INVALID_ARGS`.
//
// `dst` must be a resolved object name. Including "/" in the string will
// return `ZX_ERR_INVALID_ARGS`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Link Link(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst, ::fidl::BytePart _response_buffer);
// Watches a directory, receiving events of added messages on the
// watcher request channel.
//
// The `watcher` handle will send messages of the form:
// ```
// struct {
// uint8 event;
// uint8 len;
// char name[];
// };
// ```
// Where names are NOT null-terminated.
//
// This API is unstable; in the future, watcher will be a `DirectoryWatcher` client.
//
// Mask specifies a bitmask of events to observe.
// Options must be zero; it is reserved.
//
// This method does not require any rights, similar to ReadDirents.
// Allocates 56 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Watch Watch(::zx::unowned_channel _client_end, uint32_t mask, uint32_t options, ::zx::channel watcher);
// Watches a directory, receiving events of added messages on the
// watcher request channel.
//
// The `watcher` handle will send messages of the form:
// ```
// struct {
// uint8 event;
// uint8 len;
// char name[];
// };
// ```
// Where names are NOT null-terminated.
//
// This API is unstable; in the future, watcher will be a `DirectoryWatcher` client.
//
// Mask specifies a bitmask of events to observe.
// Options must be zero; it is reserved.
//
// This method does not require any rights, similar to ReadDirents.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Watch Watch(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t mask, uint32_t options, ::zx::channel watcher, ::fidl::BytePart _response_buffer);
// Handle all possible events defined in this protocol.
// Blocks to consume exactly one message from the channel, then call the corresponding handler
// defined in |EventHandlers|. The return status of the handler function is folded with any
// transport-level errors and returned.
static zx_status_t HandleEvents(::zx::unowned_channel client_end, EventHandlers handlers);
};
// Messages are encoded and decoded in-place when these methods are used.
// Additionally, requests must be already laid-out according to the FIDL wire-format.
class InPlace final {
InPlace() = delete;
public:
// Create another connection to the same remote object.
//
// `flags` may be any of:
//
// - `OPEN_RIGHT_*`
// - `OPEN_FLAG_APPEND`
// - `OPEN_FLAG_NO_REMOTE`
// - `OPEN_FLAG_DESCRIBE`
// - `CLONE_FLAG_SAME_RIGHTS`
//
// All other flags are ignored.
//
// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
// cloned object.
// The cloned object must have rights less than or equal to the original object.
// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
// `CLONE_FLAG_SAME_RIGHTS`.
static ::fidl::internal::StatusAndError Clone(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<CloneRequest> params);
// Terminates connection with object.
//
// This method does not require any rights.
static ::fidl::DecodeResult<CloseResponse> Close(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Returns extra information about the type of the object.
// If the `Describe` operation fails, the connection is closed.
//
// This method does not require any rights.
static ::fidl::DecodeResult<DescribeResponse> Describe(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Synchronizes updates to the node to the underlying media, if it exists.
//
// This method does not require any rights.
static ::fidl::DecodeResult<SyncResponse> Sync(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Acquires information about the node.
//
// This method does not require any rights.
static ::fidl::DecodeResult<GetAttrResponse> GetAttr(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Updates information about the node.
// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
static ::fidl::DecodeResult<SetAttrResponse> SetAttr(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<SetAttrRequest> params, ::fidl::BytePart response_buffer);
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// This method has the same functionality as GetFlags for File and is
// meant as an in-progress replacement.
static ::fidl::DecodeResult<NodeGetFlagsResponse> NodeGetFlags(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// This method has the same functionality as SetFlags for File and is
// meant as an in-progress replacement.
static ::fidl::DecodeResult<NodeSetFlagsResponse> NodeSetFlags(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<NodeSetFlagsRequest> params, ::fidl::BytePart response_buffer);
// Opens a new object relative to this directory object.
//
// `path` may contain multiple segments, separated by "/" characters,
// and should never be empty; i.e., "" is an invalid path.
//
// `flags` may be any of the `OPEN_FLAG_*` and `OPEN_RIGHT_*` values, bitwise ORed together.
// The `OPEN_FLAG_DESCRIBE` flag may cause an `OnOpen` event to be transmitted
// on the `object` handle, indicating the type of object opened.
//
// If an unknown value is sent for either flags or mode, the connection should
// be closed.
//
// `OPEN_RIGHT_*` flags provided in `flags` will restrict access rights on
// the `object` channel which will be connected to the opened entity.
//
// Rights are never increased. When you open a nested entity within a directory, you may only
// request the same rights as what the directory connection already has, or a subset of those.
// Exceeding those rights causes an access denied error to be transmitted in the
// `OnOpen` event if applicable, and the `object` connection closed.
//
// The caller must specify either one or more of the `OPEN_RIGHT_*` flags, or
// the `OPEN_FLAG_NODE_REFERENCE` flag.
static ::fidl::internal::StatusAndError Open(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<OpenRequest> params);
// Detaches an object from this directory object.
//
// The underlying object may or may not be deleted after this method
// completes: although the link will be removed from the containing directory,
// objects with multiple references (such as files which are still open)
// will not actually be destroyed until all references are removed.
//
// If a directory is unlinked while it still has an open reference,
// it must become read-only, preventing new entries from being created
// until all references close and the directory is destroyed.
//
// `path` identifies the file which should be detached.
// If `path` contains multiple segments, separated by "/" characters,
// then the directory is traversed, one segment at a time, relative to the
// originally accessed Directory.
//
// Returns:
// `ZX_ERR_ACCESS_DENIED` if the connection (or the underlying filesystem) does not
// allow writable access.
// `ZX_ERR_INVALID_ARGS` if `path` contains ".." segments.
// `ZX_ERR_NOT_EMPTY` if `path` refers to a non-empty directory.
// `ZX_ERR_UNAVAILABLE` if `path` refers to a mount point, containing a remote channel.
// `ZX_ERR_UNAVAILABLE` if `path` is ".".
//
// Other errors may be returned for filesystem-specific reasons.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
static ::fidl::DecodeResult<UnlinkResponse> Unlink(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<UnlinkRequest> params, ::fidl::BytePart response_buffer);
// Reads a collection of variably sized dirents into a buffer.
// The number of dirents in a directory may be very large: akin to
// calling read multiple times on a file, directories have a seek
// offset which is updated on subsequent calls to ReadDirents.
//
// These dirents are of the form:
// ```
// struct dirent {
// // Describes the inode of the entry.
// uint64 ino;
// // Describes the length of the dirent name in bytes.
// uint8 size;
// // Describes the type of the entry. Aligned with the
// // POSIX d_type values. Use `DIRENT_TYPE_*` constants.
// uint8 type;
// // Unterminated name of entry.
// char name[0];
// }
// ```
//
// This method does not require any rights, since one could always probe for
// directory contents by triggering name conflicts during file creation.
static ::fidl::DecodeResult<ReadDirentsResponse> ReadDirents(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<ReadDirentsRequest> params, ::fidl::BytePart response_buffer);
// Resets the directory seek offset.
//
// This method does not require any rights, similar to ReadDirents.
static ::fidl::DecodeResult<RewindResponse> Rewind(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Acquires a token to a Directory which can be used to identify
// access to it at a later point in time.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
static ::fidl::DecodeResult<GetTokenResponse> GetToken(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Renames an object named src to the name dst, in a directory represented by token.
//
// `src/dst` must be resolved object names. Including "/" in any position
// other than the end of the string will return `ZX_ERR_INVALID_ARGS`.
// Returning "/" at the end of either string implies that it must be a
// directory, or else `ZX_ERR_NOT_DIR` should be returned.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
static ::fidl::DecodeResult<RenameResponse> Rename(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<RenameRequest> params, ::fidl::BytePart response_buffer);
// Creates a link to an object named src by the name dst, within a directory represented by
// token.
//
// `src` must be a resolved object name. Including "/" in the string will
// return `ZX_ERR_INVALID_ARGS`.
//
// `dst` must be a resolved object name. Including "/" in the string will
// return `ZX_ERR_INVALID_ARGS`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
static ::fidl::DecodeResult<LinkResponse> Link(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<LinkRequest> params, ::fidl::BytePart response_buffer);
// Watches a directory, receiving events of added messages on the
// watcher request channel.
//
// The `watcher` handle will send messages of the form:
// ```
// struct {
// uint8 event;
// uint8 len;
// char name[];
// };
// ```
// Where names are NOT null-terminated.
//
// This API is unstable; in the future, watcher will be a `DirectoryWatcher` client.
//
// Mask specifies a bitmask of events to observe.
// Options must be zero; it is reserved.
//
// This method does not require any rights, similar to ReadDirents.
static ::fidl::DecodeResult<WatchResponse> Watch(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<WatchRequest> params, ::fidl::BytePart response_buffer);
};
// Pure-virtual interface to be implemented by a server.
class Interface {
public:
Interface() = default;
virtual ~Interface() = default;
using _Outer = Directory;
using _Base = ::fidl::CompleterBase;
using CloneCompleter = ::fidl::Completer<>;
virtual void Clone(uint32_t flags, ::zx::channel object, CloneCompleter::Sync _completer) = 0;
class CloseCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<CloseResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using CloseCompleter = ::fidl::Completer<CloseCompleterBase>;
virtual void Close(CloseCompleter::Sync _completer) = 0;
class DescribeCompleterBase : public _Base {
public:
void Reply(::llcpp::fuchsia::io::NodeInfo info);
void Reply(::fidl::BytePart _buffer, ::llcpp::fuchsia::io::NodeInfo info);
void Reply(::fidl::DecodedMessage<DescribeResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using DescribeCompleter = ::fidl::Completer<DescribeCompleterBase>;
virtual void Describe(DescribeCompleter::Sync _completer) = 0;
class SyncCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<SyncResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using SyncCompleter = ::fidl::Completer<SyncCompleterBase>;
virtual void Sync(SyncCompleter::Sync _completer) = 0;
class GetAttrCompleterBase : public _Base {
public:
void Reply(int32_t s, ::llcpp::fuchsia::io::NodeAttributes attributes);
void Reply(::fidl::BytePart _buffer, int32_t s, ::llcpp::fuchsia::io::NodeAttributes attributes);
void Reply(::fidl::DecodedMessage<GetAttrResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using GetAttrCompleter = ::fidl::Completer<GetAttrCompleterBase>;
virtual void GetAttr(GetAttrCompleter::Sync _completer) = 0;
class SetAttrCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<SetAttrResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using SetAttrCompleter = ::fidl::Completer<SetAttrCompleterBase>;
virtual void SetAttr(uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes, SetAttrCompleter::Sync _completer) = 0;
class NodeGetFlagsCompleterBase : public _Base {
public:
void Reply(int32_t s, uint32_t flags);
void Reply(::fidl::BytePart _buffer, int32_t s, uint32_t flags);
void Reply(::fidl::DecodedMessage<NodeGetFlagsResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using NodeGetFlagsCompleter = ::fidl::Completer<NodeGetFlagsCompleterBase>;
virtual void NodeGetFlags(NodeGetFlagsCompleter::Sync _completer) { _completer.Close(ZX_ERR_NOT_SUPPORTED); }
class NodeSetFlagsCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<NodeSetFlagsResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using NodeSetFlagsCompleter = ::fidl::Completer<NodeSetFlagsCompleterBase>;
virtual void NodeSetFlags(uint32_t flags, NodeSetFlagsCompleter::Sync _completer) { _completer.Close(ZX_ERR_NOT_SUPPORTED); }
using OpenCompleter = ::fidl::Completer<>;
virtual void Open(uint32_t flags, uint32_t mode, ::fidl::StringView path, ::zx::channel object, OpenCompleter::Sync _completer) = 0;
class UnlinkCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<UnlinkResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using UnlinkCompleter = ::fidl::Completer<UnlinkCompleterBase>;
virtual void Unlink(::fidl::StringView path, UnlinkCompleter::Sync _completer) = 0;
class ReadDirentsCompleterBase : public _Base {
public:
void Reply(int32_t s, ::fidl::VectorView<uint8_t> dirents);
void Reply(::fidl::BytePart _buffer, int32_t s, ::fidl::VectorView<uint8_t> dirents);
void Reply(::fidl::DecodedMessage<ReadDirentsResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using ReadDirentsCompleter = ::fidl::Completer<ReadDirentsCompleterBase>;
virtual void ReadDirents(uint64_t max_bytes, ReadDirentsCompleter::Sync _completer) = 0;
class RewindCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<RewindResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using RewindCompleter = ::fidl::Completer<RewindCompleterBase>;
virtual void Rewind(RewindCompleter::Sync _completer) = 0;
class GetTokenCompleterBase : public _Base {
public:
void Reply(int32_t s, ::zx::handle token);
void Reply(::fidl::BytePart _buffer, int32_t s, ::zx::handle token);
void Reply(::fidl::DecodedMessage<GetTokenResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using GetTokenCompleter = ::fidl::Completer<GetTokenCompleterBase>;
virtual void GetToken(GetTokenCompleter::Sync _completer) = 0;
class RenameCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<RenameResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using RenameCompleter = ::fidl::Completer<RenameCompleterBase>;
virtual void Rename(::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst, RenameCompleter::Sync _completer) = 0;
class LinkCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<LinkResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using LinkCompleter = ::fidl::Completer<LinkCompleterBase>;
virtual void Link(::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst, LinkCompleter::Sync _completer) = 0;
class WatchCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<WatchResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using WatchCompleter = ::fidl::Completer<WatchCompleterBase>;
virtual void Watch(uint32_t mask, uint32_t options, ::zx::channel watcher, WatchCompleter::Sync _completer) = 0;
};
// Attempts to dispatch the incoming message to a handler function in the server implementation.
// If there is no matching handler, it returns false, leaving the message and transaction intact.
// In all other cases, it consumes the message and returns true.
// It is possible to chain multiple TryDispatch functions in this manner.
static bool TryDispatch(Interface* impl, fidl_msg_t* msg, ::fidl::Transaction* txn);
// Dispatches the incoming message to one of the handlers functions in the interface.
// If there is no matching handler, it closes all the handles in |msg| and closes the channel with
// a |ZX_ERR_NOT_SUPPORTED| epitaph, before returning false. The message should then be discarded.
static bool Dispatch(Interface* impl, fidl_msg_t* msg, ::fidl::Transaction* txn);
// Same as |Dispatch|, but takes a |void*| instead of |Interface*|. Only used with |fidl::Bind|
// to reduce template expansion.
// Do not call this method manually. Use |Dispatch| instead.
static bool TypeErasedDispatch(void* impl, fidl_msg_t* msg, ::fidl::Transaction* txn) {
return Dispatch(static_cast<Interface*>(impl), msg, txn);
}
// An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
//
// Indicates the success or failure of the open operation, and optionally describes the
// object. If the status is `ZX_OK`, `info` contains descriptive information about the object
// (the same as would be returned by `Describe`).
static zx_status_t SendOnOpenEvent(::zx::unowned_channel _chan, int32_t s, ::llcpp::fuchsia::io::NodeInfo info);
// An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
//
// Indicates the success or failure of the open operation, and optionally describes the
// object. If the status is `ZX_OK`, `info` contains descriptive information about the object
// (the same as would be returned by `Describe`).
// Caller provides the backing storage for FIDL message via response buffers.
static zx_status_t SendOnOpenEvent(::zx::unowned_channel _chan, ::fidl::BytePart _buffer, int32_t s, ::llcpp::fuchsia::io::NodeInfo info);
// An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
//
// Indicates the success or failure of the open operation, and optionally describes the
// object. If the status is `ZX_OK`, `info` contains descriptive information about the object
// (the same as would be returned by `Describe`).
// Messages are encoded in-place.
static zx_status_t SendOnOpenEvent(::zx::unowned_channel _chan, ::fidl::DecodedMessage<OnOpenResponse> params);
// Helper functions to fill in the transaction header in a |DecodedMessage<TransactionalMessage>|.
class SetTransactionHeaderFor final {
SetTransactionHeaderFor() = delete;
public:
static void CloneRequest(const ::fidl::DecodedMessage<Directory::CloneRequest>& _msg);
static void CloseRequest(const ::fidl::DecodedMessage<Directory::CloseRequest>& _msg);
static void CloseResponse(const ::fidl::DecodedMessage<Directory::CloseResponse>& _msg);
static void DescribeRequest(const ::fidl::DecodedMessage<Directory::DescribeRequest>& _msg);
static void DescribeResponse(const ::fidl::DecodedMessage<Directory::DescribeResponse>& _msg);
static void OnOpenResponse(const ::fidl::DecodedMessage<Directory::OnOpenResponse>& _msg);
static void SyncRequest(const ::fidl::DecodedMessage<Directory::SyncRequest>& _msg);
static void SyncResponse(const ::fidl::DecodedMessage<Directory::SyncResponse>& _msg);
static void GetAttrRequest(const ::fidl::DecodedMessage<Directory::GetAttrRequest>& _msg);
static void GetAttrResponse(const ::fidl::DecodedMessage<Directory::GetAttrResponse>& _msg);
static void SetAttrRequest(const ::fidl::DecodedMessage<Directory::SetAttrRequest>& _msg);
static void SetAttrResponse(const ::fidl::DecodedMessage<Directory::SetAttrResponse>& _msg);
static void NodeGetFlagsRequest(const ::fidl::DecodedMessage<Directory::NodeGetFlagsRequest>& _msg);
static void NodeGetFlagsResponse(const ::fidl::DecodedMessage<Directory::NodeGetFlagsResponse>& _msg);
static void NodeSetFlagsRequest(const ::fidl::DecodedMessage<Directory::NodeSetFlagsRequest>& _msg);
static void NodeSetFlagsResponse(const ::fidl::DecodedMessage<Directory::NodeSetFlagsResponse>& _msg);
static void OpenRequest(const ::fidl::DecodedMessage<Directory::OpenRequest>& _msg);
static void UnlinkRequest(const ::fidl::DecodedMessage<Directory::UnlinkRequest>& _msg);
static void UnlinkResponse(const ::fidl::DecodedMessage<Directory::UnlinkResponse>& _msg);
static void ReadDirentsRequest(const ::fidl::DecodedMessage<Directory::ReadDirentsRequest>& _msg);
static void ReadDirentsResponse(const ::fidl::DecodedMessage<Directory::ReadDirentsResponse>& _msg);
static void RewindRequest(const ::fidl::DecodedMessage<Directory::RewindRequest>& _msg);
static void RewindResponse(const ::fidl::DecodedMessage<Directory::RewindResponse>& _msg);
static void GetTokenRequest(const ::fidl::DecodedMessage<Directory::GetTokenRequest>& _msg);
static void GetTokenResponse(const ::fidl::DecodedMessage<Directory::GetTokenResponse>& _msg);
static void RenameRequest(const ::fidl::DecodedMessage<Directory::RenameRequest>& _msg);
static void RenameResponse(const ::fidl::DecodedMessage<Directory::RenameResponse>& _msg);
static void LinkRequest(const ::fidl::DecodedMessage<Directory::LinkRequest>& _msg);
static void LinkResponse(const ::fidl::DecodedMessage<Directory::LinkResponse>& _msg);
static void WatchRequest(const ::fidl::DecodedMessage<Directory::WatchRequest>& _msg);
static void WatchResponse(const ::fidl::DecodedMessage<Directory::WatchResponse>& _msg);
};
};
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminCloneRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminCloneResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminCloseRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminCloseResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminDescribeRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminDescribeResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminOnOpenRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminOnOpenEventTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminSyncRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminSyncResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminGetAttrRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminGetAttrResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminSetAttrRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminSetAttrResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminNodeGetFlagsRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminNodeGetFlagsResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminNodeSetFlagsRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminNodeSetFlagsResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminOpenRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminOpenResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminUnlinkRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminUnlinkResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminReadDirentsRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminReadDirentsResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminRewindRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminRewindResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminGetTokenRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminGetTokenResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminRenameRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminRenameResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminLinkRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminLinkResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminWatchRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminWatchResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminMountRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminMountResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminMountAndCreateRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminMountAndCreateResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminUnmountRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminUnmountResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminUnmountNodeRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminUnmountNodeResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminQueryFilesystemRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminQueryFilesystemResponseTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminGetDevicePathRequestTable;
extern "C" const fidl_type_t v1_fuchsia_io_DirectoryAdminGetDevicePathResponseTable;
// DirectoryAdmin defines a directory which is capable of handling
// administrator tasks within the filesystem.
class DirectoryAdmin final {
DirectoryAdmin() = delete;
public:
struct CloneRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint32_t flags;
::zx::channel object;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminCloneRequestTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 24;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
};
struct CloseResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminCloseResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using CloseRequest = ::fidl::AnyZeroArgMessage;
struct DescribeResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::llcpp::fuchsia::io::NodeInfo info;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminDescribeResponseTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 40;
static constexpr uint32_t MaxOutOfLine = 24;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = true;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using DescribeRequest = ::fidl::AnyZeroArgMessage;
struct OnOpenResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
::llcpp::fuchsia::io::NodeInfo info;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminOnOpenEventTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 48;
static constexpr uint32_t MaxOutOfLine = 24;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = true;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct SyncResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminSyncResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using SyncRequest = ::fidl::AnyZeroArgMessage;
struct GetAttrResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
::llcpp::fuchsia::io::NodeAttributes attributes;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminGetAttrResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 80;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using GetAttrRequest = ::fidl::AnyZeroArgMessage;
struct SetAttrResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminSetAttrResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct SetAttrRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint32_t flags;
::llcpp::fuchsia::io::NodeAttributes attributes;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminSetAttrRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 80;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 80;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = SetAttrResponse;
};
struct NodeGetFlagsResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
uint32_t flags;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminNodeGetFlagsResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using NodeGetFlagsRequest = ::fidl::AnyZeroArgMessage;
struct NodeSetFlagsResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminNodeSetFlagsResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct NodeSetFlagsRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint32_t flags;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminNodeSetFlagsRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 24;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = NodeSetFlagsResponse;
};
struct OpenRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint32_t flags;
uint32_t mode;
::fidl::StringView path;
::zx::channel object;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminOpenRequestTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 48;
static constexpr uint32_t MaxOutOfLine = 4096;
static constexpr uint32_t AltPrimarySize = 48;
static constexpr uint32_t AltMaxOutOfLine = 4096;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
};
struct UnlinkResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminUnlinkResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct UnlinkRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::fidl::StringView path;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminUnlinkRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 32;
static constexpr uint32_t MaxOutOfLine = 4096;
static constexpr uint32_t AltPrimarySize = 32;
static constexpr uint32_t AltMaxOutOfLine = 4096;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = UnlinkResponse;
};
struct ReadDirentsResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
::fidl::VectorView<uint8_t> dirents;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminReadDirentsResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 40;
static constexpr uint32_t MaxOutOfLine = 8192;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct ReadDirentsRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint64_t max_bytes;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminReadDirentsRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 24;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = ReadDirentsResponse;
};
struct RewindResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminRewindResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using RewindRequest = ::fidl::AnyZeroArgMessage;
struct GetTokenResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
::zx::handle token;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminGetTokenResponseTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using GetTokenRequest = ::fidl::AnyZeroArgMessage;
struct RenameResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminRenameResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct RenameRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::fidl::StringView src;
::zx::handle dst_parent_token;
::fidl::StringView dst;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminRenameRequestTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 56;
static constexpr uint32_t MaxOutOfLine = 8192;
static constexpr uint32_t AltPrimarySize = 56;
static constexpr uint32_t AltMaxOutOfLine = 8192;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = RenameResponse;
};
struct LinkResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminLinkResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct LinkRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::fidl::StringView src;
::zx::handle dst_parent_token;
::fidl::StringView dst;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminLinkRequestTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 56;
static constexpr uint32_t MaxOutOfLine = 8192;
static constexpr uint32_t AltPrimarySize = 56;
static constexpr uint32_t AltMaxOutOfLine = 8192;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = LinkResponse;
};
struct WatchResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminWatchResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct WatchRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint32_t mask;
uint32_t options;
::zx::channel watcher;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminWatchRequestTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 32;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 32;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = WatchResponse;
};
struct MountResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminMountResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct MountRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::zx::channel remote;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminMountRequestTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 24;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = MountResponse;
};
struct MountAndCreateResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminMountAndCreateResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct MountAndCreateRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::zx::channel remote;
::fidl::StringView name;
uint32_t flags;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminMountAndCreateRequestTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 48;
static constexpr uint32_t MaxOutOfLine = 256;
static constexpr uint32_t AltPrimarySize = 48;
static constexpr uint32_t AltMaxOutOfLine = 256;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = MountAndCreateResponse;
};
struct UnmountResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminUnmountResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using UnmountRequest = ::fidl::AnyZeroArgMessage;
struct UnmountNodeResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
::zx::channel remote;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminUnmountNodeResponseTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using UnmountNodeRequest = ::fidl::AnyZeroArgMessage;
struct QueryFilesystemResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
::llcpp::fuchsia::io::FilesystemInfo* info;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminQueryFilesystemResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 32;
static constexpr uint32_t MaxOutOfLine = 96;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using QueryFilesystemRequest = ::fidl::AnyZeroArgMessage;
struct GetDevicePathResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
int32_t s;
::fidl::StringView path;
static constexpr const fidl_type_t* Type = &v1_fuchsia_io_DirectoryAdminGetDevicePathResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 40;
static constexpr uint32_t MaxOutOfLine = 4096;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using GetDevicePathRequest = ::fidl::AnyZeroArgMessage;
struct EventHandlers {
// An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
//
// Indicates the success or failure of the open operation, and optionally describes the
// object. If the status is `ZX_OK`, `info` contains descriptive information about the object
// (the same as would be returned by `Describe`).
fit::callback<zx_status_t(int32_t s, ::llcpp::fuchsia::io::NodeInfo info)> on_open;
// Fallback handler when an unknown ordinal is received.
// Caller may put custom error handling logic here.
fit::callback<zx_status_t()> unknown;
};
// Collection of return types of FIDL calls in this interface.
class ResultOf final {
ResultOf() = delete;
private:
class Clone_Impl final : private ::fidl::internal::StatusAndError {
using Super = ::fidl::internal::StatusAndError;
public:
Clone_Impl(::zx::unowned_channel _client_end, uint32_t flags, ::zx::channel object);
~Clone_Impl() = default;
Clone_Impl(Clone_Impl&& other) = default;
Clone_Impl& operator=(Clone_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
};
template <typename ResponseType>
class Close_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Close_Impl(::zx::unowned_channel _client_end);
~Close_Impl() = default;
Close_Impl(Close_Impl&& other) = default;
Close_Impl& operator=(Close_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Describe_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Describe_Impl(::zx::unowned_channel _client_end);
~Describe_Impl() = default;
Describe_Impl(Describe_Impl&& other) = default;
Describe_Impl& operator=(Describe_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Sync_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Sync_Impl(::zx::unowned_channel _client_end);
~Sync_Impl() = default;
Sync_Impl(Sync_Impl&& other) = default;
Sync_Impl& operator=(Sync_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetAttr_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
GetAttr_Impl(::zx::unowned_channel _client_end);
~GetAttr_Impl() = default;
GetAttr_Impl(GetAttr_Impl&& other) = default;
GetAttr_Impl& operator=(GetAttr_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class SetAttr_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
SetAttr_Impl(::zx::unowned_channel _client_end, uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes);
~SetAttr_Impl() = default;
SetAttr_Impl(SetAttr_Impl&& other) = default;
SetAttr_Impl& operator=(SetAttr_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class NodeGetFlags_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
NodeGetFlags_Impl(::zx::unowned_channel _client_end);
~NodeGetFlags_Impl() = default;
NodeGetFlags_Impl(NodeGetFlags_Impl&& other) = default;
NodeGetFlags_Impl& operator=(NodeGetFlags_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class NodeSetFlags_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
NodeSetFlags_Impl(::zx::unowned_channel _client_end, uint32_t flags);
~NodeSetFlags_Impl() = default;
NodeSetFlags_Impl(NodeSetFlags_Impl&& other) = default;
NodeSetFlags_Impl& operator=(NodeSetFlags_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
class Open_Impl final : private ::fidl::internal::StatusAndError {
using Super = ::fidl::internal::StatusAndError;
public:
Open_Impl(::zx::unowned_channel _client_end, uint32_t flags, uint32_t mode, ::fidl::StringView path, ::zx::channel object);
~Open_Impl() = default;
Open_Impl(Open_Impl&& other) = default;
Open_Impl& operator=(Open_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
};
template <typename ResponseType>
class Unlink_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Unlink_Impl(::zx::unowned_channel _client_end, ::fidl::StringView path);
~Unlink_Impl() = default;
Unlink_Impl(Unlink_Impl&& other) = default;
Unlink_Impl& operator=(Unlink_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class ReadDirents_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
ReadDirents_Impl(::zx::unowned_channel _client_end, uint64_t max_bytes);
~ReadDirents_Impl() = default;
ReadDirents_Impl(ReadDirents_Impl&& other) = default;
ReadDirents_Impl& operator=(ReadDirents_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Rewind_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Rewind_Impl(::zx::unowned_channel _client_end);
~Rewind_Impl() = default;
Rewind_Impl(Rewind_Impl&& other) = default;
Rewind_Impl& operator=(Rewind_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetToken_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
GetToken_Impl(::zx::unowned_channel _client_end);
~GetToken_Impl() = default;
GetToken_Impl(GetToken_Impl&& other) = default;
GetToken_Impl& operator=(GetToken_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Rename_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Rename_Impl(::zx::unowned_channel _client_end, ::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst);
~Rename_Impl() = default;
Rename_Impl(Rename_Impl&& other) = default;
Rename_Impl& operator=(Rename_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Link_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Link_Impl(::zx::unowned_channel _client_end, ::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst);
~Link_Impl() = default;
Link_Impl(Link_Impl&& other) = default;
Link_Impl& operator=(Link_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Watch_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Watch_Impl(::zx::unowned_channel _client_end, uint32_t mask, uint32_t options, ::zx::channel watcher);
~Watch_Impl() = default;
Watch_Impl(Watch_Impl&& other) = default;
Watch_Impl& operator=(Watch_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Mount_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Mount_Impl(::zx::unowned_channel _client_end, ::zx::channel remote);
~Mount_Impl() = default;
Mount_Impl(Mount_Impl&& other) = default;
Mount_Impl& operator=(Mount_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class MountAndCreate_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
MountAndCreate_Impl(::zx::unowned_channel _client_end, ::zx::channel remote, ::fidl::StringView name, uint32_t flags);
~MountAndCreate_Impl() = default;
MountAndCreate_Impl(MountAndCreate_Impl&& other) = default;
MountAndCreate_Impl& operator=(MountAndCreate_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Unmount_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Unmount_Impl(::zx::unowned_channel _client_end);
~Unmount_Impl() = default;
Unmount_Impl(Unmount_Impl&& other) = default;
Unmount_Impl& operator=(Unmount_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class UnmountNode_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
UnmountNode_Impl(::zx::unowned_channel _client_end);
~UnmountNode_Impl() = default;
UnmountNode_Impl(UnmountNode_Impl&& other) = default;
UnmountNode_Impl& operator=(UnmountNode_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class QueryFilesystem_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
QueryFilesystem_Impl(::zx::unowned_channel _client_end);
~QueryFilesystem_Impl() = default;
QueryFilesystem_Impl(QueryFilesystem_Impl&& other) = default;
QueryFilesystem_Impl& operator=(QueryFilesystem_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetDevicePath_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
GetDevicePath_Impl(::zx::unowned_channel _client_end);
~GetDevicePath_Impl() = default;
GetDevicePath_Impl(GetDevicePath_Impl&& other) = default;
GetDevicePath_Impl& operator=(GetDevicePath_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
public:
using Clone = Clone_Impl;
using Close = Close_Impl<CloseResponse>;
using Describe = Describe_Impl<DescribeResponse>;
using Sync = Sync_Impl<SyncResponse>;
using GetAttr = GetAttr_Impl<GetAttrResponse>;
using SetAttr = SetAttr_Impl<SetAttrResponse>;
using NodeGetFlags = NodeGetFlags_Impl<NodeGetFlagsResponse>;
using NodeSetFlags = NodeSetFlags_Impl<NodeSetFlagsResponse>;
using Open = Open_Impl;
using Unlink = Unlink_Impl<UnlinkResponse>;
using ReadDirents = ReadDirents_Impl<ReadDirentsResponse>;
using Rewind = Rewind_Impl<RewindResponse>;
using GetToken = GetToken_Impl<GetTokenResponse>;
using Rename = Rename_Impl<RenameResponse>;
using Link = Link_Impl<LinkResponse>;
using Watch = Watch_Impl<WatchResponse>;
using Mount = Mount_Impl<MountResponse>;
using MountAndCreate = MountAndCreate_Impl<MountAndCreateResponse>;
using Unmount = Unmount_Impl<UnmountResponse>;
using UnmountNode = UnmountNode_Impl<UnmountNodeResponse>;
using QueryFilesystem = QueryFilesystem_Impl<QueryFilesystemResponse>;
using GetDevicePath = GetDevicePath_Impl<GetDevicePathResponse>;
};
// Collection of return types of FIDL calls in this interface,
// when the caller-allocate flavor or in-place call is used.
class UnownedResultOf final {
UnownedResultOf() = delete;
private:
class Clone_Impl final : private ::fidl::internal::StatusAndError {
using Super = ::fidl::internal::StatusAndError;
public:
Clone_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::zx::channel object);
~Clone_Impl() = default;
Clone_Impl(Clone_Impl&& other) = default;
Clone_Impl& operator=(Clone_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
};
template <typename ResponseType>
class Close_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Close_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~Close_Impl() = default;
Close_Impl(Close_Impl&& other) = default;
Close_Impl& operator=(Close_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Describe_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Describe_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~Describe_Impl() = default;
Describe_Impl(Describe_Impl&& other) = default;
Describe_Impl& operator=(Describe_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Sync_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Sync_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~Sync_Impl() = default;
Sync_Impl(Sync_Impl&& other) = default;
Sync_Impl& operator=(Sync_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetAttr_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
GetAttr_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~GetAttr_Impl() = default;
GetAttr_Impl(GetAttr_Impl&& other) = default;
GetAttr_Impl& operator=(GetAttr_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class SetAttr_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
SetAttr_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes, ::fidl::BytePart _response_buffer);
~SetAttr_Impl() = default;
SetAttr_Impl(SetAttr_Impl&& other) = default;
SetAttr_Impl& operator=(SetAttr_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class NodeGetFlags_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
NodeGetFlags_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~NodeGetFlags_Impl() = default;
NodeGetFlags_Impl(NodeGetFlags_Impl&& other) = default;
NodeGetFlags_Impl& operator=(NodeGetFlags_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class NodeSetFlags_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
NodeSetFlags_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::fidl::BytePart _response_buffer);
~NodeSetFlags_Impl() = default;
NodeSetFlags_Impl(NodeSetFlags_Impl&& other) = default;
NodeSetFlags_Impl& operator=(NodeSetFlags_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
class Open_Impl final : private ::fidl::internal::StatusAndError {
using Super = ::fidl::internal::StatusAndError;
public:
Open_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, uint32_t mode, ::fidl::StringView path, ::zx::channel object);
~Open_Impl() = default;
Open_Impl(Open_Impl&& other) = default;
Open_Impl& operator=(Open_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
};
template <typename ResponseType>
class Unlink_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Unlink_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::fidl::StringView path, ::fidl::BytePart _response_buffer);
~Unlink_Impl() = default;
Unlink_Impl(Unlink_Impl&& other) = default;
Unlink_Impl& operator=(Unlink_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class ReadDirents_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
ReadDirents_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint64_t max_bytes, ::fidl::BytePart _response_buffer);
~ReadDirents_Impl() = default;
ReadDirents_Impl(ReadDirents_Impl&& other) = default;
ReadDirents_Impl& operator=(ReadDirents_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Rewind_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Rewind_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~Rewind_Impl() = default;
Rewind_Impl(Rewind_Impl&& other) = default;
Rewind_Impl& operator=(Rewind_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetToken_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
GetToken_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~GetToken_Impl() = default;
GetToken_Impl(GetToken_Impl&& other) = default;
GetToken_Impl& operator=(GetToken_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Rename_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Rename_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst, ::fidl::BytePart _response_buffer);
~Rename_Impl() = default;
Rename_Impl(Rename_Impl&& other) = default;
Rename_Impl& operator=(Rename_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Link_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Link_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst, ::fidl::BytePart _response_buffer);
~Link_Impl() = default;
Link_Impl(Link_Impl&& other) = default;
Link_Impl& operator=(Link_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Watch_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Watch_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t mask, uint32_t options, ::zx::channel watcher, ::fidl::BytePart _response_buffer);
~Watch_Impl() = default;
Watch_Impl(Watch_Impl&& other) = default;
Watch_Impl& operator=(Watch_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Mount_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Mount_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::zx::channel remote, ::fidl::BytePart _response_buffer);
~Mount_Impl() = default;
Mount_Impl(Mount_Impl&& other) = default;
Mount_Impl& operator=(Mount_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class MountAndCreate_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
MountAndCreate_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::zx::channel remote, ::fidl::StringView name, uint32_t flags, ::fidl::BytePart _response_buffer);
~MountAndCreate_Impl() = default;
MountAndCreate_Impl(MountAndCreate_Impl&& other) = default;
MountAndCreate_Impl& operator=(MountAndCreate_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Unmount_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Unmount_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~Unmount_Impl() = default;
Unmount_Impl(Unmount_Impl&& other) = default;
Unmount_Impl& operator=(Unmount_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class UnmountNode_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
UnmountNode_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~UnmountNode_Impl() = default;
UnmountNode_Impl(UnmountNode_Impl&& other) = default;
UnmountNode_Impl& operator=(UnmountNode_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class QueryFilesystem_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
QueryFilesystem_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~QueryFilesystem_Impl() = default;
QueryFilesystem_Impl(QueryFilesystem_Impl&& other) = default;
QueryFilesystem_Impl& operator=(QueryFilesystem_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetDevicePath_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
GetDevicePath_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~GetDevicePath_Impl() = default;
GetDevicePath_Impl(GetDevicePath_Impl&& other) = default;
GetDevicePath_Impl& operator=(GetDevicePath_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
public:
using Clone = Clone_Impl;
using Close = Close_Impl<CloseResponse>;
using Describe = Describe_Impl<DescribeResponse>;
using Sync = Sync_Impl<SyncResponse>;
using GetAttr = GetAttr_Impl<GetAttrResponse>;
using SetAttr = SetAttr_Impl<SetAttrResponse>;
using NodeGetFlags = NodeGetFlags_Impl<NodeGetFlagsResponse>;
using NodeSetFlags = NodeSetFlags_Impl<NodeSetFlagsResponse>;
using Open = Open_Impl;
using Unlink = Unlink_Impl<UnlinkResponse>;
using ReadDirents = ReadDirents_Impl<ReadDirentsResponse>;
using Rewind = Rewind_Impl<RewindResponse>;
using GetToken = GetToken_Impl<GetTokenResponse>;
using Rename = Rename_Impl<RenameResponse>;
using Link = Link_Impl<LinkResponse>;
using Watch = Watch_Impl<WatchResponse>;
using Mount = Mount_Impl<MountResponse>;
using MountAndCreate = MountAndCreate_Impl<MountAndCreateResponse>;
using Unmount = Unmount_Impl<UnmountResponse>;
using UnmountNode = UnmountNode_Impl<UnmountNodeResponse>;
using QueryFilesystem = QueryFilesystem_Impl<QueryFilesystemResponse>;
using GetDevicePath = GetDevicePath_Impl<GetDevicePathResponse>;
};
class SyncClient final {
public:
explicit SyncClient(::zx::channel channel) : channel_(std::move(channel)) {}
~SyncClient() = default;
SyncClient(SyncClient&&) = default;
SyncClient& operator=(SyncClient&&) = default;
const ::zx::channel& channel() const { return channel_; }
::zx::channel* mutable_channel() { return &channel_; }
// Create another connection to the same remote object.
//
// `flags` may be any of:
//
// - `OPEN_RIGHT_*`
// - `OPEN_FLAG_APPEND`
// - `OPEN_FLAG_NO_REMOTE`
// - `OPEN_FLAG_DESCRIBE`
// - `CLONE_FLAG_SAME_RIGHTS`
//
// All other flags are ignored.
//
// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
// cloned object.
// The cloned object must have rights less than or equal to the original object.
// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
// `CLONE_FLAG_SAME_RIGHTS`.
// Allocates 24 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Clone Clone(uint32_t flags, ::zx::channel object);
// Create another connection to the same remote object.
//
// `flags` may be any of:
//
// - `OPEN_RIGHT_*`
// - `OPEN_FLAG_APPEND`
// - `OPEN_FLAG_NO_REMOTE`
// - `OPEN_FLAG_DESCRIBE`
// - `CLONE_FLAG_SAME_RIGHTS`
//
// All other flags are ignored.
//
// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
// cloned object.
// The cloned object must have rights less than or equal to the original object.
// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
// `CLONE_FLAG_SAME_RIGHTS`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Clone Clone(::fidl::BytePart _request_buffer, uint32_t flags, ::zx::channel object);
// Terminates connection with object.
//
// This method does not require any rights.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Close Close();
// Terminates connection with object.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Close Close(::fidl::BytePart _response_buffer);
// Returns extra information about the type of the object.
// If the `Describe` operation fails, the connection is closed.
//
// This method does not require any rights.
// Allocates 80 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Describe Describe();
// Returns extra information about the type of the object.
// If the `Describe` operation fails, the connection is closed.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Describe Describe(::fidl::BytePart _response_buffer);
// Synchronizes updates to the node to the underlying media, if it exists.
//
// This method does not require any rights.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Sync Sync();
// Synchronizes updates to the node to the underlying media, if it exists.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Sync Sync(::fidl::BytePart _response_buffer);
// Acquires information about the node.
//
// This method does not require any rights.
// Allocates 96 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::GetAttr GetAttr();
// Acquires information about the node.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::GetAttr GetAttr(::fidl::BytePart _response_buffer);
// Updates information about the node.
// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 104 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::SetAttr SetAttr(uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes);
// Updates information about the node.
// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::SetAttr SetAttr(::fidl::BytePart _request_buffer, uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes, ::fidl::BytePart _response_buffer);
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// This method has the same functionality as GetFlags for File and is
// meant as an in-progress replacement.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::NodeGetFlags NodeGetFlags();
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// This method has the same functionality as GetFlags for File and is
// meant as an in-progress replacement.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::NodeGetFlags NodeGetFlags(::fidl::BytePart _response_buffer);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// This method has the same functionality as SetFlags for File and is
// meant as an in-progress replacement.
// Allocates 48 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::NodeSetFlags NodeSetFlags(uint32_t flags);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// This method has the same functionality as SetFlags for File and is
// meant as an in-progress replacement.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::NodeSetFlags NodeSetFlags(::fidl::BytePart _request_buffer, uint32_t flags, ::fidl::BytePart _response_buffer);
// Opens a new object relative to this directory object.
//
// `path` may contain multiple segments, separated by "/" characters,
// and should never be empty; i.e., "" is an invalid path.
//
// `flags` may be any of the `OPEN_FLAG_*` and `OPEN_RIGHT_*` values, bitwise ORed together.
// The `OPEN_FLAG_DESCRIBE` flag may cause an `OnOpen` event to be transmitted
// on the `object` handle, indicating the type of object opened.
//
// If an unknown value is sent for either flags or mode, the connection should
// be closed.
//
// `OPEN_RIGHT_*` flags provided in `flags` will restrict access rights on
// the `object` channel which will be connected to the opened entity.
//
// Rights are never increased. When you open a nested entity within a directory, you may only
// request the same rights as what the directory connection already has, or a subset of those.
// Exceeding those rights causes an access denied error to be transmitted in the
// `OnOpen` event if applicable, and the `object` connection closed.
//
// The caller must specify either one or more of the `OPEN_RIGHT_*` flags, or
// the `OPEN_FLAG_NODE_REFERENCE` flag.
// Request is heap-allocated.
ResultOf::Open Open(uint32_t flags, uint32_t mode, ::fidl::StringView path, ::zx::channel object);
// Opens a new object relative to this directory object.
//
// `path` may contain multiple segments, separated by "/" characters,
// and should never be empty; i.e., "" is an invalid path.
//
// `flags` may be any of the `OPEN_FLAG_*` and `OPEN_RIGHT_*` values, bitwise ORed together.
// The `OPEN_FLAG_DESCRIBE` flag may cause an `OnOpen` event to be transmitted
// on the `object` handle, indicating the type of object opened.
//
// If an unknown value is sent for either flags or mode, the connection should
// be closed.
//
// `OPEN_RIGHT_*` flags provided in `flags` will restrict access rights on
// the `object` channel which will be connected to the opened entity.
//
// Rights are never increased. When you open a nested entity within a directory, you may only
// request the same rights as what the directory connection already has, or a subset of those.
// Exceeding those rights causes an access denied error to be transmitted in the
// `OnOpen` event if applicable, and the `object` connection closed.
//
// The caller must specify either one or more of the `OPEN_RIGHT_*` flags, or
// the `OPEN_FLAG_NODE_REFERENCE` flag.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Open Open(::fidl::BytePart _request_buffer, uint32_t flags, uint32_t mode, ::fidl::StringView path, ::zx::channel object);
// Detaches an object from this directory object.
//
// The underlying object may or may not be deleted after this method
// completes: although the link will be removed from the containing directory,
// objects with multiple references (such as files which are still open)
// will not actually be destroyed until all references are removed.
//
// If a directory is unlinked while it still has an open reference,
// it must become read-only, preventing new entries from being created
// until all references close and the directory is destroyed.
//
// `path` identifies the file which should be detached.
// If `path` contains multiple segments, separated by "/" characters,
// then the directory is traversed, one segment at a time, relative to the
// originally accessed Directory.
//
// Returns:
// `ZX_ERR_ACCESS_DENIED` if the connection (or the underlying filesystem) does not
// allow writable access.
// `ZX_ERR_INVALID_ARGS` if `path` contains ".." segments.
// `ZX_ERR_NOT_EMPTY` if `path` refers to a non-empty directory.
// `ZX_ERR_UNAVAILABLE` if `path` refers to a mount point, containing a remote channel.
// `ZX_ERR_UNAVAILABLE` if `path` is ".".
//
// Other errors may be returned for filesystem-specific reasons.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 24 bytes of response buffer on the stack. Request is heap-allocated.
ResultOf::Unlink Unlink(::fidl::StringView path);
// Detaches an object from this directory object.
//
// The underlying object may or may not be deleted after this method
// completes: although the link will be removed from the containing directory,
// objects with multiple references (such as files which are still open)
// will not actually be destroyed until all references are removed.
//
// If a directory is unlinked while it still has an open reference,
// it must become read-only, preventing new entries from being created
// until all references close and the directory is destroyed.
//
// `path` identifies the file which should be detached.
// If `path` contains multiple segments, separated by "/" characters,
// then the directory is traversed, one segment at a time, relative to the
// originally accessed Directory.
//
// Returns:
// `ZX_ERR_ACCESS_DENIED` if the connection (or the underlying filesystem) does not
// allow writable access.
// `ZX_ERR_INVALID_ARGS` if `path` contains ".." segments.
// `ZX_ERR_NOT_EMPTY` if `path` refers to a non-empty directory.
// `ZX_ERR_UNAVAILABLE` if `path` refers to a mount point, containing a remote channel.
// `ZX_ERR_UNAVAILABLE` if `path` is ".".
//
// Other errors may be returned for filesystem-specific reasons.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Unlink Unlink(::fidl::BytePart _request_buffer, ::fidl::StringView path, ::fidl::BytePart _response_buffer);
// Reads a collection of variably sized dirents into a buffer.
// The number of dirents in a directory may be very large: akin to
// calling read multiple times on a file, directories have a seek
// offset which is updated on subsequent calls to ReadDirents.
//
// These dirents are of the form:
// ```
// struct dirent {
// // Describes the inode of the entry.
// uint64 ino;
// // Describes the length of the dirent name in bytes.
// uint8 size;
// // Describes the type of the entry. Aligned with the
// // POSIX d_type values. Use `DIRENT_TYPE_*` constants.
// uint8 type;
// // Unterminated name of entry.
// char name[0];
// }
// ```
//
// This method does not require any rights, since one could always probe for
// directory contents by triggering name conflicts during file creation.
// Allocates 24 bytes of request buffer on the stack. Response is heap-allocated.
ResultOf::ReadDirents ReadDirents(uint64_t max_bytes);
// Reads a collection of variably sized dirents into a buffer.
// The number of dirents in a directory may be very large: akin to
// calling read multiple times on a file, directories have a seek
// offset which is updated on subsequent calls to ReadDirents.
//
// These dirents are of the form:
// ```
// struct dirent {
// // Describes the inode of the entry.
// uint64 ino;
// // Describes the length of the dirent name in bytes.
// uint8 size;
// // Describes the type of the entry. Aligned with the
// // POSIX d_type values. Use `DIRENT_TYPE_*` constants.
// uint8 type;
// // Unterminated name of entry.
// char name[0];
// }
// ```
//
// This method does not require any rights, since one could always probe for
// directory contents by triggering name conflicts during file creation.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::ReadDirents ReadDirents(::fidl::BytePart _request_buffer, uint64_t max_bytes, ::fidl::BytePart _response_buffer);
// Resets the directory seek offset.
//
// This method does not require any rights, similar to ReadDirents.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Rewind Rewind();
// Resets the directory seek offset.
//
// This method does not require any rights, similar to ReadDirents.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Rewind Rewind(::fidl::BytePart _response_buffer);
// Acquires a token to a Directory which can be used to identify
// access to it at a later point in time.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::GetToken GetToken();
// Acquires a token to a Directory which can be used to identify
// access to it at a later point in time.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::GetToken GetToken(::fidl::BytePart _response_buffer);
// Renames an object named src to the name dst, in a directory represented by token.
//
// `src/dst` must be resolved object names. Including "/" in any position
// other than the end of the string will return `ZX_ERR_INVALID_ARGS`.
// Returning "/" at the end of either string implies that it must be a
// directory, or else `ZX_ERR_NOT_DIR` should be returned.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 24 bytes of response buffer on the stack. Request is heap-allocated.
ResultOf::Rename Rename(::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst);
// Renames an object named src to the name dst, in a directory represented by token.
//
// `src/dst` must be resolved object names. Including "/" in any position
// other than the end of the string will return `ZX_ERR_INVALID_ARGS`.
// Returning "/" at the end of either string implies that it must be a
// directory, or else `ZX_ERR_NOT_DIR` should be returned.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Rename Rename(::fidl::BytePart _request_buffer, ::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst, ::fidl::BytePart _response_buffer);
// Creates a link to an object named src by the name dst, within a directory represented by
// token.
//
// `src` must be a resolved object name. Including "/" in the string will
// return `ZX_ERR_INVALID_ARGS`.
//
// `dst` must be a resolved object name. Including "/" in the string will
// return `ZX_ERR_INVALID_ARGS`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 24 bytes of response buffer on the stack. Request is heap-allocated.
ResultOf::Link Link(::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst);
// Creates a link to an object named src by the name dst, within a directory represented by
// token.
//
// `src` must be a resolved object name. Including "/" in the string will
// return `ZX_ERR_INVALID_ARGS`.
//
// `dst` must be a resolved object name. Including "/" in the string will
// return `ZX_ERR_INVALID_ARGS`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Link Link(::fidl::BytePart _request_buffer, ::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst, ::fidl::BytePart _response_buffer);
// Watches a directory, receiving events of added messages on the
// watcher request channel.
//
// The `watcher` handle will send messages of the form:
// ```
// struct {
// uint8 event;
// uint8 len;
// char name[];
// };
// ```
// Where names are NOT null-terminated.
//
// This API is unstable; in the future, watcher will be a `DirectoryWatcher` client.
//
// Mask specifies a bitmask of events to observe.
// Options must be zero; it is reserved.
//
// This method does not require any rights, similar to ReadDirents.
// Allocates 56 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Watch Watch(uint32_t mask, uint32_t options, ::zx::channel watcher);
// Watches a directory, receiving events of added messages on the
// watcher request channel.
//
// The `watcher` handle will send messages of the form:
// ```
// struct {
// uint8 event;
// uint8 len;
// char name[];
// };
// ```
// Where names are NOT null-terminated.
//
// This API is unstable; in the future, watcher will be a `DirectoryWatcher` client.
//
// Mask specifies a bitmask of events to observe.
// Options must be zero; it is reserved.
//
// This method does not require any rights, similar to ReadDirents.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Watch Watch(::fidl::BytePart _request_buffer, uint32_t mask, uint32_t options, ::zx::channel watcher, ::fidl::BytePart _response_buffer);
// Mount a channel representing a remote filesystem onto this directory.
// All future requests to this node will be forwarded to the remote filesystem.
// To re-open a node without forwarding to the remote target, the node
// should be opened with `OPEN_FLAG_NO_REMOTE`.
// Allocates 48 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Mount Mount(::zx::channel remote);
// Mount a channel representing a remote filesystem onto this directory.
// All future requests to this node will be forwarded to the remote filesystem.
// To re-open a node without forwarding to the remote target, the node
// should be opened with `OPEN_FLAG_NO_REMOTE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Mount Mount(::fidl::BytePart _request_buffer, ::zx::channel remote, ::fidl::BytePart _response_buffer);
// Atomically create a directory with a provided path, and mount the
// remote handle to the newly created directory.
// Allocates 328 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::MountAndCreate MountAndCreate(::zx::channel remote, ::fidl::StringView name, uint32_t flags);
// Atomically create a directory with a provided path, and mount the
// remote handle to the newly created directory.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::MountAndCreate MountAndCreate(::fidl::BytePart _request_buffer, ::zx::channel remote, ::fidl::StringView name, uint32_t flags, ::fidl::BytePart _response_buffer);
// Unmount this filesystem. After this function returns successfully,
// all connections to the filesystem will be terminated.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Unmount Unmount();
// Unmount this filesystem. After this function returns successfully,
// all connections to the filesystem will be terminated.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Unmount Unmount(::fidl::BytePart _response_buffer);
// Detach a node which was previously attached to this directory
// with Mount.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::UnmountNode UnmountNode();
// Detach a node which was previously attached to this directory
// with Mount.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::UnmountNode UnmountNode(::fidl::BytePart _response_buffer);
// Query the filesystem for filesystem-specific information.
// Allocates 144 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::QueryFilesystem QueryFilesystem();
// Query the filesystem for filesystem-specific information.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::QueryFilesystem QueryFilesystem(::fidl::BytePart _response_buffer);
// Acquire the path to the device backing this filesystem, if there is one.
// Allocates 16 bytes of request buffer on the stack. Response is heap-allocated.
ResultOf::GetDevicePath GetDevicePath();
// Acquire the path to the device backing this filesystem, if there is one.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::GetDevicePath GetDevicePath(::fidl::BytePart _response_buffer);
// Handle all possible events defined in this protocol.
// Blocks to consume exactly one message from the channel, then call the corresponding handler
// defined in |EventHandlers|. The return status of the handler function is folded with any
// transport-level errors and returned.
zx_status_t HandleEvents(EventHandlers handlers);
private:
::zx::channel channel_;
};
// Methods to make a sync FIDL call directly on an unowned channel, avoiding setting up a client.
class Call final {
Call() = delete;
public:
// Create another connection to the same remote object.
//
// `flags` may be any of:
//
// - `OPEN_RIGHT_*`
// - `OPEN_FLAG_APPEND`
// - `OPEN_FLAG_NO_REMOTE`
// - `OPEN_FLAG_DESCRIBE`
// - `CLONE_FLAG_SAME_RIGHTS`
//
// All other flags are ignored.
//
// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
// cloned object.
// The cloned object must have rights less than or equal to the original object.
// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
// `CLONE_FLAG_SAME_RIGHTS`.
// Allocates 24 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Clone Clone(::zx::unowned_channel _client_end, uint32_t flags, ::zx::channel object);
// Create another connection to the same remote object.
//
// `flags` may be any of:
//
// - `OPEN_RIGHT_*`
// - `OPEN_FLAG_APPEND`
// - `OPEN_FLAG_NO_REMOTE`
// - `OPEN_FLAG_DESCRIBE`
// - `CLONE_FLAG_SAME_RIGHTS`
//
// All other flags are ignored.
//
// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
// cloned object.
// The cloned object must have rights less than or equal to the original object.
// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
// `CLONE_FLAG_SAME_RIGHTS`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Clone Clone(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::zx::channel object);
// Terminates connection with object.
//
// This method does not require any rights.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Close Close(::zx::unowned_channel _client_end);
// Terminates connection with object.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Close Close(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Returns extra information about the type of the object.
// If the `Describe` operation fails, the connection is closed.
//
// This method does not require any rights.
// Allocates 80 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Describe Describe(::zx::unowned_channel _client_end);
// Returns extra information about the type of the object.
// If the `Describe` operation fails, the connection is closed.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Describe Describe(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Synchronizes updates to the node to the underlying media, if it exists.
//
// This method does not require any rights.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Sync Sync(::zx::unowned_channel _client_end);
// Synchronizes updates to the node to the underlying media, if it exists.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Sync Sync(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Acquires information about the node.
//
// This method does not require any rights.
// Allocates 96 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::GetAttr GetAttr(::zx::unowned_channel _client_end);
// Acquires information about the node.
//
// This method does not require any rights.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::GetAttr GetAttr(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Updates information about the node.
// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 104 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::SetAttr SetAttr(::zx::unowned_channel _client_end, uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes);
// Updates information about the node.
// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::SetAttr SetAttr(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes, ::fidl::BytePart _response_buffer);
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// This method has the same functionality as GetFlags for File and is
// meant as an in-progress replacement.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::NodeGetFlags NodeGetFlags(::zx::unowned_channel _client_end);
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// This method has the same functionality as GetFlags for File and is
// meant as an in-progress replacement.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::NodeGetFlags NodeGetFlags(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// This method has the same functionality as SetFlags for File and is
// meant as an in-progress replacement.
// Allocates 48 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::NodeSetFlags NodeSetFlags(::zx::unowned_channel _client_end, uint32_t flags);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// This method has the same functionality as SetFlags for File and is
// meant as an in-progress replacement.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::NodeSetFlags NodeSetFlags(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, ::fidl::BytePart _response_buffer);
// Opens a new object relative to this directory object.
//
// `path` may contain multiple segments, separated by "/" characters,
// and should never be empty; i.e., "" is an invalid path.
//
// `flags` may be any of the `OPEN_FLAG_*` and `OPEN_RIGHT_*` values, bitwise ORed together.
// The `OPEN_FLAG_DESCRIBE` flag may cause an `OnOpen` event to be transmitted
// on the `object` handle, indicating the type of object opened.
//
// If an unknown value is sent for either flags or mode, the connection should
// be closed.
//
// `OPEN_RIGHT_*` flags provided in `flags` will restrict access rights on
// the `object` channel which will be connected to the opened entity.
//
// Rights are never increased. When you open a nested entity within a directory, you may only
// request the same rights as what the directory connection already has, or a subset of those.
// Exceeding those rights causes an access denied error to be transmitted in the
// `OnOpen` event if applicable, and the `object` connection closed.
//
// The caller must specify either one or more of the `OPEN_RIGHT_*` flags, or
// the `OPEN_FLAG_NODE_REFERENCE` flag.
// Request is heap-allocated.
static ResultOf::Open Open(::zx::unowned_channel _client_end, uint32_t flags, uint32_t mode, ::fidl::StringView path, ::zx::channel object);
// Opens a new object relative to this directory object.
//
// `path` may contain multiple segments, separated by "/" characters,
// and should never be empty; i.e., "" is an invalid path.
//
// `flags` may be any of the `OPEN_FLAG_*` and `OPEN_RIGHT_*` values, bitwise ORed together.
// The `OPEN_FLAG_DESCRIBE` flag may cause an `OnOpen` event to be transmitted
// on the `object` handle, indicating the type of object opened.
//
// If an unknown value is sent for either flags or mode, the connection should
// be closed.
//
// `OPEN_RIGHT_*` flags provided in `flags` will restrict access rights on
// the `object` channel which will be connected to the opened entity.
//
// Rights are never increased. When you open a nested entity within a directory, you may only
// request the same rights as what the directory connection already has, or a subset of those.
// Exceeding those rights causes an access denied error to be transmitted in the
// `OnOpen` event if applicable, and the `object` connection closed.
//
// The caller must specify either one or more of the `OPEN_RIGHT_*` flags, or
// the `OPEN_FLAG_NODE_REFERENCE` flag.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Open Open(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t flags, uint32_t mode, ::fidl::StringView path, ::zx::channel object);
// Detaches an object from this directory object.
//
// The underlying object may or may not be deleted after this method
// completes: although the link will be removed from the containing directory,
// objects with multiple references (such as files which are still open)
// will not actually be destroyed until all references are removed.
//
// If a directory is unlinked while it still has an open reference,
// it must become read-only, preventing new entries from being created
// until all references close and the directory is destroyed.
//
// `path` identifies the file which should be detached.
// If `path` contains multiple segments, separated by "/" characters,
// then the directory is traversed, one segment at a time, relative to the
// originally accessed Directory.
//
// Returns:
// `ZX_ERR_ACCESS_DENIED` if the connection (or the underlying filesystem) does not
// allow writable access.
// `ZX_ERR_INVALID_ARGS` if `path` contains ".." segments.
// `ZX_ERR_NOT_EMPTY` if `path` refers to a non-empty directory.
// `ZX_ERR_UNAVAILABLE` if `path` refers to a mount point, containing a remote channel.
// `ZX_ERR_UNAVAILABLE` if `path` is ".".
//
// Other errors may be returned for filesystem-specific reasons.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 24 bytes of response buffer on the stack. Request is heap-allocated.
static ResultOf::Unlink Unlink(::zx::unowned_channel _client_end, ::fidl::StringView path);
// Detaches an object from this directory object.
//
// The underlying object may or may not be deleted after this method
// completes: although the link will be removed from the containing directory,
// objects with multiple references (such as files which are still open)
// will not actually be destroyed until all references are removed.
//
// If a directory is unlinked while it still has an open reference,
// it must become read-only, preventing new entries from being created
// until all references close and the directory is destroyed.
//
// `path` identifies the file which should be detached.
// If `path` contains multiple segments, separated by "/" characters,
// then the directory is traversed, one segment at a time, relative to the
// originally accessed Directory.
//
// Returns:
// `ZX_ERR_ACCESS_DENIED` if the connection (or the underlying filesystem) does not
// allow writable access.
// `ZX_ERR_INVALID_ARGS` if `path` contains ".." segments.
// `ZX_ERR_NOT_EMPTY` if `path` refers to a non-empty directory.
// `ZX_ERR_UNAVAILABLE` if `path` refers to a mount point, containing a remote channel.
// `ZX_ERR_UNAVAILABLE` if `path` is ".".
//
// Other errors may be returned for filesystem-specific reasons.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Unlink Unlink(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::fidl::StringView path, ::fidl::BytePart _response_buffer);
// Reads a collection of variably sized dirents into a buffer.
// The number of dirents in a directory may be very large: akin to
// calling read multiple times on a file, directories have a seek
// offset which is updated on subsequent calls to ReadDirents.
//
// These dirents are of the form:
// ```
// struct dirent {
// // Describes the inode of the entry.
// uint64 ino;
// // Describes the length of the dirent name in bytes.
// uint8 size;
// // Describes the type of the entry. Aligned with the
// // POSIX d_type values. Use `DIRENT_TYPE_*` constants.
// uint8 type;
// // Unterminated name of entry.
// char name[0];
// }
// ```
//
// This method does not require any rights, since one could always probe for
// directory contents by triggering name conflicts during file creation.
// Allocates 24 bytes of request buffer on the stack. Response is heap-allocated.
static ResultOf::ReadDirents ReadDirents(::zx::unowned_channel _client_end, uint64_t max_bytes);
// Reads a collection of variably sized dirents into a buffer.
// The number of dirents in a directory may be very large: akin to
// calling read multiple times on a file, directories have a seek
// offset which is updated on subsequent calls to ReadDirents.
//
// These dirents are of the form:
// ```
// struct dirent {
// // Describes the inode of the entry.
// uint64 ino;
// // Describes the length of the dirent name in bytes.
// uint8 size;
// // Describes the type of the entry. Aligned with the
// // POSIX d_type values. Use `DIRENT_TYPE_*` constants.
// uint8 type;
// // Unterminated name of entry.
// char name[0];
// }
// ```
//
// This method does not require any rights, since one could always probe for
// directory contents by triggering name conflicts during file creation.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::ReadDirents ReadDirents(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint64_t max_bytes, ::fidl::BytePart _response_buffer);
// Resets the directory seek offset.
//
// This method does not require any rights, similar to ReadDirents.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Rewind Rewind(::zx::unowned_channel _client_end);
// Resets the directory seek offset.
//
// This method does not require any rights, similar to ReadDirents.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Rewind Rewind(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Acquires a token to a Directory which can be used to identify
// access to it at a later point in time.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::GetToken GetToken(::zx::unowned_channel _client_end);
// Acquires a token to a Directory which can be used to identify
// access to it at a later point in time.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::GetToken GetToken(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Renames an object named src to the name dst, in a directory represented by token.
//
// `src/dst` must be resolved object names. Including "/" in any position
// other than the end of the string will return `ZX_ERR_INVALID_ARGS`.
// Returning "/" at the end of either string implies that it must be a
// directory, or else `ZX_ERR_NOT_DIR` should be returned.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 24 bytes of response buffer on the stack. Request is heap-allocated.
static ResultOf::Rename Rename(::zx::unowned_channel _client_end, ::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst);
// Renames an object named src to the name dst, in a directory represented by token.
//
// `src/dst` must be resolved object names. Including "/" in any position
// other than the end of the string will return `ZX_ERR_INVALID_ARGS`.
// Returning "/" at the end of either string implies that it must be a
// directory, or else `ZX_ERR_NOT_DIR` should be returned.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Rename Rename(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst, ::fidl::BytePart _response_buffer);
// Creates a link to an object named src by the name dst, within a directory represented by
// token.
//
// `src` must be a resolved object name. Including "/" in the string will
// return `ZX_ERR_INVALID_ARGS`.
//
// `dst` must be a resolved object name. Including "/" in the string will
// return `ZX_ERR_INVALID_ARGS`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Allocates 24 bytes of response buffer on the stack. Request is heap-allocated.
static ResultOf::Link Link(::zx::unowned_channel _client_end, ::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst);
// Creates a link to an object named src by the name dst, within a directory represented by
// token.
//
// `src` must be a resolved object name. Including "/" in the string will
// return `ZX_ERR_INVALID_ARGS`.
//
// `dst` must be a resolved object name. Including "/" in the string will
// return `ZX_ERR_INVALID_ARGS`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Link Link(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst, ::fidl::BytePart _response_buffer);
// Watches a directory, receiving events of added messages on the
// watcher request channel.
//
// The `watcher` handle will send messages of the form:
// ```
// struct {
// uint8 event;
// uint8 len;
// char name[];
// };
// ```
// Where names are NOT null-terminated.
//
// This API is unstable; in the future, watcher will be a `DirectoryWatcher` client.
//
// Mask specifies a bitmask of events to observe.
// Options must be zero; it is reserved.
//
// This method does not require any rights, similar to ReadDirents.
// Allocates 56 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Watch Watch(::zx::unowned_channel _client_end, uint32_t mask, uint32_t options, ::zx::channel watcher);
// Watches a directory, receiving events of added messages on the
// watcher request channel.
//
// The `watcher` handle will send messages of the form:
// ```
// struct {
// uint8 event;
// uint8 len;
// char name[];
// };
// ```
// Where names are NOT null-terminated.
//
// This API is unstable; in the future, watcher will be a `DirectoryWatcher` client.
//
// Mask specifies a bitmask of events to observe.
// Options must be zero; it is reserved.
//
// This method does not require any rights, similar to ReadDirents.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Watch Watch(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t mask, uint32_t options, ::zx::channel watcher, ::fidl::BytePart _response_buffer);
// Mount a channel representing a remote filesystem onto this directory.
// All future requests to this node will be forwarded to the remote filesystem.
// To re-open a node without forwarding to the remote target, the node
// should be opened with `OPEN_FLAG_NO_REMOTE`.
// Allocates 48 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Mount Mount(::zx::unowned_channel _client_end, ::zx::channel remote);
// Mount a channel representing a remote filesystem onto this directory.
// All future requests to this node will be forwarded to the remote filesystem.
// To re-open a node without forwarding to the remote target, the node
// should be opened with `OPEN_FLAG_NO_REMOTE`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Mount Mount(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::zx::channel remote, ::fidl::BytePart _response_buffer);
// Atomically create a directory with a provided path, and mount the
// remote handle to the newly created directory.
// Allocates 328 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::MountAndCreate MountAndCreate(::zx::unowned_channel _client_end, ::zx::channel remote, ::fidl::StringView name, uint32_t flags);
// Atomically create a directory with a provided path, and mount the
// remote handle to the newly created directory.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::MountAndCreate MountAndCreate(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::zx::channel remote, ::fidl::StringView name, uint32_t flags, ::fidl::BytePart _response_buffer);
// Unmount this filesystem. After this function returns successfully,
// all connections to the filesystem will be terminated.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Unmount Unmount(::zx::unowned_channel _client_end);
// Unmount this filesystem. After this function returns successfully,
// all connections to the filesystem will be terminated.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Unmount Unmount(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Detach a node which was previously attached to this directory
// with Mount.
// Allocates 40 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::UnmountNode UnmountNode(::zx::unowned_channel _client_end);
// Detach a node which was previously attached to this directory
// with Mount.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::UnmountNode UnmountNode(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Query the filesystem for filesystem-specific information.
// Allocates 144 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::QueryFilesystem QueryFilesystem(::zx::unowned_channel _client_end);
// Query the filesystem for filesystem-specific information.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::QueryFilesystem QueryFilesystem(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Acquire the path to the device backing this filesystem, if there is one.
// Allocates 16 bytes of request buffer on the stack. Response is heap-allocated.
static ResultOf::GetDevicePath GetDevicePath(::zx::unowned_channel _client_end);
// Acquire the path to the device backing this filesystem, if there is one.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::GetDevicePath GetDevicePath(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Handle all possible events defined in this protocol.
// Blocks to consume exactly one message from the channel, then call the corresponding handler
// defined in |EventHandlers|. The return status of the handler function is folded with any
// transport-level errors and returned.
static zx_status_t HandleEvents(::zx::unowned_channel client_end, EventHandlers handlers);
};
// Messages are encoded and decoded in-place when these methods are used.
// Additionally, requests must be already laid-out according to the FIDL wire-format.
class InPlace final {
InPlace() = delete;
public:
// Create another connection to the same remote object.
//
// `flags` may be any of:
//
// - `OPEN_RIGHT_*`
// - `OPEN_FLAG_APPEND`
// - `OPEN_FLAG_NO_REMOTE`
// - `OPEN_FLAG_DESCRIBE`
// - `CLONE_FLAG_SAME_RIGHTS`
//
// All other flags are ignored.
//
// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
// cloned object.
// The cloned object must have rights less than or equal to the original object.
// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
// `CLONE_FLAG_SAME_RIGHTS`.
static ::fidl::internal::StatusAndError Clone(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<CloneRequest> params);
// Terminates connection with object.
//
// This method does not require any rights.
static ::fidl::DecodeResult<CloseResponse> Close(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Returns extra information about the type of the object.
// If the `Describe` operation fails, the connection is closed.
//
// This method does not require any rights.
static ::fidl::DecodeResult<DescribeResponse> Describe(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Synchronizes updates to the node to the underlying media, if it exists.
//
// This method does not require any rights.
static ::fidl::DecodeResult<SyncResponse> Sync(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Acquires information about the node.
//
// This method does not require any rights.
static ::fidl::DecodeResult<GetAttrResponse> GetAttr(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Updates information about the node.
// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
static ::fidl::DecodeResult<SetAttrResponse> SetAttr(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<SetAttrRequest> params, ::fidl::BytePart response_buffer);
// Acquires the `Directory.Open` rights and flags used to access this file.
//
// This method does not require any rights.
// This method has the same functionality as GetFlags for File and is
// meant as an in-progress replacement.
static ::fidl::DecodeResult<NodeGetFlagsResponse> NodeGetFlags(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Changes the `Directory.Open` flags used to access the file.
// Supported flags which can be turned on / off:
// - `OPEN_FLAG_APPEND`
//
// This method does not require any rights.
// This method has the same functionality as SetFlags for File and is
// meant as an in-progress replacement.
static ::fidl::DecodeResult<NodeSetFlagsResponse> NodeSetFlags(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<NodeSetFlagsRequest> params, ::fidl::BytePart response_buffer);
// Opens a new object relative to this directory object.
//
// `path` may contain multiple segments, separated by "/" characters,
// and should never be empty; i.e., "" is an invalid path.
//
// `flags` may be any of the `OPEN_FLAG_*` and `OPEN_RIGHT_*` values, bitwise ORed together.
// The `OPEN_FLAG_DESCRIBE` flag may cause an `OnOpen` event to be transmitted
// on the `object` handle, indicating the type of object opened.
//
// If an unknown value is sent for either flags or mode, the connection should
// be closed.
//
// `OPEN_RIGHT_*` flags provided in `flags` will restrict access rights on
// the `object` channel which will be connected to the opened entity.
//
// Rights are never increased. When you open a nested entity within a directory, you may only
// request the same rights as what the directory connection already has, or a subset of those.
// Exceeding those rights causes an access denied error to be transmitted in the
// `OnOpen` event if applicable, and the `object` connection closed.
//
// The caller must specify either one or more of the `OPEN_RIGHT_*` flags, or
// the `OPEN_FLAG_NODE_REFERENCE` flag.
static ::fidl::internal::StatusAndError Open(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<OpenRequest> params);
// Detaches an object from this directory object.
//
// The underlying object may or may not be deleted after this method
// completes: although the link will be removed from the containing directory,
// objects with multiple references (such as files which are still open)
// will not actually be destroyed until all references are removed.
//
// If a directory is unlinked while it still has an open reference,
// it must become read-only, preventing new entries from being created
// until all references close and the directory is destroyed.
//
// `path` identifies the file which should be detached.
// If `path` contains multiple segments, separated by "/" characters,
// then the directory is traversed, one segment at a time, relative to the
// originally accessed Directory.
//
// Returns:
// `ZX_ERR_ACCESS_DENIED` if the connection (or the underlying filesystem) does not
// allow writable access.
// `ZX_ERR_INVALID_ARGS` if `path` contains ".." segments.
// `ZX_ERR_NOT_EMPTY` if `path` refers to a non-empty directory.
// `ZX_ERR_UNAVAILABLE` if `path` refers to a mount point, containing a remote channel.
// `ZX_ERR_UNAVAILABLE` if `path` is ".".
//
// Other errors may be returned for filesystem-specific reasons.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
static ::fidl::DecodeResult<UnlinkResponse> Unlink(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<UnlinkRequest> params, ::fidl::BytePart response_buffer);
// Reads a collection of variably sized dirents into a buffer.
// The number of dirents in a directory may be very large: akin to
// calling read multiple times on a file, directories have a seek
// offset which is updated on subsequent calls to ReadDirents.
//
// These dirents are of the form:
// ```
// struct dirent {
// // Describes the inode of the entry.
// uint64 ino;
// // Describes the length of the dirent name in bytes.
// uint8 size;
// // Describes the type of the entry. Aligned with the
// // POSIX d_type values. Use `DIRENT_TYPE_*` constants.
// uint8 type;
// // Unterminated name of entry.
// char name[0];
// }
// ```
//
// This method does not require any rights, since one could always probe for
// directory contents by triggering name conflicts during file creation.
static ::fidl::DecodeResult<ReadDirentsResponse> ReadDirents(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<ReadDirentsRequest> params, ::fidl::BytePart response_buffer);
// Resets the directory seek offset.
//
// This method does not require any rights, similar to ReadDirents.
static ::fidl::DecodeResult<RewindResponse> Rewind(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Acquires a token to a Directory which can be used to identify
// access to it at a later point in time.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
static ::fidl::DecodeResult<GetTokenResponse> GetToken(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Renames an object named src to the name dst, in a directory represented by token.
//
// `src/dst` must be resolved object names. Including "/" in any position
// other than the end of the string will return `ZX_ERR_INVALID_ARGS`.
// Returning "/" at the end of either string implies that it must be a
// directory, or else `ZX_ERR_NOT_DIR` should be returned.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
static ::fidl::DecodeResult<RenameResponse> Rename(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<RenameRequest> params, ::fidl::BytePart response_buffer);
// Creates a link to an object named src by the name dst, within a directory represented by
// token.
//
// `src` must be a resolved object name. Including "/" in the string will
// return `ZX_ERR_INVALID_ARGS`.
//
// `dst` must be a resolved object name. Including "/" in the string will
// return `ZX_ERR_INVALID_ARGS`.
//
// This method requires following rights: `OPEN_RIGHT_WRITABLE`.
static ::fidl::DecodeResult<LinkResponse> Link(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<LinkRequest> params, ::fidl::BytePart response_buffer);
// Watches a directory, receiving events of added messages on the
// watcher request channel.
//
// The `watcher` handle will send messages of the form:
// ```
// struct {
// uint8 event;
// uint8 len;
// char name[];
// };
// ```
// Where names are NOT null-terminated.
//
// This API is unstable; in the future, watcher will be a `DirectoryWatcher` client.
//
// Mask specifies a bitmask of events to observe.
// Options must be zero; it is reserved.
//
// This method does not require any rights, similar to ReadDirents.
static ::fidl::DecodeResult<WatchResponse> Watch(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<WatchRequest> params, ::fidl::BytePart response_buffer);
// Mount a channel representing a remote filesystem onto this directory.
// All future requests to this node will be forwarded to the remote filesystem.
// To re-open a node without forwarding to the remote target, the node
// should be opened with `OPEN_FLAG_NO_REMOTE`.
static ::fidl::DecodeResult<MountResponse> Mount(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<MountRequest> params, ::fidl::BytePart response_buffer);
// Atomically create a directory with a provided path, and mount the
// remote handle to the newly created directory.
static ::fidl::DecodeResult<MountAndCreateResponse> MountAndCreate(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<MountAndCreateRequest> params, ::fidl::BytePart response_buffer);
// Unmount this filesystem. After this function returns successfully,
// all connections to the filesystem will be terminated.
static ::fidl::DecodeResult<UnmountResponse> Unmount(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Detach a node which was previously attached to this directory
// with Mount.
static ::fidl::DecodeResult<UnmountNodeResponse> UnmountNode(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Query the filesystem for filesystem-specific information.
static ::fidl::DecodeResult<QueryFilesystemResponse> QueryFilesystem(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Acquire the path to the device backing this filesystem, if there is one.
static ::fidl::DecodeResult<GetDevicePathResponse> GetDevicePath(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
};
// Pure-virtual interface to be implemented by a server.
class Interface {
public:
Interface() = default;
virtual ~Interface() = default;
using _Outer = DirectoryAdmin;
using _Base = ::fidl::CompleterBase;
using CloneCompleter = ::fidl::Completer<>;
virtual void Clone(uint32_t flags, ::zx::channel object, CloneCompleter::Sync _completer) = 0;
class CloseCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<CloseResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using CloseCompleter = ::fidl::Completer<CloseCompleterBase>;
virtual void Close(CloseCompleter::Sync _completer) = 0;
class DescribeCompleterBase : public _Base {
public:
void Reply(::llcpp::fuchsia::io::NodeInfo info);
void Reply(::fidl::BytePart _buffer, ::llcpp::fuchsia::io::NodeInfo info);
void Reply(::fidl::DecodedMessage<DescribeResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using DescribeCompleter = ::fidl::Completer<DescribeCompleterBase>;
virtual void Describe(DescribeCompleter::Sync _completer) = 0;
class SyncCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<SyncResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using SyncCompleter = ::fidl::Completer<SyncCompleterBase>;
virtual void Sync(SyncCompleter::Sync _completer) = 0;
class GetAttrCompleterBase : public _Base {
public:
void Reply(int32_t s, ::llcpp::fuchsia::io::NodeAttributes attributes);
void Reply(::fidl::BytePart _buffer, int32_t s, ::llcpp::fuchsia::io::NodeAttributes attributes);
void Reply(::fidl::DecodedMessage<GetAttrResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using GetAttrCompleter = ::fidl::Completer<GetAttrCompleterBase>;
virtual void GetAttr(GetAttrCompleter::Sync _completer) = 0;
class SetAttrCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<SetAttrResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using SetAttrCompleter = ::fidl::Completer<SetAttrCompleterBase>;
virtual void SetAttr(uint32_t flags, ::llcpp::fuchsia::io::NodeAttributes attributes, SetAttrCompleter::Sync _completer) = 0;
class NodeGetFlagsCompleterBase : public _Base {
public:
void Reply(int32_t s, uint32_t flags);
void Reply(::fidl::BytePart _buffer, int32_t s, uint32_t flags);
void Reply(::fidl::DecodedMessage<NodeGetFlagsResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using NodeGetFlagsCompleter = ::fidl::Completer<NodeGetFlagsCompleterBase>;
virtual void NodeGetFlags(NodeGetFlagsCompleter::Sync _completer) { _completer.Close(ZX_ERR_NOT_SUPPORTED); }
class NodeSetFlagsCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<NodeSetFlagsResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using NodeSetFlagsCompleter = ::fidl::Completer<NodeSetFlagsCompleterBase>;
virtual void NodeSetFlags(uint32_t flags, NodeSetFlagsCompleter::Sync _completer) { _completer.Close(ZX_ERR_NOT_SUPPORTED); }
using OpenCompleter = ::fidl::Completer<>;
virtual void Open(uint32_t flags, uint32_t mode, ::fidl::StringView path, ::zx::channel object, OpenCompleter::Sync _completer) = 0;
class UnlinkCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<UnlinkResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using UnlinkCompleter = ::fidl::Completer<UnlinkCompleterBase>;
virtual void Unlink(::fidl::StringView path, UnlinkCompleter::Sync _completer) = 0;
class ReadDirentsCompleterBase : public _Base {
public:
void Reply(int32_t s, ::fidl::VectorView<uint8_t> dirents);
void Reply(::fidl::BytePart _buffer, int32_t s, ::fidl::VectorView<uint8_t> dirents);
void Reply(::fidl::DecodedMessage<ReadDirentsResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using ReadDirentsCompleter = ::fidl::Completer<ReadDirentsCompleterBase>;
virtual void ReadDirents(uint64_t max_bytes, ReadDirentsCompleter::Sync _completer) = 0;
class RewindCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<RewindResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using RewindCompleter = ::fidl::Completer<RewindCompleterBase>;
virtual void Rewind(RewindCompleter::Sync _completer) = 0;
class GetTokenCompleterBase : public _Base {
public:
void Reply(int32_t s, ::zx::handle token);
void Reply(::fidl::BytePart _buffer, int32_t s, ::zx::handle token);
void Reply(::fidl::DecodedMessage<GetTokenResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using GetTokenCompleter = ::fidl::Completer<GetTokenCompleterBase>;
virtual void GetToken(GetTokenCompleter::Sync _completer) = 0;
class RenameCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<RenameResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using RenameCompleter = ::fidl::Completer<RenameCompleterBase>;
virtual void Rename(::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst, RenameCompleter::Sync _completer) = 0;
class LinkCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<LinkResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using LinkCompleter = ::fidl::Completer<LinkCompleterBase>;
virtual void Link(::fidl::StringView src, ::zx::handle dst_parent_token, ::fidl::StringView dst, LinkCompleter::Sync _completer) = 0;
class WatchCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<WatchResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using WatchCompleter = ::fidl::Completer<WatchCompleterBase>;
virtual void Watch(uint32_t mask, uint32_t options, ::zx::channel watcher, WatchCompleter::Sync _completer) = 0;
class MountCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<MountResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using MountCompleter = ::fidl::Completer<MountCompleterBase>;
virtual void Mount(::zx::channel remote, MountCompleter::Sync _completer) = 0;
class MountAndCreateCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<MountAndCreateResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using MountAndCreateCompleter = ::fidl::Completer<MountAndCreateCompleterBase>;
virtual void MountAndCreate(::zx::channel remote, ::fidl::StringView name, uint32_t flags, MountAndCreateCompleter::Sync _completer) = 0;
class UnmountCompleterBase : public _Base {
public:
void Reply(int32_t s);
void Reply(::fidl::BytePart _buffer, int32_t s);
void Reply(::fidl::DecodedMessage<UnmountResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using UnmountCompleter = ::fidl::Completer<UnmountCompleterBase>;
virtual void Unmount(UnmountCompleter::Sync _completer) = 0;
class UnmountNodeCompleterBase : public _Base {
public:
void Reply(int32_t s, ::zx::channel remote);
void Reply(::fidl::BytePart _buffer, int32_t s, ::zx::channel remote);
void Reply(::fidl::DecodedMessage<UnmountNodeResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using UnmountNodeCompleter = ::fidl::Completer<UnmountNodeCompleterBase>;
virtual void UnmountNode(UnmountNodeCompleter::Sync _completer) = 0;
class QueryFilesystemCompleterBase : public _Base {
public:
void Reply(int32_t s, ::llcpp::fuchsia::io::FilesystemInfo* info);
void Reply(::fidl::BytePart _buffer, int32_t s, ::llcpp::fuchsia::io::FilesystemInfo* info);
void Reply(::fidl::DecodedMessage<QueryFilesystemResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using QueryFilesystemCompleter = ::fidl::Completer<QueryFilesystemCompleterBase>;
virtual void QueryFilesystem(QueryFilesystemCompleter::Sync _completer) = 0;
class GetDevicePathCompleterBase : public _Base {
public:
void Reply(int32_t s, ::fidl::StringView path);
void Reply(::fidl::BytePart _buffer, int32_t s, ::fidl::StringView path);
void Reply(::fidl::DecodedMessage<GetDevicePathResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using GetDevicePathCompleter = ::fidl::Completer<GetDevicePathCompleterBase>;
virtual void GetDevicePath(GetDevicePathCompleter::Sync _completer) = 0;
};
// Attempts to dispatch the incoming message to a handler function in the server implementation.
// If there is no matching handler, it returns false, leaving the message and transaction intact.
// In all other cases, it consumes the message and returns true.
// It is possible to chain multiple TryDispatch functions in this manner.
static bool TryDispatch(Interface* impl, fidl_msg_t* msg, ::fidl::Transaction* txn);
// Dispatches the incoming message to one of the handlers functions in the interface.
// If there is no matching handler, it closes all the handles in |msg| and closes the channel with
// a |ZX_ERR_NOT_SUPPORTED| epitaph, before returning false. The message should then be discarded.
static bool Dispatch(Interface* impl, fidl_msg_t* msg, ::fidl::Transaction* txn);
// Same as |Dispatch|, but takes a |void*| instead of |Interface*|. Only used with |fidl::Bind|
// to reduce template expansion.
// Do not call this method manually. Use |Dispatch| instead.
static bool TypeErasedDispatch(void* impl, fidl_msg_t* msg, ::fidl::Transaction* txn) {
return Dispatch(static_cast<Interface*>(impl), msg, txn);
}
// An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
//
// Indicates the success or failure of the open operation, and optionally describes the
// object. If the status is `ZX_OK`, `info` contains descriptive information about the object
// (the same as would be returned by `Describe`).
static zx_status_t SendOnOpenEvent(::zx::unowned_channel _chan, int32_t s, ::llcpp::fuchsia::io::NodeInfo info);
// An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
//
// Indicates the success or failure of the open operation, and optionally describes the
// object. If the status is `ZX_OK`, `info` contains descriptive information about the object
// (the same as would be returned by `Describe`).
// Caller provides the backing storage for FIDL message via response buffers.
static zx_status_t SendOnOpenEvent(::zx::unowned_channel _chan, ::fidl::BytePart _buffer, int32_t s, ::llcpp::fuchsia::io::NodeInfo info);
// An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
//
// Indicates the success or failure of the open operation, and optionally describes the
// object. If the status is `ZX_OK`, `info` contains descriptive information about the object
// (the same as would be returned by `Describe`).
// Messages are encoded in-place.
static zx_status_t SendOnOpenEvent(::zx::unowned_channel _chan, ::fidl::DecodedMessage<OnOpenResponse> params);
// Helper functions to fill in the transaction header in a |DecodedMessage<TransactionalMessage>|.
class SetTransactionHeaderFor final {
SetTransactionHeaderFor() = delete;
public:
static void CloneRequest(const ::fidl::DecodedMessage<DirectoryAdmin::CloneRequest>& _msg);
static void CloseRequest(const ::fidl::DecodedMessage<DirectoryAdmin::CloseRequest>& _msg);
static void CloseResponse(const ::fidl::DecodedMessage<DirectoryAdmin::CloseResponse>& _msg);
static void DescribeRequest(const ::fidl::DecodedMessage<DirectoryAdmin::DescribeRequest>& _msg);
static void DescribeResponse(const ::fidl::DecodedMessage<DirectoryAdmin::DescribeResponse>& _msg);
static void OnOpenResponse(const ::fidl::DecodedMessage<DirectoryAdmin::OnOpenResponse>& _msg);
static void SyncRequest(const ::fidl::DecodedMessage<DirectoryAdmin::SyncRequest>& _msg);
static void SyncResponse(const ::fidl::DecodedMessage<DirectoryAdmin::SyncResponse>& _msg);
static void GetAttrRequest(const ::fidl::DecodedMessage<DirectoryAdmin::GetAttrRequest>& _msg);
static void GetAttrResponse(const ::fidl::DecodedMessage<DirectoryAdmin::GetAttrResponse>& _msg);
static void SetAttrRequest(const ::fidl::DecodedMessage<DirectoryAdmin::SetAttrRequest>& _msg);
static void SetAttrResponse(const ::fidl::DecodedMessage<DirectoryAdmin::SetAttrResponse>& _msg);
static void NodeGetFlagsRequest(const ::fidl::DecodedMessage<DirectoryAdmin::NodeGetFlagsRequest>& _msg);
static void NodeGetFlagsResponse(const ::fidl::DecodedMessage<DirectoryAdmin::NodeGetFlagsResponse>& _msg);
static void NodeSetFlagsRequest(const ::fidl::DecodedMessage<DirectoryAdmin::NodeSetFlagsRequest>& _msg);
static void NodeSetFlagsResponse(const ::fidl::DecodedMessage<DirectoryAdmin::NodeSetFlagsResponse>& _msg);
static void OpenRequest(const ::fidl::DecodedMessage<DirectoryAdmin::OpenRequest>& _msg);
static void UnlinkRequest(const ::fidl::DecodedMessage<DirectoryAdmin::UnlinkRequest>& _msg);
static void UnlinkResponse(const ::fidl::DecodedMessage<DirectoryAdmin::UnlinkResponse>& _msg);
static void ReadDirentsRequest(const ::fidl::DecodedMessage<DirectoryAdmin::ReadDirentsRequest>& _msg);
static void ReadDirentsResponse(const ::fidl::DecodedMessage<DirectoryAdmin::ReadDirentsResponse>& _msg);
static void RewindRequest(const ::fidl::DecodedMessage<DirectoryAdmin::RewindRequest>& _msg);
static void RewindResponse(const ::fidl::DecodedMessage<DirectoryAdmin::RewindResponse>& _msg);
static void GetTokenRequest(const ::fidl::DecodedMessage<DirectoryAdmin::GetTokenRequest>& _msg);
static void GetTokenResponse(const ::fidl::DecodedMessage<DirectoryAdmin::GetTokenResponse>& _msg);
static void RenameRequest(const ::fidl::DecodedMessage<DirectoryAdmin::RenameRequest>& _msg);
static void RenameResponse(const ::fidl::DecodedMessage<DirectoryAdmin::RenameResponse>& _msg);
static void LinkRequest(const ::fidl::DecodedMessage<DirectoryAdmin::LinkRequest>& _msg);
static void LinkResponse(const ::fidl::DecodedMessage<DirectoryAdmin::LinkResponse>& _msg);
static void WatchRequest(const ::fidl::DecodedMessage<DirectoryAdmin::WatchRequest>& _msg);
static void WatchResponse(const ::fidl::DecodedMessage<DirectoryAdmin::WatchResponse>& _msg);
static void MountRequest(const ::fidl::DecodedMessage<DirectoryAdmin::MountRequest>& _msg);
static void MountResponse(const ::fidl::DecodedMessage<DirectoryAdmin::MountResponse>& _msg);
static void MountAndCreateRequest(const ::fidl::DecodedMessage<DirectoryAdmin::MountAndCreateRequest>& _msg);
static void MountAndCreateResponse(const ::fidl::DecodedMessage<DirectoryAdmin::MountAndCreateResponse>& _msg);
static void UnmountRequest(const ::fidl::DecodedMessage<DirectoryAdmin::UnmountRequest>& _msg);
static void UnmountResponse(const ::fidl::DecodedMessage<DirectoryAdmin::UnmountResponse>& _msg);
static void UnmountNodeRequest(const ::fidl::DecodedMessage<DirectoryAdmin::UnmountNodeRequest>& _msg);
static void UnmountNodeResponse(const ::fidl::DecodedMessage<DirectoryAdmin::UnmountNodeResponse>& _msg);
static void QueryFilesystemRequest(const ::fidl::DecodedMessage<DirectoryAdmin::QueryFilesystemRequest>& _msg);
static void QueryFilesystemResponse(const ::fidl::DecodedMessage<DirectoryAdmin::QueryFilesystemResponse>& _msg);
static void GetDevicePathRequest(const ::fidl::DecodedMessage<DirectoryAdmin::GetDevicePathRequest>& _msg);
static void GetDevicePathResponse(const ::fidl::DecodedMessage<DirectoryAdmin::GetDevicePathResponse>& _msg);
};
};
// A dirent with an unknown type.
constexpr uint8_t DIRENT_TYPE_UNKNOWN = 0u;
// A dirent representing a socket object.
constexpr uint8_t DIRENT_TYPE_SOCKET = 12u;
// A dirent representing a service object.
constexpr uint8_t DIRENT_TYPE_SERVICE = 16u;
// A dirent representing a file object.
constexpr uint8_t DIRENT_TYPE_FILE = 8u;
// A dirent representing a directory object.
constexpr uint8_t DIRENT_TYPE_DIRECTORY = 4u;
// A dirent representing a block device object.
constexpr uint8_t DIRENT_TYPE_BLOCK_DEVICE = 6u;
// Indicates the device is ready for writing.
constexpr uint32_t DEVICE_SIGNAL_WRITABLE = 67108864u;
// Indicates the device is ready for reading.
constexpr uint32_t DEVICE_SIGNAL_READABLE = 16777216u;
// Indicates an out-of-band state transition has occurred.
constexpr uint32_t DEVICE_SIGNAL_OOB = 33554432u;
// Indicates the device has hung up on the current connection.
constexpr uint32_t DEVICE_SIGNAL_HANGUP = 268435456u;
// Indicates the device has encountered an error state.
constexpr uint32_t DEVICE_SIGNAL_ERROR = 134217728u;
// When used during clone, the new connection inherits the rights on the source connection,
// regardless if it is a file or directory. Otherwise, clone attempts to use the requested rights.
// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with `CLONE_FLAG_SAME_RIGHTS`.
constexpr uint32_t CLONE_FLAG_SAME_RIGHTS = 67108864u;
} // namespace io
} // namespace fuchsia
} // namespace llcpp
namespace fidl {
template <>
struct IsFidlType<::llcpp::fuchsia::io::WatchedEvent> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::io::WatchedEvent>);
static_assert(offsetof(::llcpp::fuchsia::io::WatchedEvent, event) == 0);
static_assert(offsetof(::llcpp::fuchsia::io::WatchedEvent, len) == 1);
static_assert(offsetof(::llcpp::fuchsia::io::WatchedEvent, name) == 8);
static_assert(sizeof(::llcpp::fuchsia::io::WatchedEvent) == ::llcpp::fuchsia::io::WatchedEvent::PrimarySize);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Vmofile> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::io::Vmofile>);
static_assert(offsetof(::llcpp::fuchsia::io::Vmofile, vmo) == 0);
static_assert(offsetof(::llcpp::fuchsia::io::Vmofile, offset) == 8);
static_assert(offsetof(::llcpp::fuchsia::io::Vmofile, length) == 16);
static_assert(sizeof(::llcpp::fuchsia::io::Vmofile) == ::llcpp::fuchsia::io::Vmofile::PrimarySize);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Tty> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::io::Tty>);
static_assert(offsetof(::llcpp::fuchsia::io::Tty, event) == 0);
static_assert(sizeof(::llcpp::fuchsia::io::Tty) == ::llcpp::fuchsia::io::Tty::PrimarySize);
template <>
struct IsFidlType<::llcpp::fuchsia::io::StreamSocket> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::io::StreamSocket>);
static_assert(offsetof(::llcpp::fuchsia::io::StreamSocket, socket) == 0);
static_assert(sizeof(::llcpp::fuchsia::io::StreamSocket) == ::llcpp::fuchsia::io::StreamSocket::PrimarySize);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryWatcher::OnEventRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryWatcher::OnEventRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryWatcher::OnEventRequest)
== ::llcpp::fuchsia::io::DirectoryWatcher::OnEventRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryWatcher::OnEventRequest, events) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Socket> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::io::Socket>);
static_assert(offsetof(::llcpp::fuchsia::io::Socket, socket) == 0);
static_assert(sizeof(::llcpp::fuchsia::io::Socket) == ::llcpp::fuchsia::io::Socket::PrimarySize);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Service> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::io::Service>);
static_assert(offsetof(::llcpp::fuchsia::io::Service, __reserved) == 0);
static_assert(sizeof(::llcpp::fuchsia::io::Service) == ::llcpp::fuchsia::io::Service::PrimarySize);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Pipe> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::io::Pipe>);
static_assert(offsetof(::llcpp::fuchsia::io::Pipe, socket) == 0);
static_assert(sizeof(::llcpp::fuchsia::io::Pipe) == ::llcpp::fuchsia::io::Pipe::PrimarySize);
template <>
struct IsFidlType<::llcpp::fuchsia::io::NodeAttributes> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::io::NodeAttributes>);
static_assert(offsetof(::llcpp::fuchsia::io::NodeAttributes, mode) == 0);
static_assert(offsetof(::llcpp::fuchsia::io::NodeAttributes, id) == 8);
static_assert(offsetof(::llcpp::fuchsia::io::NodeAttributes, content_size) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::NodeAttributes, storage_size) == 24);
static_assert(offsetof(::llcpp::fuchsia::io::NodeAttributes, link_count) == 32);
static_assert(offsetof(::llcpp::fuchsia::io::NodeAttributes, creation_time) == 40);
static_assert(offsetof(::llcpp::fuchsia::io::NodeAttributes, modification_time) == 48);
static_assert(sizeof(::llcpp::fuchsia::io::NodeAttributes) == ::llcpp::fuchsia::io::NodeAttributes::PrimarySize);
template <>
struct IsFidlType<::llcpp::fuchsia::io::FilesystemInfo> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::io::FilesystemInfo>);
static_assert(offsetof(::llcpp::fuchsia::io::FilesystemInfo, total_bytes) == 0);
static_assert(offsetof(::llcpp::fuchsia::io::FilesystemInfo, used_bytes) == 8);
static_assert(offsetof(::llcpp::fuchsia::io::FilesystemInfo, total_nodes) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::FilesystemInfo, used_nodes) == 24);
static_assert(offsetof(::llcpp::fuchsia::io::FilesystemInfo, free_shared_pool_bytes) == 32);
static_assert(offsetof(::llcpp::fuchsia::io::FilesystemInfo, fs_id) == 40);
static_assert(offsetof(::llcpp::fuchsia::io::FilesystemInfo, block_size) == 48);
static_assert(offsetof(::llcpp::fuchsia::io::FilesystemInfo, max_filename_size) == 52);
static_assert(offsetof(::llcpp::fuchsia::io::FilesystemInfo, fs_type) == 56);
static_assert(offsetof(::llcpp::fuchsia::io::FilesystemInfo, padding) == 60);
static_assert(offsetof(::llcpp::fuchsia::io::FilesystemInfo, name) == 64);
static_assert(sizeof(::llcpp::fuchsia::io::FilesystemInfo) == ::llcpp::fuchsia::io::FilesystemInfo::PrimarySize);
template <>
struct IsFidlType<::llcpp::fuchsia::io::FileObject> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::io::FileObject>);
static_assert(offsetof(::llcpp::fuchsia::io::FileObject, event) == 0);
static_assert(sizeof(::llcpp::fuchsia::io::FileObject) == ::llcpp::fuchsia::io::FileObject::PrimarySize);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryObject> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::io::DirectoryObject>);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryObject, __reserved) == 0);
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryObject) == ::llcpp::fuchsia::io::DirectoryObject::PrimarySize);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Device> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::io::Device>);
static_assert(offsetof(::llcpp::fuchsia::io::Device, event) == 0);
static_assert(sizeof(::llcpp::fuchsia::io::Device) == ::llcpp::fuchsia::io::Device::PrimarySize);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DatagramSocket> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::io::DatagramSocket>);
static_assert(offsetof(::llcpp::fuchsia::io::DatagramSocket, event) == 0);
static_assert(sizeof(::llcpp::fuchsia::io::DatagramSocket) == ::llcpp::fuchsia::io::DatagramSocket::PrimarySize);
template <>
struct IsFidlType<::llcpp::fuchsia::io::NodeInfo> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::io::NodeInfo>);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Node::CloneRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Node::CloneRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Node::CloneRequest)
== ::llcpp::fuchsia::io::Node::CloneRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Node::CloneRequest, flags) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::Node::CloneRequest, object) == 20);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Node::CloseResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Node::CloseResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Node::CloseResponse)
== ::llcpp::fuchsia::io::Node::CloseResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Node::CloseResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Node::DescribeResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Node::DescribeResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Node::DescribeResponse)
== ::llcpp::fuchsia::io::Node::DescribeResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Node::DescribeResponse, info) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Node::OnOpenResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Node::OnOpenResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Node::OnOpenResponse)
== ::llcpp::fuchsia::io::Node::OnOpenResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Node::OnOpenResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::Node::OnOpenResponse, info) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Node::SyncResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Node::SyncResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Node::SyncResponse)
== ::llcpp::fuchsia::io::Node::SyncResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Node::SyncResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Node::GetAttrResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Node::GetAttrResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Node::GetAttrResponse)
== ::llcpp::fuchsia::io::Node::GetAttrResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Node::GetAttrResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::Node::GetAttrResponse, attributes) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Node::SetAttrRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Node::SetAttrRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Node::SetAttrRequest)
== ::llcpp::fuchsia::io::Node::SetAttrRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Node::SetAttrRequest, flags) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::Node::SetAttrRequest, attributes) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Node::SetAttrResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Node::SetAttrResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Node::SetAttrResponse)
== ::llcpp::fuchsia::io::Node::SetAttrResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Node::SetAttrResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Node::NodeGetFlagsResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Node::NodeGetFlagsResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Node::NodeGetFlagsResponse)
== ::llcpp::fuchsia::io::Node::NodeGetFlagsResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Node::NodeGetFlagsResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::Node::NodeGetFlagsResponse, flags) == 20);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Node::NodeSetFlagsRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Node::NodeSetFlagsRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Node::NodeSetFlagsRequest)
== ::llcpp::fuchsia::io::Node::NodeSetFlagsRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Node::NodeSetFlagsRequest, flags) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Node::NodeSetFlagsResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Node::NodeSetFlagsResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Node::NodeSetFlagsResponse)
== ::llcpp::fuchsia::io::Node::NodeSetFlagsResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Node::NodeSetFlagsResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::CloneRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::CloneRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::CloneRequest)
== ::llcpp::fuchsia::io::File::CloneRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::CloneRequest, flags) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::File::CloneRequest, object) == 20);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::CloseResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::CloseResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::CloseResponse)
== ::llcpp::fuchsia::io::File::CloseResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::CloseResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::DescribeResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::DescribeResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::DescribeResponse)
== ::llcpp::fuchsia::io::File::DescribeResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::DescribeResponse, info) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::OnOpenResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::OnOpenResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::OnOpenResponse)
== ::llcpp::fuchsia::io::File::OnOpenResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::OnOpenResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::File::OnOpenResponse, info) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::SyncResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::SyncResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::SyncResponse)
== ::llcpp::fuchsia::io::File::SyncResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::SyncResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::GetAttrResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::GetAttrResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::GetAttrResponse)
== ::llcpp::fuchsia::io::File::GetAttrResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::GetAttrResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::File::GetAttrResponse, attributes) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::SetAttrRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::SetAttrRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::SetAttrRequest)
== ::llcpp::fuchsia::io::File::SetAttrRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::SetAttrRequest, flags) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::File::SetAttrRequest, attributes) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::SetAttrResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::SetAttrResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::SetAttrResponse)
== ::llcpp::fuchsia::io::File::SetAttrResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::SetAttrResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::NodeGetFlagsResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::NodeGetFlagsResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::NodeGetFlagsResponse)
== ::llcpp::fuchsia::io::File::NodeGetFlagsResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::NodeGetFlagsResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::File::NodeGetFlagsResponse, flags) == 20);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::NodeSetFlagsRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::NodeSetFlagsRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::NodeSetFlagsRequest)
== ::llcpp::fuchsia::io::File::NodeSetFlagsRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::NodeSetFlagsRequest, flags) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::NodeSetFlagsResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::NodeSetFlagsResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::NodeSetFlagsResponse)
== ::llcpp::fuchsia::io::File::NodeSetFlagsResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::NodeSetFlagsResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::ReadRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::ReadRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::ReadRequest)
== ::llcpp::fuchsia::io::File::ReadRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::ReadRequest, count) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::ReadResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::ReadResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::ReadResponse)
== ::llcpp::fuchsia::io::File::ReadResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::ReadResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::File::ReadResponse, data) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::ReadAtRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::ReadAtRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::ReadAtRequest)
== ::llcpp::fuchsia::io::File::ReadAtRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::ReadAtRequest, count) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::File::ReadAtRequest, offset) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::ReadAtResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::ReadAtResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::ReadAtResponse)
== ::llcpp::fuchsia::io::File::ReadAtResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::ReadAtResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::File::ReadAtResponse, data) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::WriteRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::WriteRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::WriteRequest)
== ::llcpp::fuchsia::io::File::WriteRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::WriteRequest, data) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::WriteResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::WriteResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::WriteResponse)
== ::llcpp::fuchsia::io::File::WriteResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::WriteResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::File::WriteResponse, actual) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::WriteAtRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::WriteAtRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::WriteAtRequest)
== ::llcpp::fuchsia::io::File::WriteAtRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::WriteAtRequest, data) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::File::WriteAtRequest, offset) == 32);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::WriteAtResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::WriteAtResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::WriteAtResponse)
== ::llcpp::fuchsia::io::File::WriteAtResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::WriteAtResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::File::WriteAtResponse, actual) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::SeekRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::SeekRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::SeekRequest)
== ::llcpp::fuchsia::io::File::SeekRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::SeekRequest, offset) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::File::SeekRequest, start) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::SeekResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::SeekResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::SeekResponse)
== ::llcpp::fuchsia::io::File::SeekResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::SeekResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::File::SeekResponse, offset) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::TruncateRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::TruncateRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::TruncateRequest)
== ::llcpp::fuchsia::io::File::TruncateRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::TruncateRequest, length) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::TruncateResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::TruncateResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::TruncateResponse)
== ::llcpp::fuchsia::io::File::TruncateResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::TruncateResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::GetFlagsResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::GetFlagsResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::GetFlagsResponse)
== ::llcpp::fuchsia::io::File::GetFlagsResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::GetFlagsResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::File::GetFlagsResponse, flags) == 20);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::SetFlagsRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::SetFlagsRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::SetFlagsRequest)
== ::llcpp::fuchsia::io::File::SetFlagsRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::SetFlagsRequest, flags) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::SetFlagsResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::SetFlagsResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::SetFlagsResponse)
== ::llcpp::fuchsia::io::File::SetFlagsResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::SetFlagsResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::GetBufferRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::GetBufferRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::GetBufferRequest)
== ::llcpp::fuchsia::io::File::GetBufferRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::GetBufferRequest, flags) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::File::GetBufferResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::File::GetBufferResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::File::GetBufferResponse)
== ::llcpp::fuchsia::io::File::GetBufferResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::File::GetBufferResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::File::GetBufferResponse, buffer) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::CloneRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::CloneRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::CloneRequest)
== ::llcpp::fuchsia::io::Directory::CloneRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::CloneRequest, flags) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::CloneRequest, object) == 20);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::CloseResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::CloseResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::CloseResponse)
== ::llcpp::fuchsia::io::Directory::CloseResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::CloseResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::DescribeResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::DescribeResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::DescribeResponse)
== ::llcpp::fuchsia::io::Directory::DescribeResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::DescribeResponse, info) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::OnOpenResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::OnOpenResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::OnOpenResponse)
== ::llcpp::fuchsia::io::Directory::OnOpenResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::OnOpenResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::OnOpenResponse, info) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::SyncResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::SyncResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::SyncResponse)
== ::llcpp::fuchsia::io::Directory::SyncResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::SyncResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::GetAttrResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::GetAttrResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::GetAttrResponse)
== ::llcpp::fuchsia::io::Directory::GetAttrResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::GetAttrResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::GetAttrResponse, attributes) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::SetAttrRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::SetAttrRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::SetAttrRequest)
== ::llcpp::fuchsia::io::Directory::SetAttrRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::SetAttrRequest, flags) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::SetAttrRequest, attributes) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::SetAttrResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::SetAttrResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::SetAttrResponse)
== ::llcpp::fuchsia::io::Directory::SetAttrResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::SetAttrResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::NodeGetFlagsResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::NodeGetFlagsResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::NodeGetFlagsResponse)
== ::llcpp::fuchsia::io::Directory::NodeGetFlagsResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::NodeGetFlagsResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::NodeGetFlagsResponse, flags) == 20);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::NodeSetFlagsRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::NodeSetFlagsRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::NodeSetFlagsRequest)
== ::llcpp::fuchsia::io::Directory::NodeSetFlagsRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::NodeSetFlagsRequest, flags) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::NodeSetFlagsResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::NodeSetFlagsResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::NodeSetFlagsResponse)
== ::llcpp::fuchsia::io::Directory::NodeSetFlagsResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::NodeSetFlagsResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::OpenRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::OpenRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::OpenRequest)
== ::llcpp::fuchsia::io::Directory::OpenRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::OpenRequest, flags) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::OpenRequest, mode) == 20);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::OpenRequest, path) == 24);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::OpenRequest, object) == 40);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::UnlinkRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::UnlinkRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::UnlinkRequest)
== ::llcpp::fuchsia::io::Directory::UnlinkRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::UnlinkRequest, path) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::UnlinkResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::UnlinkResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::UnlinkResponse)
== ::llcpp::fuchsia::io::Directory::UnlinkResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::UnlinkResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::ReadDirentsRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::ReadDirentsRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::ReadDirentsRequest)
== ::llcpp::fuchsia::io::Directory::ReadDirentsRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::ReadDirentsRequest, max_bytes) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::ReadDirentsResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::ReadDirentsResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::ReadDirentsResponse)
== ::llcpp::fuchsia::io::Directory::ReadDirentsResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::ReadDirentsResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::ReadDirentsResponse, dirents) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::RewindResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::RewindResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::RewindResponse)
== ::llcpp::fuchsia::io::Directory::RewindResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::RewindResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::GetTokenResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::GetTokenResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::GetTokenResponse)
== ::llcpp::fuchsia::io::Directory::GetTokenResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::GetTokenResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::GetTokenResponse, token) == 20);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::RenameRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::RenameRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::RenameRequest)
== ::llcpp::fuchsia::io::Directory::RenameRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::RenameRequest, src) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::RenameRequest, dst_parent_token) == 32);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::RenameRequest, dst) == 40);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::RenameResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::RenameResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::RenameResponse)
== ::llcpp::fuchsia::io::Directory::RenameResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::RenameResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::LinkRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::LinkRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::LinkRequest)
== ::llcpp::fuchsia::io::Directory::LinkRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::LinkRequest, src) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::LinkRequest, dst_parent_token) == 32);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::LinkRequest, dst) == 40);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::LinkResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::LinkResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::LinkResponse)
== ::llcpp::fuchsia::io::Directory::LinkResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::LinkResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::WatchRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::WatchRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::WatchRequest)
== ::llcpp::fuchsia::io::Directory::WatchRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::WatchRequest, mask) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::WatchRequest, options) == 20);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::WatchRequest, watcher) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::Directory::WatchResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::Directory::WatchResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::Directory::WatchResponse)
== ::llcpp::fuchsia::io::Directory::WatchResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::Directory::WatchResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::CloneRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::CloneRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::CloneRequest)
== ::llcpp::fuchsia::io::DirectoryAdmin::CloneRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::CloneRequest, flags) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::CloneRequest, object) == 20);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::CloseResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::CloseResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::CloseResponse)
== ::llcpp::fuchsia::io::DirectoryAdmin::CloseResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::CloseResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::DescribeResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::DescribeResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::DescribeResponse)
== ::llcpp::fuchsia::io::DirectoryAdmin::DescribeResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::DescribeResponse, info) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::OnOpenResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::OnOpenResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::OnOpenResponse)
== ::llcpp::fuchsia::io::DirectoryAdmin::OnOpenResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::OnOpenResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::OnOpenResponse, info) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::SyncResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::SyncResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::SyncResponse)
== ::llcpp::fuchsia::io::DirectoryAdmin::SyncResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::SyncResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::GetAttrResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::GetAttrResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::GetAttrResponse)
== ::llcpp::fuchsia::io::DirectoryAdmin::GetAttrResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::GetAttrResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::GetAttrResponse, attributes) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::SetAttrRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::SetAttrRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::SetAttrRequest)
== ::llcpp::fuchsia::io::DirectoryAdmin::SetAttrRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::SetAttrRequest, flags) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::SetAttrRequest, attributes) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::SetAttrResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::SetAttrResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::SetAttrResponse)
== ::llcpp::fuchsia::io::DirectoryAdmin::SetAttrResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::SetAttrResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::NodeGetFlagsResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::NodeGetFlagsResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::NodeGetFlagsResponse)
== ::llcpp::fuchsia::io::DirectoryAdmin::NodeGetFlagsResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::NodeGetFlagsResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::NodeGetFlagsResponse, flags) == 20);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::NodeSetFlagsRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::NodeSetFlagsRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::NodeSetFlagsRequest)
== ::llcpp::fuchsia::io::DirectoryAdmin::NodeSetFlagsRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::NodeSetFlagsRequest, flags) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::NodeSetFlagsResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::NodeSetFlagsResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::NodeSetFlagsResponse)
== ::llcpp::fuchsia::io::DirectoryAdmin::NodeSetFlagsResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::NodeSetFlagsResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::OpenRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::OpenRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::OpenRequest)
== ::llcpp::fuchsia::io::DirectoryAdmin::OpenRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::OpenRequest, flags) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::OpenRequest, mode) == 20);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::OpenRequest, path) == 24);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::OpenRequest, object) == 40);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::UnlinkRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::UnlinkRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::UnlinkRequest)
== ::llcpp::fuchsia::io::DirectoryAdmin::UnlinkRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::UnlinkRequest, path) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::UnlinkResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::UnlinkResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::UnlinkResponse)
== ::llcpp::fuchsia::io::DirectoryAdmin::UnlinkResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::UnlinkResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::ReadDirentsRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::ReadDirentsRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::ReadDirentsRequest)
== ::llcpp::fuchsia::io::DirectoryAdmin::ReadDirentsRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::ReadDirentsRequest, max_bytes) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::ReadDirentsResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::ReadDirentsResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::ReadDirentsResponse)
== ::llcpp::fuchsia::io::DirectoryAdmin::ReadDirentsResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::ReadDirentsResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::ReadDirentsResponse, dirents) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::RewindResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::RewindResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::RewindResponse)
== ::llcpp::fuchsia::io::DirectoryAdmin::RewindResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::RewindResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::GetTokenResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::GetTokenResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::GetTokenResponse)
== ::llcpp::fuchsia::io::DirectoryAdmin::GetTokenResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::GetTokenResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::GetTokenResponse, token) == 20);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::RenameRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::RenameRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::RenameRequest)
== ::llcpp::fuchsia::io::DirectoryAdmin::RenameRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::RenameRequest, src) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::RenameRequest, dst_parent_token) == 32);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::RenameRequest, dst) == 40);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::RenameResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::RenameResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::RenameResponse)
== ::llcpp::fuchsia::io::DirectoryAdmin::RenameResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::RenameResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::LinkRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::LinkRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::LinkRequest)
== ::llcpp::fuchsia::io::DirectoryAdmin::LinkRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::LinkRequest, src) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::LinkRequest, dst_parent_token) == 32);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::LinkRequest, dst) == 40);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::LinkResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::LinkResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::LinkResponse)
== ::llcpp::fuchsia::io::DirectoryAdmin::LinkResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::LinkResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::WatchRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::WatchRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::WatchRequest)
== ::llcpp::fuchsia::io::DirectoryAdmin::WatchRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::WatchRequest, mask) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::WatchRequest, options) == 20);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::WatchRequest, watcher) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::WatchResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::WatchResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::WatchResponse)
== ::llcpp::fuchsia::io::DirectoryAdmin::WatchResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::WatchResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::MountRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::MountRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::MountRequest)
== ::llcpp::fuchsia::io::DirectoryAdmin::MountRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::MountRequest, remote) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::MountResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::MountResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::MountResponse)
== ::llcpp::fuchsia::io::DirectoryAdmin::MountResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::MountResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::MountAndCreateRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::MountAndCreateRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::MountAndCreateRequest)
== ::llcpp::fuchsia::io::DirectoryAdmin::MountAndCreateRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::MountAndCreateRequest, remote) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::MountAndCreateRequest, name) == 24);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::MountAndCreateRequest, flags) == 40);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::MountAndCreateResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::MountAndCreateResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::MountAndCreateResponse)
== ::llcpp::fuchsia::io::DirectoryAdmin::MountAndCreateResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::MountAndCreateResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::UnmountResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::UnmountResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::UnmountResponse)
== ::llcpp::fuchsia::io::DirectoryAdmin::UnmountResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::UnmountResponse, s) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::UnmountNodeResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::UnmountNodeResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::UnmountNodeResponse)
== ::llcpp::fuchsia::io::DirectoryAdmin::UnmountNodeResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::UnmountNodeResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::UnmountNodeResponse, remote) == 20);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::QueryFilesystemResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::QueryFilesystemResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::QueryFilesystemResponse)
== ::llcpp::fuchsia::io::DirectoryAdmin::QueryFilesystemResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::QueryFilesystemResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::QueryFilesystemResponse, info) == 24);
template <>
struct IsFidlType<::llcpp::fuchsia::io::DirectoryAdmin::GetDevicePathResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::io::DirectoryAdmin::GetDevicePathResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::io::DirectoryAdmin::GetDevicePathResponse)
== ::llcpp::fuchsia::io::DirectoryAdmin::GetDevicePathResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::GetDevicePathResponse, s) == 16);
static_assert(offsetof(::llcpp::fuchsia::io::DirectoryAdmin::GetDevicePathResponse, path) == 24);
} // namespace fidl