{{/*
// 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:ClientImplAsyncBuffer:WireMessagingHeader" }}
{{ .Docs }}
{{- if .DocComments }}
//
{{- end }}
// Caller provides the backing storage for FIDL message.
{{ .WireBufferThenable }} {{ .Name }}({{ RenderParams .RequestArgs }});
{{ end }}



{{- define "Method:ClientImplAsyncBuffer:WireMessagingSource" }}
{{ .WireBufferThenable }} {{ .Protocol.WireWeakAsyncBufferClientImpl.NoLeading }}::{{ .Name }}(
    {{- RenderParams .RequestArgs }}) {
  constexpr uint32_t _buffer_size = ::fidl::AsyncClientMethodBufferSizeInChannel<{{ .Marker }}>();
  {{ .WireTransactionalRequest }} _request{ {{ RenderForwardParams .RequestArgs }} };
  return {{ .WireBufferThenable }}{
      _client_base(), ::fidl::WriteOptions{}, _allocator(), _buffer_size, &_request};
}
{{- end }}
