blob: 9d5a50ea503bfe77050256372a0666be59d10985 [file] [log] [blame]
// WARNING: This file is machine generated by fidlgen.
#pragma once
#include <lib/fidl/internal.h>
#include <lib/fidl/llcpp/array.h>
#include <lib/fidl/llcpp/buffer_allocator.h>
#include <lib/fidl/llcpp/buffer_then_heap_allocator.h>
#include <lib/fidl/llcpp/coding.h>
#include <lib/fidl/llcpp/envelope.h>
#include <lib/fidl/llcpp/errors.h>
#include <lib/fidl/llcpp/memory.h>
#include <lib/fidl/llcpp/message.h>
#include <lib/fidl/llcpp/message_storage.h>
#include <lib/fidl/llcpp/object_view.h>
#include <lib/fidl/llcpp/string_view.h>
#include <lib/fidl/llcpp/tracking_ptr.h>
#include <lib/fidl/llcpp/traits.h>
#include <lib/fidl/llcpp/vector_view.h>
#include <lib/fit/function.h>
#include <lib/fit/optional.h>
#include <algorithm>
#include <cstddef>
#include <variant>
#ifdef __Fuchsia__
#include <lib/fidl/llcpp/client.h>
#include <lib/fidl/llcpp/client_end.h>
#include <lib/fidl/llcpp/connect_service.h>
#include <lib/fidl/llcpp/result.h>
#include <lib/fidl/llcpp/server.h>
#include <lib/fidl/llcpp/server_end.h>
#include <lib/fidl/llcpp/service_handler_interface.h>
#include <lib/fidl/llcpp/sync_call.h>
#include <lib/fidl/llcpp/transaction.h>
#include <lib/fidl/txn_header.h>
#include <lib/zx/channel.h>
#endif // __Fuchsia__
#include <zircon/fidl.h>
namespace llcpp {
namespace fidl {
namespace test {
namespace requestflexibleenvelope {
class StrictFoo;
class FlexibleFoo;
class Protocol;
extern "C" const fidl_type_t fidl_test_requestflexibleenvelope_StrictFooTable;
class StrictFoo {
public:
StrictFoo() : ordinal_(Ordinal::Invalid), envelope_{} {}
StrictFoo(StrictFoo&&) = default;
StrictFoo& operator=(StrictFoo&&) = default;
~StrictFoo() { reset_ptr(nullptr); }
enum class Tag : fidl_xunion_tag_t {
kS = 1, // 0x1
kI = 2, // 0x2
};
bool has_invalid_tag() const { return ordinal_ == Ordinal::Invalid; }
bool is_s() const { return ordinal_ == Ordinal::kS; }
static StrictFoo WithS(::fidl::tracking_ptr<::fidl::StringView>&& val) {
StrictFoo result;
result.set_s(std::move(val));
return result;
}
template <typename... Args>
static StrictFoo WithS(::fidl::AnyAllocator& allocator, Args&&... args) {
StrictFoo result;
result.set_s(::fidl::ObjectView<::fidl::StringView>(
allocator, std::forward<Args>(args)...));
return result;
}
void set_s(::fidl::tracking_ptr<::fidl::StringView>&& elem) {
ordinal_ = Ordinal::kS;
reset_ptr(static_cast<::fidl::tracking_ptr<void>>(std::move(elem)));
}
template <typename... Args>
void set_s(::fidl::AnyAllocator& allocator, Args&&... args) {
ordinal_ = Ordinal::kS;
set_s(::fidl::ObjectView<::fidl::StringView>(allocator,
std::forward<Args>(args)...));
}
::fidl::StringView& mutable_s() {
ZX_ASSERT(ordinal_ == Ordinal::kS);
return *static_cast<::fidl::StringView*>(envelope_.data.get());
}
const ::fidl::StringView& s() const {
ZX_ASSERT(ordinal_ == Ordinal::kS);
return *static_cast<::fidl::StringView*>(envelope_.data.get());
}
bool is_i() const { return ordinal_ == Ordinal::kI; }
static StrictFoo WithI(::fidl::tracking_ptr<int32_t>&& val) {
StrictFoo result;
result.set_i(std::move(val));
return result;
}
template <typename... Args>
static StrictFoo WithI(::fidl::AnyAllocator& allocator, Args&&... args) {
StrictFoo result;
result.set_i(
::fidl::ObjectView<int32_t>(allocator, std::forward<Args>(args)...));
return result;
}
void set_i(::fidl::tracking_ptr<int32_t>&& elem) {
ordinal_ = Ordinal::kI;
reset_ptr(static_cast<::fidl::tracking_ptr<void>>(std::move(elem)));
}
template <typename... Args>
void set_i(::fidl::AnyAllocator& allocator, Args&&... args) {
ordinal_ = Ordinal::kI;
set_i(::fidl::ObjectView<int32_t>(allocator, std::forward<Args>(args)...));
}
int32_t& mutable_i() {
ZX_ASSERT(ordinal_ == Ordinal::kI);
return *static_cast<int32_t*>(envelope_.data.get());
}
const int32_t& i() const {
ZX_ASSERT(ordinal_ == Ordinal::kI);
return *static_cast<int32_t*>(envelope_.data.get());
}
Tag which() const {
ZX_ASSERT(!has_invalid_tag());
return static_cast<Tag>(ordinal_);
}
static constexpr const fidl_type_t* Type =
&fidl_test_requestflexibleenvelope_StrictFooTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
[[maybe_unused]] static constexpr uint32_t MaxOutOfLine = 4294967295;
static constexpr bool HasPointer = true;
private:
enum class Ordinal : fidl_xunion_tag_t {
Invalid = 0,
kS = 1, // 0x1
kI = 2, // 0x2
};
void reset_ptr(::fidl::tracking_ptr<void>&& new_ptr) {
// To clear the existing value, std::move it and let it go out of scope.
switch (static_cast<fidl_xunion_tag_t>(ordinal_)) {
case 1: {
::fidl::tracking_ptr<::fidl::StringView> to_destroy =
static_cast<::fidl::tracking_ptr<::fidl::StringView>>(
std::move(envelope_.data));
break;
}
case 2: {
::fidl::tracking_ptr<int32_t> to_destroy =
static_cast<::fidl::tracking_ptr<int32_t>>(
std::move(envelope_.data));
break;
}
}
envelope_.data = std::move(new_ptr);
}
static void SizeAndOffsetAssertionHelper();
Ordinal ordinal_;
FIDL_ALIGNDECL
::fidl::Envelope<void> envelope_;
};
extern "C" const fidl_type_t fidl_test_requestflexibleenvelope_FlexibleFooTable;
class FlexibleFoo {
public:
FlexibleFoo() : ordinal_(Ordinal::Invalid), envelope_{} {}
FlexibleFoo(FlexibleFoo&&) = default;
FlexibleFoo& operator=(FlexibleFoo&&) = default;
~FlexibleFoo() { reset_ptr(nullptr); }
enum class Tag : fidl_xunion_tag_t {
kS = 1, // 0x1
kI = 2, // 0x2
kUnknown = ::std::numeric_limits<::fidl_union_tag_t>::max(),
};
bool has_invalid_tag() const { return ordinal_ == Ordinal::Invalid; }
bool is_s() const { return ordinal_ == Ordinal::kS; }
static FlexibleFoo WithS(::fidl::tracking_ptr<::fidl::StringView>&& val) {
FlexibleFoo result;
result.set_s(std::move(val));
return result;
}
template <typename... Args>
static FlexibleFoo WithS(::fidl::AnyAllocator& allocator, Args&&... args) {
FlexibleFoo result;
result.set_s(::fidl::ObjectView<::fidl::StringView>(
allocator, std::forward<Args>(args)...));
return result;
}
void set_s(::fidl::tracking_ptr<::fidl::StringView>&& elem) {
ordinal_ = Ordinal::kS;
reset_ptr(static_cast<::fidl::tracking_ptr<void>>(std::move(elem)));
}
template <typename... Args>
void set_s(::fidl::AnyAllocator& allocator, Args&&... args) {
ordinal_ = Ordinal::kS;
set_s(::fidl::ObjectView<::fidl::StringView>(allocator,
std::forward<Args>(args)...));
}
::fidl::StringView& mutable_s() {
ZX_ASSERT(ordinal_ == Ordinal::kS);
return *static_cast<::fidl::StringView*>(envelope_.data.get());
}
const ::fidl::StringView& s() const {
ZX_ASSERT(ordinal_ == Ordinal::kS);
return *static_cast<::fidl::StringView*>(envelope_.data.get());
}
bool is_i() const { return ordinal_ == Ordinal::kI; }
static FlexibleFoo WithI(::fidl::tracking_ptr<int32_t>&& val) {
FlexibleFoo result;
result.set_i(std::move(val));
return result;
}
template <typename... Args>
static FlexibleFoo WithI(::fidl::AnyAllocator& allocator, Args&&... args) {
FlexibleFoo result;
result.set_i(
::fidl::ObjectView<int32_t>(allocator, std::forward<Args>(args)...));
return result;
}
void set_i(::fidl::tracking_ptr<int32_t>&& elem) {
ordinal_ = Ordinal::kI;
reset_ptr(static_cast<::fidl::tracking_ptr<void>>(std::move(elem)));
}
template <typename... Args>
void set_i(::fidl::AnyAllocator& allocator, Args&&... args) {
ordinal_ = Ordinal::kI;
set_i(::fidl::ObjectView<int32_t>(allocator, std::forward<Args>(args)...));
}
int32_t& mutable_i() {
ZX_ASSERT(ordinal_ == Ordinal::kI);
return *static_cast<int32_t*>(envelope_.data.get());
}
const int32_t& i() const {
ZX_ASSERT(ordinal_ == Ordinal::kI);
return *static_cast<int32_t*>(envelope_.data.get());
}
Tag which() const;
static constexpr const fidl_type_t* Type =
&fidl_test_requestflexibleenvelope_FlexibleFooTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
[[maybe_unused]] static constexpr uint32_t MaxOutOfLine = 4294967295;
static constexpr bool HasPointer = true;
private:
enum class Ordinal : fidl_xunion_tag_t {
Invalid = 0,
kS = 1, // 0x1
kI = 2, // 0x2
};
void reset_ptr(::fidl::tracking_ptr<void>&& new_ptr) {
// To clear the existing value, std::move it and let it go out of scope.
switch (static_cast<fidl_xunion_tag_t>(ordinal_)) {
case 1: {
::fidl::tracking_ptr<::fidl::StringView> to_destroy =
static_cast<::fidl::tracking_ptr<::fidl::StringView>>(
std::move(envelope_.data));
break;
}
case 2: {
::fidl::tracking_ptr<int32_t> to_destroy =
static_cast<::fidl::tracking_ptr<int32_t>>(
std::move(envelope_.data));
break;
}
}
envelope_.data = std::move(new_ptr);
}
static void SizeAndOffsetAssertionHelper();
Ordinal ordinal_;
FIDL_ALIGNDECL
::fidl::Envelope<void> envelope_;
};
extern "C" const fidl_type_t
fidl_test_requestflexibleenvelope_ProtocolRequestStrictResponseFlexibleRequestTable;
extern "C" const fidl_type_t
fidl_test_requestflexibleenvelope_ProtocolRequestStrictResponseFlexibleResponseTable;
extern "C" const fidl_type_t
fidl_test_requestflexibleenvelope_ProtocolRequestFlexibleResponseStrictRequestTable;
extern "C" const fidl_type_t
fidl_test_requestflexibleenvelope_ProtocolRequestFlexibleResponseStrictResponseTable;
class Protocol final {
Protocol() = delete;
public:
struct RequestStrictResponseFlexibleResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo f;
explicit RequestStrictResponseFlexibleResponse(
::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo& f)
: f(std::move(f)) {
_InitHeader();
}
RequestStrictResponseFlexibleResponse() { _InitHeader(); }
static constexpr const fidl_type_t* Type =
&fidl_test_requestflexibleenvelope_ProtocolRequestStrictResponseFlexibleResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 40;
static constexpr uint32_t MaxOutOfLine = 4294967295;
static constexpr bool HasFlexibleEnvelope = true;
static constexpr bool HasPointer = true;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
class UnownedEncodedMessage final {
public:
UnownedEncodedMessage(
uint8_t* _bytes, uint32_t _byte_size,
::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo& f)
: message_(_bytes, _byte_size,
sizeof(RequestStrictResponseFlexibleResponse), nullptr, 0,
0) {
FIDL_ALIGNDECL RequestStrictResponseFlexibleResponse _response{f};
message_.LinearizeAndEncode<RequestStrictResponseFlexibleResponse>(
&_response);
}
UnownedEncodedMessage(uint8_t* bytes, uint32_t byte_size,
RequestStrictResponseFlexibleResponse* response)
: message_(bytes, byte_size,
sizeof(RequestStrictResponseFlexibleResponse), nullptr, 0,
0) {
message_.LinearizeAndEncode<RequestStrictResponseFlexibleResponse>(
response);
}
UnownedEncodedMessage(const UnownedEncodedMessage&) = delete;
UnownedEncodedMessage(UnownedEncodedMessage&&) = delete;
UnownedEncodedMessage* operator=(const UnownedEncodedMessage&) = delete;
UnownedEncodedMessage* operator=(UnownedEncodedMessage&&) = delete;
zx_status_t status() const { return message_.status(); }
#ifdef __Fuchsia__
const char* status_string() const { return message_.status_string(); }
#endif
bool ok() const { return message_.status() == ZX_OK; }
const char* error() const { return message_.error(); }
::fidl::OutgoingMessage& GetOutgoingMessage() { return message_; }
template <typename ChannelLike>
void Write(ChannelLike&& client) {
message_.Write(std::forward<ChannelLike>(client));
}
private:
RequestStrictResponseFlexibleResponse& Message() {
return *reinterpret_cast<RequestStrictResponseFlexibleResponse*>(
message_.bytes());
}
::fidl::OutgoingMessage message_;
};
class OwnedEncodedMessage final {
public:
explicit OwnedEncodedMessage(
::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo& f)
: bytes_(std::make_unique<::fidl::internal::AlignedBuffer<
ZX_CHANNEL_MAX_MSG_BYTES>>()),
message_(bytes_->data(), ZX_CHANNEL_MAX_MSG_BYTES, f) {}
explicit OwnedEncodedMessage(
RequestStrictResponseFlexibleResponse* response)
: bytes_(std::make_unique<::fidl::internal::AlignedBuffer<
ZX_CHANNEL_MAX_MSG_BYTES>>()),
message_(bytes_->data(), ZX_CHANNEL_MAX_MSG_BYTES, response) {}
OwnedEncodedMessage(const OwnedEncodedMessage&) = delete;
OwnedEncodedMessage(OwnedEncodedMessage&&) = delete;
OwnedEncodedMessage* operator=(const OwnedEncodedMessage&) = delete;
OwnedEncodedMessage* operator=(OwnedEncodedMessage&&) = delete;
zx_status_t status() const { return message_.status(); }
#ifdef __Fuchsia__
const char* status_string() const { return message_.status_string(); }
#endif
bool ok() const { return message_.ok(); }
const char* error() const { return message_.error(); }
::fidl::OutgoingMessage& GetOutgoingMessage() {
return message_.GetOutgoingMessage();
}
template <typename ChannelLike>
void Write(ChannelLike&& client) {
message_.Write(std::forward<ChannelLike>(client));
}
private:
std::unique_ptr<::fidl::internal::AlignedBuffer<ZX_CHANNEL_MAX_MSG_BYTES>>
bytes_;
UnownedEncodedMessage message_;
};
class DecodedMessage final : public ::fidl::internal::IncomingMessage {
public:
DecodedMessage(uint8_t* bytes, uint32_t byte_actual,
zx_handle_info_t* handles = nullptr,
uint32_t handle_actual = 0)
: ::fidl::internal::IncomingMessage(bytes, byte_actual, handles,
handle_actual) {
Decode<RequestStrictResponseFlexibleResponse>();
}
DecodedMessage(fidl_incoming_msg_t* msg)
: ::fidl::internal::IncomingMessage(msg) {
Decode<RequestStrictResponseFlexibleResponse>();
}
DecodedMessage(const DecodedMessage&) = delete;
DecodedMessage(DecodedMessage&&) = delete;
DecodedMessage* operator=(const DecodedMessage&) = delete;
DecodedMessage* operator=(DecodedMessage&&) = delete;
RequestStrictResponseFlexibleResponse* PrimaryObject() {
ZX_DEBUG_ASSERT(ok());
return reinterpret_cast<RequestStrictResponseFlexibleResponse*>(
bytes());
}
// Release the ownership of the decoded message. That means that the
// handles won't be closed When the object is destroyed. After calling
// this method, the DecodedMessage object should not be used anymore.
void ReleasePrimaryObject() { ResetBytes(); }
// These methods should only be used for testing purpose.
// They create an DecodedMessage using the bytes of an outgoing message
// and copying the handles.
static DecodedMessage FromOutgoingWithRawHandleCopy(
UnownedEncodedMessage* outgoing_message) {
return DecodedMessage(outgoing_message->GetOutgoingMessage());
}
static DecodedMessage FromOutgoingWithRawHandleCopy(
OwnedEncodedMessage* outgoing_message) {
return DecodedMessage(outgoing_message->GetOutgoingMessage());
}
private:
DecodedMessage(::fidl::OutgoingMessage& outgoing_message) {
Init(outgoing_message, nullptr, 0);
if (ok()) {
Decode<RequestStrictResponseFlexibleResponse>();
}
}
};
private:
void _InitHeader();
};
struct RequestStrictResponseFlexibleRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::llcpp::fidl::test::requestflexibleenvelope::StrictFoo s;
explicit RequestStrictResponseFlexibleRequest(
zx_txid_t _txid,
::llcpp::fidl::test::requestflexibleenvelope::StrictFoo& s)
: s(std::move(s)) {
_InitHeader(_txid);
}
explicit RequestStrictResponseFlexibleRequest(zx_txid_t _txid) {
_InitHeader(_txid);
}
static constexpr const fidl_type_t* Type =
&fidl_test_requestflexibleenvelope_ProtocolRequestStrictResponseFlexibleRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 40;
static constexpr uint32_t MaxOutOfLine = 4294967295;
static constexpr uint32_t AltPrimarySize = 40;
static constexpr uint32_t AltMaxOutOfLine = 4294967295;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = RequestStrictResponseFlexibleResponse;
class UnownedEncodedMessage final {
public:
UnownedEncodedMessage(
uint8_t* _bytes, uint32_t _byte_size, zx_txid_t _txid,
::llcpp::fidl::test::requestflexibleenvelope::StrictFoo& s)
: message_(_bytes, _byte_size,
sizeof(RequestStrictResponseFlexibleRequest), nullptr, 0,
0) {
FIDL_ALIGNDECL RequestStrictResponseFlexibleRequest _request(_txid, s);
message_.LinearizeAndEncode<RequestStrictResponseFlexibleRequest>(
&_request);
}
UnownedEncodedMessage(uint8_t* bytes, uint32_t byte_size,
RequestStrictResponseFlexibleRequest* request)
: message_(bytes, byte_size,
sizeof(RequestStrictResponseFlexibleRequest), nullptr, 0,
0) {
message_.LinearizeAndEncode<RequestStrictResponseFlexibleRequest>(
request);
}
UnownedEncodedMessage(const UnownedEncodedMessage&) = delete;
UnownedEncodedMessage(UnownedEncodedMessage&&) = delete;
UnownedEncodedMessage* operator=(const UnownedEncodedMessage&) = delete;
UnownedEncodedMessage* operator=(UnownedEncodedMessage&&) = delete;
zx_status_t status() const { return message_.status(); }
#ifdef __Fuchsia__
const char* status_string() const { return message_.status_string(); }
#endif
bool ok() const { return message_.status() == ZX_OK; }
const char* error() const { return message_.error(); }
::fidl::OutgoingMessage& GetOutgoingMessage() { return message_; }
template <typename ChannelLike>
void Write(ChannelLike&& client) {
message_.Write(std::forward<ChannelLike>(client));
}
private:
RequestStrictResponseFlexibleRequest& Message() {
return *reinterpret_cast<RequestStrictResponseFlexibleRequest*>(
message_.bytes());
}
::fidl::OutgoingMessage message_;
};
class OwnedEncodedMessage final {
public:
explicit OwnedEncodedMessage(
zx_txid_t _txid,
::llcpp::fidl::test::requestflexibleenvelope::StrictFoo& s)
: bytes_(std::make_unique<::fidl::internal::AlignedBuffer<
ZX_CHANNEL_MAX_MSG_BYTES>>()),
message_(bytes_->data(), ZX_CHANNEL_MAX_MSG_BYTES, _txid, s) {}
explicit OwnedEncodedMessage(
RequestStrictResponseFlexibleRequest* request)
: bytes_(std::make_unique<::fidl::internal::AlignedBuffer<
ZX_CHANNEL_MAX_MSG_BYTES>>()),
message_(bytes_->data(), ZX_CHANNEL_MAX_MSG_BYTES, request) {}
OwnedEncodedMessage(const OwnedEncodedMessage&) = delete;
OwnedEncodedMessage(OwnedEncodedMessage&&) = delete;
OwnedEncodedMessage* operator=(const OwnedEncodedMessage&) = delete;
OwnedEncodedMessage* operator=(OwnedEncodedMessage&&) = delete;
zx_status_t status() const { return message_.status(); }
#ifdef __Fuchsia__
const char* status_string() const { return message_.status_string(); }
#endif
bool ok() const { return message_.ok(); }
const char* error() const { return message_.error(); }
::fidl::OutgoingMessage& GetOutgoingMessage() {
return message_.GetOutgoingMessage();
}
template <typename ChannelLike>
void Write(ChannelLike&& client) {
message_.Write(std::forward<ChannelLike>(client));
}
private:
std::unique_ptr<::fidl::internal::AlignedBuffer<ZX_CHANNEL_MAX_MSG_BYTES>>
bytes_;
UnownedEncodedMessage message_;
};
class DecodedMessage final : public ::fidl::internal::IncomingMessage {
public:
DecodedMessage(uint8_t* bytes, uint32_t byte_actual,
zx_handle_info_t* handles = nullptr,
uint32_t handle_actual = 0)
: ::fidl::internal::IncomingMessage(bytes, byte_actual, handles,
handle_actual) {
Decode<RequestStrictResponseFlexibleRequest>();
}
DecodedMessage(fidl_incoming_msg_t* msg)
: ::fidl::internal::IncomingMessage(msg) {
Decode<RequestStrictResponseFlexibleRequest>();
}
DecodedMessage(const DecodedMessage&) = delete;
DecodedMessage(DecodedMessage&&) = delete;
DecodedMessage* operator=(const DecodedMessage&) = delete;
DecodedMessage* operator=(DecodedMessage&&) = delete;
RequestStrictResponseFlexibleRequest* PrimaryObject() {
ZX_DEBUG_ASSERT(ok());
return reinterpret_cast<RequestStrictResponseFlexibleRequest*>(bytes());
}
// Release the ownership of the decoded message. That means that the
// handles won't be closed When the object is destroyed. After calling
// this method, the DecodedMessage object should not be used anymore.
void ReleasePrimaryObject() { ResetBytes(); }
// These methods should only be used for testing purpose.
// They create an DecodedMessage using the bytes of an outgoing message
// and copying the handles.
static DecodedMessage FromOutgoingWithRawHandleCopy(
UnownedEncodedMessage* encoded_message) {
return DecodedMessage(encoded_message->GetOutgoingMessage());
}
static DecodedMessage FromOutgoingWithRawHandleCopy(
OwnedEncodedMessage* encoded_message) {
return DecodedMessage(encoded_message->GetOutgoingMessage());
}
private:
DecodedMessage(::fidl::OutgoingMessage& outgoing_message) {
Init(outgoing_message, nullptr, 0);
if (ok()) {
Decode<RequestStrictResponseFlexibleRequest>();
}
}
};
private:
void _InitHeader(zx_txid_t _txid);
};
struct RequestFlexibleResponseStrictResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::llcpp::fidl::test::requestflexibleenvelope::StrictFoo f;
explicit RequestFlexibleResponseStrictResponse(
::llcpp::fidl::test::requestflexibleenvelope::StrictFoo& f)
: f(std::move(f)) {
_InitHeader();
}
RequestFlexibleResponseStrictResponse() { _InitHeader(); }
static constexpr const fidl_type_t* Type =
&fidl_test_requestflexibleenvelope_ProtocolRequestFlexibleResponseStrictResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 40;
static constexpr uint32_t MaxOutOfLine = 4294967295;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
class UnownedEncodedMessage final {
public:
UnownedEncodedMessage(
uint8_t* _bytes, uint32_t _byte_size,
::llcpp::fidl::test::requestflexibleenvelope::StrictFoo& f)
: message_(_bytes, _byte_size,
sizeof(RequestFlexibleResponseStrictResponse), nullptr, 0,
0) {
FIDL_ALIGNDECL RequestFlexibleResponseStrictResponse _response{f};
message_.LinearizeAndEncode<RequestFlexibleResponseStrictResponse>(
&_response);
}
UnownedEncodedMessage(uint8_t* bytes, uint32_t byte_size,
RequestFlexibleResponseStrictResponse* response)
: message_(bytes, byte_size,
sizeof(RequestFlexibleResponseStrictResponse), nullptr, 0,
0) {
message_.LinearizeAndEncode<RequestFlexibleResponseStrictResponse>(
response);
}
UnownedEncodedMessage(const UnownedEncodedMessage&) = delete;
UnownedEncodedMessage(UnownedEncodedMessage&&) = delete;
UnownedEncodedMessage* operator=(const UnownedEncodedMessage&) = delete;
UnownedEncodedMessage* operator=(UnownedEncodedMessage&&) = delete;
zx_status_t status() const { return message_.status(); }
#ifdef __Fuchsia__
const char* status_string() const { return message_.status_string(); }
#endif
bool ok() const { return message_.status() == ZX_OK; }
const char* error() const { return message_.error(); }
::fidl::OutgoingMessage& GetOutgoingMessage() { return message_; }
template <typename ChannelLike>
void Write(ChannelLike&& client) {
message_.Write(std::forward<ChannelLike>(client));
}
private:
RequestFlexibleResponseStrictResponse& Message() {
return *reinterpret_cast<RequestFlexibleResponseStrictResponse*>(
message_.bytes());
}
::fidl::OutgoingMessage message_;
};
class OwnedEncodedMessage final {
public:
explicit OwnedEncodedMessage(
::llcpp::fidl::test::requestflexibleenvelope::StrictFoo& f)
: bytes_(std::make_unique<::fidl::internal::AlignedBuffer<
ZX_CHANNEL_MAX_MSG_BYTES>>()),
message_(bytes_->data(), ZX_CHANNEL_MAX_MSG_BYTES, f) {}
explicit OwnedEncodedMessage(
RequestFlexibleResponseStrictResponse* response)
: bytes_(std::make_unique<::fidl::internal::AlignedBuffer<
ZX_CHANNEL_MAX_MSG_BYTES>>()),
message_(bytes_->data(), ZX_CHANNEL_MAX_MSG_BYTES, response) {}
OwnedEncodedMessage(const OwnedEncodedMessage&) = delete;
OwnedEncodedMessage(OwnedEncodedMessage&&) = delete;
OwnedEncodedMessage* operator=(const OwnedEncodedMessage&) = delete;
OwnedEncodedMessage* operator=(OwnedEncodedMessage&&) = delete;
zx_status_t status() const { return message_.status(); }
#ifdef __Fuchsia__
const char* status_string() const { return message_.status_string(); }
#endif
bool ok() const { return message_.ok(); }
const char* error() const { return message_.error(); }
::fidl::OutgoingMessage& GetOutgoingMessage() {
return message_.GetOutgoingMessage();
}
template <typename ChannelLike>
void Write(ChannelLike&& client) {
message_.Write(std::forward<ChannelLike>(client));
}
private:
std::unique_ptr<::fidl::internal::AlignedBuffer<ZX_CHANNEL_MAX_MSG_BYTES>>
bytes_;
UnownedEncodedMessage message_;
};
class DecodedMessage final : public ::fidl::internal::IncomingMessage {
public:
DecodedMessage(uint8_t* bytes, uint32_t byte_actual,
zx_handle_info_t* handles = nullptr,
uint32_t handle_actual = 0)
: ::fidl::internal::IncomingMessage(bytes, byte_actual, handles,
handle_actual) {
Decode<RequestFlexibleResponseStrictResponse>();
}
DecodedMessage(fidl_incoming_msg_t* msg)
: ::fidl::internal::IncomingMessage(msg) {
Decode<RequestFlexibleResponseStrictResponse>();
}
DecodedMessage(const DecodedMessage&) = delete;
DecodedMessage(DecodedMessage&&) = delete;
DecodedMessage* operator=(const DecodedMessage&) = delete;
DecodedMessage* operator=(DecodedMessage&&) = delete;
RequestFlexibleResponseStrictResponse* PrimaryObject() {
ZX_DEBUG_ASSERT(ok());
return reinterpret_cast<RequestFlexibleResponseStrictResponse*>(
bytes());
}
// Release the ownership of the decoded message. That means that the
// handles won't be closed When the object is destroyed. After calling
// this method, the DecodedMessage object should not be used anymore.
void ReleasePrimaryObject() { ResetBytes(); }
// These methods should only be used for testing purpose.
// They create an DecodedMessage using the bytes of an outgoing message
// and copying the handles.
static DecodedMessage FromOutgoingWithRawHandleCopy(
UnownedEncodedMessage* outgoing_message) {
return DecodedMessage(outgoing_message->GetOutgoingMessage());
}
static DecodedMessage FromOutgoingWithRawHandleCopy(
OwnedEncodedMessage* outgoing_message) {
return DecodedMessage(outgoing_message->GetOutgoingMessage());
}
private:
DecodedMessage(::fidl::OutgoingMessage& outgoing_message) {
Init(outgoing_message, nullptr, 0);
if (ok()) {
Decode<RequestFlexibleResponseStrictResponse>();
}
}
};
private:
void _InitHeader();
};
struct RequestFlexibleResponseStrictRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo s;
explicit RequestFlexibleResponseStrictRequest(
zx_txid_t _txid,
::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo& s)
: s(std::move(s)) {
_InitHeader(_txid);
}
explicit RequestFlexibleResponseStrictRequest(zx_txid_t _txid) {
_InitHeader(_txid);
}
static constexpr const fidl_type_t* Type =
&fidl_test_requestflexibleenvelope_ProtocolRequestFlexibleResponseStrictRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 40;
static constexpr uint32_t MaxOutOfLine = 4294967295;
static constexpr uint32_t AltPrimarySize = 40;
static constexpr uint32_t AltMaxOutOfLine = 4294967295;
static constexpr bool HasFlexibleEnvelope = true;
static constexpr bool HasPointer = true;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = RequestFlexibleResponseStrictResponse;
class UnownedEncodedMessage final {
public:
UnownedEncodedMessage(
uint8_t* _bytes, uint32_t _byte_size, zx_txid_t _txid,
::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo& s)
: message_(_bytes, _byte_size,
sizeof(RequestFlexibleResponseStrictRequest), nullptr, 0,
0) {
FIDL_ALIGNDECL RequestFlexibleResponseStrictRequest _request(_txid, s);
message_.LinearizeAndEncode<RequestFlexibleResponseStrictRequest>(
&_request);
}
UnownedEncodedMessage(uint8_t* bytes, uint32_t byte_size,
RequestFlexibleResponseStrictRequest* request)
: message_(bytes, byte_size,
sizeof(RequestFlexibleResponseStrictRequest), nullptr, 0,
0) {
message_.LinearizeAndEncode<RequestFlexibleResponseStrictRequest>(
request);
}
UnownedEncodedMessage(const UnownedEncodedMessage&) = delete;
UnownedEncodedMessage(UnownedEncodedMessage&&) = delete;
UnownedEncodedMessage* operator=(const UnownedEncodedMessage&) = delete;
UnownedEncodedMessage* operator=(UnownedEncodedMessage&&) = delete;
zx_status_t status() const { return message_.status(); }
#ifdef __Fuchsia__
const char* status_string() const { return message_.status_string(); }
#endif
bool ok() const { return message_.status() == ZX_OK; }
const char* error() const { return message_.error(); }
::fidl::OutgoingMessage& GetOutgoingMessage() { return message_; }
template <typename ChannelLike>
void Write(ChannelLike&& client) {
message_.Write(std::forward<ChannelLike>(client));
}
private:
RequestFlexibleResponseStrictRequest& Message() {
return *reinterpret_cast<RequestFlexibleResponseStrictRequest*>(
message_.bytes());
}
::fidl::OutgoingMessage message_;
};
class OwnedEncodedMessage final {
public:
explicit OwnedEncodedMessage(
zx_txid_t _txid,
::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo& s)
: bytes_(std::make_unique<::fidl::internal::AlignedBuffer<
ZX_CHANNEL_MAX_MSG_BYTES>>()),
message_(bytes_->data(), ZX_CHANNEL_MAX_MSG_BYTES, _txid, s) {}
explicit OwnedEncodedMessage(
RequestFlexibleResponseStrictRequest* request)
: bytes_(std::make_unique<::fidl::internal::AlignedBuffer<
ZX_CHANNEL_MAX_MSG_BYTES>>()),
message_(bytes_->data(), ZX_CHANNEL_MAX_MSG_BYTES, request) {}
OwnedEncodedMessage(const OwnedEncodedMessage&) = delete;
OwnedEncodedMessage(OwnedEncodedMessage&&) = delete;
OwnedEncodedMessage* operator=(const OwnedEncodedMessage&) = delete;
OwnedEncodedMessage* operator=(OwnedEncodedMessage&&) = delete;
zx_status_t status() const { return message_.status(); }
#ifdef __Fuchsia__
const char* status_string() const { return message_.status_string(); }
#endif
bool ok() const { return message_.ok(); }
const char* error() const { return message_.error(); }
::fidl::OutgoingMessage& GetOutgoingMessage() {
return message_.GetOutgoingMessage();
}
template <typename ChannelLike>
void Write(ChannelLike&& client) {
message_.Write(std::forward<ChannelLike>(client));
}
private:
std::unique_ptr<::fidl::internal::AlignedBuffer<ZX_CHANNEL_MAX_MSG_BYTES>>
bytes_;
UnownedEncodedMessage message_;
};
class DecodedMessage final : public ::fidl::internal::IncomingMessage {
public:
DecodedMessage(uint8_t* bytes, uint32_t byte_actual,
zx_handle_info_t* handles = nullptr,
uint32_t handle_actual = 0)
: ::fidl::internal::IncomingMessage(bytes, byte_actual, handles,
handle_actual) {
Decode<RequestFlexibleResponseStrictRequest>();
}
DecodedMessage(fidl_incoming_msg_t* msg)
: ::fidl::internal::IncomingMessage(msg) {
Decode<RequestFlexibleResponseStrictRequest>();
}
DecodedMessage(const DecodedMessage&) = delete;
DecodedMessage(DecodedMessage&&) = delete;
DecodedMessage* operator=(const DecodedMessage&) = delete;
DecodedMessage* operator=(DecodedMessage&&) = delete;
RequestFlexibleResponseStrictRequest* PrimaryObject() {
ZX_DEBUG_ASSERT(ok());
return reinterpret_cast<RequestFlexibleResponseStrictRequest*>(bytes());
}
// Release the ownership of the decoded message. That means that the
// handles won't be closed When the object is destroyed. After calling
// this method, the DecodedMessage object should not be used anymore.
void ReleasePrimaryObject() { ResetBytes(); }
// These methods should only be used for testing purpose.
// They create an DecodedMessage using the bytes of an outgoing message
// and copying the handles.
static DecodedMessage FromOutgoingWithRawHandleCopy(
UnownedEncodedMessage* encoded_message) {
return DecodedMessage(encoded_message->GetOutgoingMessage());
}
static DecodedMessage FromOutgoingWithRawHandleCopy(
OwnedEncodedMessage* encoded_message) {
return DecodedMessage(encoded_message->GetOutgoingMessage());
}
private:
DecodedMessage(::fidl::OutgoingMessage& outgoing_message) {
Init(outgoing_message, nullptr, 0);
if (ok()) {
Decode<RequestFlexibleResponseStrictRequest>();
}
}
};
private:
void _InitHeader(zx_txid_t _txid);
};
class EventHandlerInterface {
public:
EventHandlerInterface() = default;
virtual ~EventHandlerInterface() = default;
};
// Collection of return types of FIDL calls in this protocol.
class ResultOf final {
ResultOf() = delete;
public:
class RequestStrictResponseFlexible final : public ::fidl::Result {
public:
explicit RequestStrictResponseFlexible(
::fidl::UnownedClientEnd<
::llcpp::fidl::test::requestflexibleenvelope::Protocol>
_client,
::llcpp::fidl::test::requestflexibleenvelope::StrictFoo& s);
RequestStrictResponseFlexible(
::fidl::UnownedClientEnd<
::llcpp::fidl::test::requestflexibleenvelope::Protocol>
_client,
::llcpp::fidl::test::requestflexibleenvelope::StrictFoo& s,
zx_time_t _deadline);
explicit RequestStrictResponseFlexible(const ::fidl::Result& result)
: ::fidl::Result(result) {}
RequestStrictResponseFlexible(RequestStrictResponseFlexible&&) = delete;
RequestStrictResponseFlexible(const RequestStrictResponseFlexible&) =
delete;
RequestStrictResponseFlexible* operator=(
RequestStrictResponseFlexible&&) = delete;
RequestStrictResponseFlexible* operator=(
const RequestStrictResponseFlexible&) = delete;
~RequestStrictResponseFlexible() = default;
RequestStrictResponseFlexibleResponse* Unwrap() {
ZX_DEBUG_ASSERT(ok());
return reinterpret_cast<RequestStrictResponseFlexibleResponse*>(
bytes_->data());
}
const RequestStrictResponseFlexibleResponse* Unwrap() const {
ZX_DEBUG_ASSERT(ok());
return reinterpret_cast<const RequestStrictResponseFlexibleResponse*>(
bytes_->data());
}
RequestStrictResponseFlexibleResponse& value() { return *Unwrap(); }
const RequestStrictResponseFlexibleResponse& value() const {
return *Unwrap();
}
RequestStrictResponseFlexibleResponse* operator->() { return &value(); }
const RequestStrictResponseFlexibleResponse* operator->() const {
return &value();
}
RequestStrictResponseFlexibleResponse& operator*() { return value(); }
const RequestStrictResponseFlexibleResponse& operator*() const {
return value();
}
private:
std::unique_ptr<::fidl::internal::AlignedBuffer<ZX_CHANNEL_MAX_MSG_BYTES>>
bytes_;
};
class RequestFlexibleResponseStrict final : public ::fidl::Result {
public:
explicit RequestFlexibleResponseStrict(
::fidl::UnownedClientEnd<
::llcpp::fidl::test::requestflexibleenvelope::Protocol>
_client,
::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo& s);
RequestFlexibleResponseStrict(
::fidl::UnownedClientEnd<
::llcpp::fidl::test::requestflexibleenvelope::Protocol>
_client,
::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo& s,
zx_time_t _deadline);
explicit RequestFlexibleResponseStrict(const ::fidl::Result& result)
: ::fidl::Result(result) {}
RequestFlexibleResponseStrict(RequestFlexibleResponseStrict&&) = delete;
RequestFlexibleResponseStrict(const RequestFlexibleResponseStrict&) =
delete;
RequestFlexibleResponseStrict* operator=(
RequestFlexibleResponseStrict&&) = delete;
RequestFlexibleResponseStrict* operator=(
const RequestFlexibleResponseStrict&) = delete;
~RequestFlexibleResponseStrict() = default;
RequestFlexibleResponseStrictResponse* Unwrap() {
ZX_DEBUG_ASSERT(ok());
return reinterpret_cast<RequestFlexibleResponseStrictResponse*>(
bytes_->data());
}
const RequestFlexibleResponseStrictResponse* Unwrap() const {
ZX_DEBUG_ASSERT(ok());
return reinterpret_cast<const RequestFlexibleResponseStrictResponse*>(
bytes_->data());
}
RequestFlexibleResponseStrictResponse& value() { return *Unwrap(); }
const RequestFlexibleResponseStrictResponse& value() const {
return *Unwrap();
}
RequestFlexibleResponseStrictResponse* operator->() { return &value(); }
const RequestFlexibleResponseStrictResponse* operator->() const {
return &value();
}
RequestFlexibleResponseStrictResponse& operator*() { return value(); }
const RequestFlexibleResponseStrictResponse& operator*() const {
return value();
}
private:
std::unique_ptr<::fidl::internal::AlignedBuffer<ZX_CHANNEL_MAX_MSG_BYTES>>
bytes_;
};
};
// Collection of return types of FIDL calls in this protocol,
// when the caller-allocate flavor or in-place call is used.
class UnownedResultOf final {
UnownedResultOf() = delete;
public:
class RequestStrictResponseFlexible final : public ::fidl::Result {
public:
explicit RequestStrictResponseFlexible(
::fidl::UnownedClientEnd<
::llcpp::fidl::test::requestflexibleenvelope::Protocol>
_client,
uint8_t* _request_bytes, uint32_t _request_byte_capacity,
::llcpp::fidl::test::requestflexibleenvelope::StrictFoo& s,
uint8_t* _response_bytes, uint32_t _response_byte_capacity);
explicit RequestStrictResponseFlexible(const ::fidl::Result& result)
: ::fidl::Result(result) {}
RequestStrictResponseFlexible(RequestStrictResponseFlexible&&) = delete;
RequestStrictResponseFlexible(const RequestStrictResponseFlexible&) =
delete;
RequestStrictResponseFlexible* operator=(
RequestStrictResponseFlexible&&) = delete;
RequestStrictResponseFlexible* operator=(
const RequestStrictResponseFlexible&) = delete;
~RequestStrictResponseFlexible() = default;
RequestStrictResponseFlexibleResponse* Unwrap() {
ZX_DEBUG_ASSERT(ok());
return reinterpret_cast<RequestStrictResponseFlexibleResponse*>(bytes_);
}
const RequestStrictResponseFlexibleResponse* Unwrap() const {
ZX_DEBUG_ASSERT(ok());
return reinterpret_cast<const RequestStrictResponseFlexibleResponse*>(
bytes_);
}
RequestStrictResponseFlexibleResponse& value() { return *Unwrap(); }
const RequestStrictResponseFlexibleResponse& value() const {
return *Unwrap();
}
RequestStrictResponseFlexibleResponse* operator->() { return &value(); }
const RequestStrictResponseFlexibleResponse* operator->() const {
return &value();
}
RequestStrictResponseFlexibleResponse& operator*() { return value(); }
const RequestStrictResponseFlexibleResponse& operator*() const {
return value();
}
private:
uint8_t* bytes_;
};
class RequestFlexibleResponseStrict final : public ::fidl::Result {
public:
explicit RequestFlexibleResponseStrict(
::fidl::UnownedClientEnd<
::llcpp::fidl::test::requestflexibleenvelope::Protocol>
_client,
uint8_t* _request_bytes, uint32_t _request_byte_capacity,
::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo& s,
uint8_t* _response_bytes, uint32_t _response_byte_capacity);
explicit RequestFlexibleResponseStrict(const ::fidl::Result& result)
: ::fidl::Result(result) {}
RequestFlexibleResponseStrict(RequestFlexibleResponseStrict&&) = delete;
RequestFlexibleResponseStrict(const RequestFlexibleResponseStrict&) =
delete;
RequestFlexibleResponseStrict* operator=(
RequestFlexibleResponseStrict&&) = delete;
RequestFlexibleResponseStrict* operator=(
const RequestFlexibleResponseStrict&) = delete;
~RequestFlexibleResponseStrict() = default;
RequestFlexibleResponseStrictResponse* Unwrap() {
ZX_DEBUG_ASSERT(ok());
return reinterpret_cast<RequestFlexibleResponseStrictResponse*>(bytes_);
}
const RequestFlexibleResponseStrictResponse* Unwrap() const {
ZX_DEBUG_ASSERT(ok());
return reinterpret_cast<const RequestFlexibleResponseStrictResponse*>(
bytes_);
}
RequestFlexibleResponseStrictResponse& value() { return *Unwrap(); }
const RequestFlexibleResponseStrictResponse& value() const {
return *Unwrap();
}
RequestFlexibleResponseStrictResponse* operator->() { return &value(); }
const RequestFlexibleResponseStrictResponse* operator->() const {
return &value();
}
RequestFlexibleResponseStrictResponse& operator*() { return value(); }
const RequestFlexibleResponseStrictResponse& operator*() const {
return value();
}
private:
uint8_t* bytes_;
};
};
// Methods to make a sync FIDL call directly on an unowned channel or a
// const reference to a
// |fidl::ClientEnd<::llcpp::fidl::test::requestflexibleenvelope::Protocol>|,
// avoiding setting up a client.
class Call final {
Call() = delete;
public:
// Request is heap-allocated. Response is heap-allocated.
static ResultOf::RequestStrictResponseFlexible
RequestStrictResponseFlexible(
::fidl::UnownedClientEnd<Protocol> _client_end,
::llcpp::fidl::test::requestflexibleenvelope::StrictFoo s) {
return ResultOf::RequestStrictResponseFlexible(_client_end, s);
}
// Caller provides the backing storage for FIDL message via request and
// response buffers.
static UnownedResultOf::RequestStrictResponseFlexible
RequestStrictResponseFlexible(
::fidl::UnownedClientEnd<Protocol> _client_end,
::fidl::BufferSpan _request_buffer,
::llcpp::fidl::test::requestflexibleenvelope::StrictFoo s,
::fidl::BufferSpan _response_buffer) {
return UnownedResultOf::RequestStrictResponseFlexible(
_client_end, _request_buffer.data, _request_buffer.capacity, s,
_response_buffer.data, _response_buffer.capacity);
}
// Request is heap-allocated. Response is heap-allocated.
static ResultOf::RequestFlexibleResponseStrict
RequestFlexibleResponseStrict(
::fidl::UnownedClientEnd<Protocol> _client_end,
::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo s) {
return ResultOf::RequestFlexibleResponseStrict(_client_end, s);
}
// Caller provides the backing storage for FIDL message via request and
// response buffers.
static UnownedResultOf::RequestFlexibleResponseStrict
RequestFlexibleResponseStrict(
::fidl::UnownedClientEnd<Protocol> _client_end,
::fidl::BufferSpan _request_buffer,
::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo s,
::fidl::BufferSpan _response_buffer) {
return UnownedResultOf::RequestFlexibleResponseStrict(
_client_end, _request_buffer.data, _request_buffer.capacity, s,
_response_buffer.data, _response_buffer.capacity);
}
};
class SyncClient final {
public:
SyncClient() = default;
explicit SyncClient(::fidl::ClientEnd<Protocol> client_end)
: client_end_(std::move(client_end)) {}
~SyncClient() = default;
SyncClient(SyncClient&&) = default;
SyncClient& operator=(SyncClient&&) = default;
const ::fidl::ClientEnd<Protocol>& client_end() const {
return client_end_;
}
::fidl::ClientEnd<Protocol>& client_end() { return client_end_; }
const ::zx::channel& channel() const { return client_end_.channel(); }
::zx::channel* mutable_channel() { return &client_end_.channel(); }
// Request is heap-allocated. Response is heap-allocated.
ResultOf::RequestStrictResponseFlexible RequestStrictResponseFlexible(
::llcpp::fidl::test::requestflexibleenvelope::StrictFoo s) {
return ResultOf::RequestStrictResponseFlexible(this->client_end(), s);
}
// Caller provides the backing storage for FIDL message via request and
// response buffers.
UnownedResultOf::RequestStrictResponseFlexible
RequestStrictResponseFlexible(
::fidl::BufferSpan _request_buffer,
::llcpp::fidl::test::requestflexibleenvelope::StrictFoo s,
::fidl::BufferSpan _response_buffer) {
return UnownedResultOf::RequestStrictResponseFlexible(
this->client_end(), _request_buffer.data, _request_buffer.capacity, s,
_response_buffer.data, _response_buffer.capacity);
}
// Request is heap-allocated. Response is heap-allocated.
ResultOf::RequestFlexibleResponseStrict RequestFlexibleResponseStrict(
::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo s) {
return ResultOf::RequestFlexibleResponseStrict(this->client_end(), s);
}
// Caller provides the backing storage for FIDL message via request and
// response buffers.
UnownedResultOf::RequestFlexibleResponseStrict
RequestFlexibleResponseStrict(
::fidl::BufferSpan _request_buffer,
::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo s,
::fidl::BufferSpan _response_buffer) {
return UnownedResultOf::RequestFlexibleResponseStrict(
this->client_end(), _request_buffer.data, _request_buffer.capacity, s,
_response_buffer.data, _response_buffer.capacity);
}
private:
::fidl::ClientEnd<Protocol> client_end_;
};
class AsyncEventHandler;
class RequestStrictResponseFlexibleResponseContext;
class RequestFlexibleResponseStrictResponseContext;
class ClientImpl;
// Pure-virtual interface to be implemented by a server.
// This interface uses typed channels (i.e. |fidl::ClientEnd<SomeProtocol>|
// and |fidl::ServerEnd<SomeProtocol>|).
// TODO(fxbug.dev/65212): Rename this to |Interface| after all users have
// migrated to the typed channels API.
class TypedChannelInterface
: public ::fidl::internal::IncomingMessageDispatcher {
public:
TypedChannelInterface() = default;
virtual ~TypedChannelInterface() = default;
// The marker protocol type within which this |TypedChannelInterface| class
// is defined.
using _EnclosingProtocol = Protocol;
class RequestStrictResponseFlexibleCompleterBase
: public ::fidl::CompleterBase {
public:
// In the following methods, the return value indicates internal errors
// during the reply, such as encoding or writing to the transport. Note
// that any error will automatically lead to the destruction of the
// binding, after which the |on_unbound| callback will be triggered with a
// detailed reason.
//
// See //zircon/system/ulib/fidl/include/lib/fidl/llcpp/server.h.
//
// Because the reply status is identical to the unbinding status, it can
// be safely ignored.
::fidl::Result Reply(
::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo f);
::fidl::Result Reply(
::fidl::BufferSpan _buffer,
::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo f);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using RequestStrictResponseFlexibleCompleter =
::fidl::Completer<RequestStrictResponseFlexibleCompleterBase>;
virtual void RequestStrictResponseFlexible(
::llcpp::fidl::test::requestflexibleenvelope::StrictFoo s,
RequestStrictResponseFlexibleCompleter::Sync& _completer) = 0;
class RequestFlexibleResponseStrictCompleterBase
: public ::fidl::CompleterBase {
public:
// In the following methods, the return value indicates internal errors
// during the reply, such as encoding or writing to the transport. Note
// that any error will automatically lead to the destruction of the
// binding, after which the |on_unbound| callback will be triggered with a
// detailed reason.
//
// See //zircon/system/ulib/fidl/include/lib/fidl/llcpp/server.h.
//
// Because the reply status is identical to the unbinding status, it can
// be safely ignored.
::fidl::Result Reply(
::llcpp::fidl::test::requestflexibleenvelope::StrictFoo f);
::fidl::Result Reply(
::fidl::BufferSpan _buffer,
::llcpp::fidl::test::requestflexibleenvelope::StrictFoo f);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using RequestFlexibleResponseStrictCompleter =
::fidl::Completer<RequestFlexibleResponseStrictCompleterBase>;
virtual void RequestFlexibleResponseStrict(
::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo s,
RequestFlexibleResponseStrictCompleter::Sync& _completer) = 0;
private:
::fidl::DispatchResult dispatch_message(fidl_incoming_msg_t* msg,
::fidl::Transaction* txn) final;
};
// Pure-virtual interface to be implemented by a server.
class Interface : public TypedChannelInterface {
public:
Interface() = default;
virtual ~Interface() = default;
// The marker protocol type within which this |Interface| class is defined.
using TypedChannelInterface::_EnclosingProtocol;
using TypedChannelInterface::RequestStrictResponseFlexibleCompleter;
using TypedChannelInterface::RequestFlexibleResponseStrictCompleter;
};
// 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 ::fidl::DispatchResult TryDispatch(TypedChannelInterface* impl,
fidl_incoming_msg_t* msg,
::fidl::Transaction* txn);
// Dispatches the incoming message to one of the handlers functions in the
// protocol. 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 ::fidl::DispatchResult Dispatch(TypedChannelInterface* impl,
fidl_incoming_msg_t* msg,
::fidl::Transaction* txn);
// Same as |Dispatch|, but takes a |void*| instead of
// |TypedChannelInterface*|. Only used with |fidl::BindServer| to reduce
// template expansion. Do not call this method manually. Use |Dispatch|
// instead.
static ::fidl::DispatchResult TypeErasedDispatch(void* impl,
fidl_incoming_msg_t* msg,
::fidl::Transaction* txn) {
return Dispatch(static_cast<TypedChannelInterface*>(impl), msg, txn);
}
class EventSender;
class WeakEventSender;
};
} // namespace requestflexibleenvelope
} // namespace test
} // namespace fidl
} // namespace llcpp
namespace fidl {
template <>
struct IsFidlType<::llcpp::fidl::test::requestflexibleenvelope::StrictFoo>
: public std::true_type {};
template <>
struct IsUnion<::llcpp::fidl::test::requestflexibleenvelope::StrictFoo>
: public std::true_type {};
static_assert(std::is_standard_layout_v<
::llcpp::fidl::test::requestflexibleenvelope::StrictFoo>);
template <>
struct IsFidlType<::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo>
: public std::true_type {};
template <>
struct IsUnion<::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo>
: public std::true_type {};
static_assert(std::is_standard_layout_v<
::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo>);
template <>
struct IsFidlType<::llcpp::fidl::test::requestflexibleenvelope::Protocol::
RequestStrictResponseFlexibleRequest>
: public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fidl::test::requestflexibleenvelope::Protocol::
RequestStrictResponseFlexibleRequest>
: public std::true_type {};
static_assert(sizeof(::llcpp::fidl::test::requestflexibleenvelope::Protocol::
RequestStrictResponseFlexibleRequest) ==
::llcpp::fidl::test::requestflexibleenvelope::Protocol::
RequestStrictResponseFlexibleRequest::PrimarySize);
static_assert(offsetof(::llcpp::fidl::test::requestflexibleenvelope::Protocol::
RequestStrictResponseFlexibleRequest,
s) == 16);
template <>
struct IsFidlType<::llcpp::fidl::test::requestflexibleenvelope::Protocol::
RequestStrictResponseFlexibleResponse>
: public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fidl::test::requestflexibleenvelope::Protocol::
RequestStrictResponseFlexibleResponse>
: public std::true_type {};
static_assert(sizeof(::llcpp::fidl::test::requestflexibleenvelope::Protocol::
RequestStrictResponseFlexibleResponse) ==
::llcpp::fidl::test::requestflexibleenvelope::Protocol::
RequestStrictResponseFlexibleResponse::PrimarySize);
static_assert(offsetof(::llcpp::fidl::test::requestflexibleenvelope::Protocol::
RequestStrictResponseFlexibleResponse,
f) == 16);
template <>
struct IsFidlType<::llcpp::fidl::test::requestflexibleenvelope::Protocol::
RequestFlexibleResponseStrictRequest>
: public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fidl::test::requestflexibleenvelope::Protocol::
RequestFlexibleResponseStrictRequest>
: public std::true_type {};
static_assert(sizeof(::llcpp::fidl::test::requestflexibleenvelope::Protocol::
RequestFlexibleResponseStrictRequest) ==
::llcpp::fidl::test::requestflexibleenvelope::Protocol::
RequestFlexibleResponseStrictRequest::PrimarySize);
static_assert(offsetof(::llcpp::fidl::test::requestflexibleenvelope::Protocol::
RequestFlexibleResponseStrictRequest,
s) == 16);
template <>
struct IsFidlType<::llcpp::fidl::test::requestflexibleenvelope::Protocol::
RequestFlexibleResponseStrictResponse>
: public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fidl::test::requestflexibleenvelope::Protocol::
RequestFlexibleResponseStrictResponse>
: public std::true_type {};
static_assert(sizeof(::llcpp::fidl::test::requestflexibleenvelope::Protocol::
RequestFlexibleResponseStrictResponse) ==
::llcpp::fidl::test::requestflexibleenvelope::Protocol::
RequestFlexibleResponseStrictResponse::PrimarySize);
static_assert(offsetof(::llcpp::fidl::test::requestflexibleenvelope::Protocol::
RequestFlexibleResponseStrictResponse,
f) == 16);
} // namespace fidl
namespace llcpp {
namespace fidl {
namespace test {
namespace requestflexibleenvelope {
class Protocol::AsyncEventHandler : public Protocol::EventHandlerInterface {
public:
AsyncEventHandler() = default;
virtual void Unbound(::fidl::UnbindInfo info) {}
};
class Protocol::RequestStrictResponseFlexibleResponseContext
: public ::fidl::internal::ResponseContext {
public:
RequestStrictResponseFlexibleResponseContext();
virtual void OnReply(
Protocol::RequestStrictResponseFlexibleResponse* message) = 0;
private:
void OnReply(uint8_t* reply) override;
};
class Protocol::RequestFlexibleResponseStrictResponseContext
: public ::fidl::internal::ResponseContext {
public:
RequestFlexibleResponseStrictResponseContext();
virtual void OnReply(
Protocol::RequestFlexibleResponseStrictResponse* message) = 0;
private:
void OnReply(uint8_t* reply) override;
};
class Protocol::ClientImpl final : private ::fidl::internal::ClientBase {
public:
// Asynchronous variant of |Protocol.RequestStrictResponseFlexible()|.
// The request and callback are allocated on the heap.
::fidl::Result RequestStrictResponseFlexible(
::llcpp::fidl::test::requestflexibleenvelope::StrictFoo s,
::fit::callback<void(RequestStrictResponseFlexibleResponse* response)>
_cb);
// Asynchronous variant of |Protocol.RequestStrictResponseFlexible()|.
// Caller provides the backing storage for FIDL message via request buffer.
// Ownership of |_context| is given unsafely to the binding until |OnError|
// or |OnReply| are called on it.
::fidl::Result RequestStrictResponseFlexible(
::fidl::BufferSpan _request_buffer,
::llcpp::fidl::test::requestflexibleenvelope::StrictFoo s,
RequestStrictResponseFlexibleResponseContext* _context);
// Synchronous variant of |Protocol.RequestStrictResponseFlexible()|.
// Request is heap-allocated. Response is heap-allocated.
ResultOf::RequestStrictResponseFlexible RequestStrictResponseFlexible_Sync(
::llcpp::fidl::test::requestflexibleenvelope::StrictFoo s);
// Synchronous variant of |Protocol.RequestStrictResponseFlexible()|.
// Caller provides the backing storage for FIDL message via request and
// response buffers.
UnownedResultOf::RequestStrictResponseFlexible
RequestStrictResponseFlexible_Sync(
::fidl::BufferSpan _request_buffer,
::llcpp::fidl::test::requestflexibleenvelope::StrictFoo s,
::fidl::BufferSpan _response_buffer);
// Asynchronous variant of |Protocol.RequestFlexibleResponseStrict()|.
// The request and callback are allocated on the heap.
::fidl::Result RequestFlexibleResponseStrict(
::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo s,
::fit::callback<void(RequestFlexibleResponseStrictResponse* response)>
_cb);
// Asynchronous variant of |Protocol.RequestFlexibleResponseStrict()|.
// Caller provides the backing storage for FIDL message via request buffer.
// Ownership of |_context| is given unsafely to the binding until |OnError|
// or |OnReply| are called on it.
::fidl::Result RequestFlexibleResponseStrict(
::fidl::BufferSpan _request_buffer,
::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo s,
RequestFlexibleResponseStrictResponseContext* _context);
// Synchronous variant of |Protocol.RequestFlexibleResponseStrict()|.
// Request is heap-allocated. Response is heap-allocated.
ResultOf::RequestFlexibleResponseStrict RequestFlexibleResponseStrict_Sync(
::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo s);
// Synchronous variant of |Protocol.RequestFlexibleResponseStrict()|.
// Caller provides the backing storage for FIDL message via request and
// response buffers.
UnownedResultOf::RequestFlexibleResponseStrict
RequestFlexibleResponseStrict_Sync(
::fidl::BufferSpan _request_buffer,
::llcpp::fidl::test::requestflexibleenvelope::FlexibleFoo s,
::fidl::BufferSpan _response_buffer);
AsyncEventHandler* event_handler() const { return event_handler_.get(); }
private:
friend class ::fidl::Client<Protocol>;
explicit ClientImpl(std::shared_ptr<AsyncEventHandler> event_handler)
: event_handler_(std::move(event_handler)) {}
std::optional<::fidl::UnbindInfo> DispatchEvent(
fidl_incoming_msg_t* msg) override;
std::shared_ptr<AsyncEventHandler> event_handler_;
};
// |EventSender| owns a server endpoint of a channel speaking
// the Protocol protocol, and can send events in that protocol.
class Protocol::EventSender {
public:
// Constructs an event sender with an invalid channel.
EventSender() = default;
explicit EventSender(
::fidl::ServerEnd<::llcpp::fidl::test::requestflexibleenvelope::Protocol>
server_end)
: server_end_(std::move(server_end)) {}
// The underlying server channel endpoint, which may be replaced at run-time.
const ::fidl::ServerEnd<Protocol>& server_end() const { return server_end_; }
::fidl::ServerEnd<Protocol>& server_end() { return server_end_; }
const ::zx::channel& channel() const { return server_end_.channel(); }
::zx::channel& channel() { return server_end_.channel(); }
// Whether the underlying channel is valid.
bool is_valid() const { return server_end_.is_valid(); }
private:
::fidl::ServerEnd<Protocol> server_end_;
};
class Protocol::WeakEventSender {
public:
private:
friend class ::fidl::ServerBindingRef<Protocol>;
explicit WeakEventSender(
std::weak_ptr<::fidl::internal::AsyncServerBinding<Protocol>> binding)
: binding_(std::move(binding)) {}
std::weak_ptr<::fidl::internal::AsyncServerBinding<Protocol>> binding_;
};
} // namespace requestflexibleenvelope
} // namespace test
} // namespace fidl
} // namespace llcpp