blob: 7f8a2ed86c0fbe68be74c295d7a30c358e0cd979 [file] [log] [blame]
{{/*
// Copyright 2021 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
*/}}
{{- define "Method:Request:WireMessagingHeader" }}
{{- EnsureNamespace "" }}
{{- IfdefFuchsia -}}
template<>
struct {{ .WireTransactionalRequest }} final {
FIDL_ALIGNDECL
fidl_message_header_t header;
{{ if .RequestArgs }}
{{ .RequestPayload }} body;
explicit {{ .WireTransactionalRequest.Self }}({{ RenderParams .RequestArgs }})
: body({{ .RequestPayload }} { {{ RenderForwardParams .RequestArgs }} } ) {
_InitHeader();
}
{{- end }}
{{ .WireTransactionalRequest.Self }}() {
_InitHeader();
}
{{- if and .HasResponse .ResponseArgs }}
using ResponseType = {{ .WireTransactionalResponse }};
{{- end }}
{{- if .Request.IsResource }}
void _CloseHandles() {
{{- if .RequestArgs }}
body._CloseHandles();
{{- end }}
}
{{- end }}
private:
void _InitHeader();
};
template <bool IsRecursive>
struct ::fidl::internal::WireCodingTraits<{{ .WireTransactionalRequest }}, ::fidl::internal::WireCodingConstraintEmpty, IsRecursive>
: public WireStructCodingTraitsBase<{{ .WireTransactionalRequest }}, ::fidl::internal::WireCodingConstraintEmpty, IsRecursive> {
static constexpr size_t kInlineSize = {{ .Request.TypeShapeV2.InlineSize }} + sizeof(fidl_message_header_t);
static void Encode(internal::WireEncoder* encoder, {{ .WireTransactionalRequest }}* value, ::fidl::internal::WirePosition position, RecursionDepth<IsRecursive> recursion_depth) {
*position.As<fidl_message_header_t>() = value->header;
{{- if .HasRequestPayload }}
WireCodingTraits<{{ .RequestPayload }}, WireCodingConstraintEmpty, IsRecursive>::Encode(
encoder, &value->body, position + sizeof(fidl_message_header_t), recursion_depth);
{{- end }}
}
static void Decode(
internal::WireDecoder* decoder, ::fidl::internal::WirePosition position, RecursionDepth<IsRecursive> recursion_depth) {
{{- if .HasRequestPayload }}
WireCodingTraits<{{ .RequestPayload }}, WireCodingConstraintEmpty, IsRecursive>::Decode(
decoder, position + sizeof(fidl_message_header_t), recursion_depth);
{{- end }}
}
};
{{- EndifFuchsia -}}
{{- end }}
{{- define "Method:Request:WireMessagingSource" }}
{{- EnsureNamespace "" }}
{{- IfdefFuchsia -}}
void {{ .WireTransactionalRequest }}::_InitHeader() {
::fidl::InitTxnHeader(&header, 0, {{ .OrdinalName }}, {{ .DynamicFlagsName }});
}
{{- EndifFuchsia -}}
{{- end }}
{{- define "Method:Request:NaturalMessagingHeader" }}
{{- end }}
{{- define "Method:Request:NaturalMessagingSource" }}
{{- end }}
{{- define "Method:Request:Traits:TypeConversionsHeader" }}
{{- end }}
{{- define "Method:Request:Traits:TypeConversionsSource" }}
{{- end }}