{{/*
// Copyright 2020 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:WireWeakSyncClientImpl:WireMessagingHeader" }}
  {{- .Docs }}
  {{ if .DocComments }}
    //
  {{- end }}
  // {{- template "Method:ClientAllocationComment:Helper" . }}
  {{ .WireResult }} {{ .Name }}({{ RenderParams .RequestArgs }});
{{- end }}



{{- define "Method:WireWeakSyncClientImpl:WireMessagingSource" }}
  {{ EnsureNamespace "" }}

  {{ .WireResult }}
  {{ .Protocol.WireWeakSyncClientImpl.NoLeading }}::{{ .Name }}({{ RenderParams .RequestArgs }}) {
    return _client_base()->MakeSyncCallWith(
        [&] (std::shared_ptr<::fidl::internal::AnyTransport> _transport) {
          {{ .WireTransactionalRequest }} _request{ {{ RenderForwardParams .RequestArgs }} };
          {{- $transport := (printf
              "::%s::UnownedClientEnd<%s>(_transport->get<%s>())"
              .Transport.Namespace .Protocol .Transport.Type) }}
          return {{ .WireResult }}({{- RenderForwardParams (List $transport "&_request") }});
        });
  }

{{- end }}
