{{/*
// 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 "Filename:MessagingHeader" -}}
fidl/{{ .LibraryDots }}/cpp/wire_messaging.h
{{- end }}


{{- define "File:MessagingHeader" -}}
  {{- UseWire -}}
  // WARNING: This file is machine generated by fidlgen.

  #pragma once

  #include <{{ .Library | Filename "Markers" }}>
  #include <{{ .Library | Filename "TypesHeader" }}>

  #include <lib/fidl/llcpp/wire_messaging.h>

  {{ IfdefFuchsia }}
    #include <lib/fidl/llcpp/client.h>
    #include <lib/fidl/llcpp/connect_service.h>
    #include <lib/fidl/llcpp/server.h>
    #include <lib/fidl/llcpp/service_handler_interface.h>
    #include <lib/fidl/llcpp/sync_call.h>
  {{ EndifFuchsia }}

  {{ range .Dependencies -}}
    #include <{{ . | Filename "MessagingHeader" }}>
  {{ end -}}


  {{- range (call .ProtocolsForTransport "Channel") }}
    {{ template "Protocol:ForwardDeclaration:MessagingHeader" . }}
  {{- end }}
  {{- range .Services }}
    {{ template "Service:ForwardDeclaration:MessagingHeader" . }}
  {{- end }}

  {{- range (call .ProtocolsForTransport "Channel") }}
    {{ template "Protocol:MessagingHeader" . }}
  {{- end }}
  {{- range .Services }}
    {{ template "Service:MessagingHeader" . }}
  {{- end }}

  {{ EnsureNamespace "fidl" }}

  {{- range (call .ProtocolsForTransport "Channel") }}
    {{ template "Protocol:Traits:MessagingHeader" . }}
  {{- end }}

  {{- range (call .ProtocolsForTransport "Channel") }}
    {{- range .TwoWayMethods }}
      {{ template "Method:ResponseContext:MessagingHeader" . }}
    {{- end }}

    {{ template "Protocol:ClientImpl:MessagingHeader" . }}

    {{ template "Protocol:EventSender:MessagingHeader" . }}

    {{- end }}

  {{ EndOfFile }}
{{ end }}


