blob: b40b59c59e73f8f9937db4003a4a5b924eaf0c61 [file] [log] [blame]
// Copyright 2018 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.
package templates
const Interface = `
{{- define "InterfaceDefinition" -}}
{{- range .Methods }}
{{- if .Request }}
{{ template "StructDefinition" .Request }}
{{- end }}
{{- if .RequestHandles }}
{{ template "StructDefinition" .RequestHandles }}
{{- end }}
{{- if .Response }}
{{ template "StructDefinition" .Response }}
{{- end }}
{{- if .ResponseHandles }}
{{ template "StructDefinition" .ResponseHandles }}
{{- end }}
{{- end }}
resource zx_chan_{{ .Name }}_client[zx_chan]
resource zx_chan_{{ .Name }}_server[zx_chan]
zx_channel_create${{ .Name }}(options const[0], out0 ptr[out, zx_chan_{{ .Name }}_client], out1 ptr[out, zx_chan_{{ .Name }}_server])
fdio_service_connect${{ .Name }}(path ptr[in, string["/svc/{{ .ServiceNameString }}"]], handle zx_chan_{{ .Name }}_server)
{{- $if := .Name }}
{{- range .Methods }}
{{- if and .Request .ResponseHandles }}
zx_channel_call${{ .Name }}(handle zx_chan_{{ $if }}_client, options const[0], deadline zx_time, args ptr[in, fidl_call_args[{{ .Request.Name }}, {{ .RequestHandles.Name }}, array[int8, ZX_CHANNEL_MAX_MSG_BYTES], {{ .ResponseHandles.Name }}]], actual_bytes ptr[out, int32], actual_handles ptr[out, int32])
{{- else if .Request }}
zx_channel_write${{ .Name }}(handle zx_chan_{{ $if }}_client, options const[0], bytes ptr[in, {{ .Request.Name }}], num_bytes bytesize[bytes], handles ptr[in, {{ .RequestHandles.Name }}], num_handles bytesize[handles])
{{- else if .ResponseHandles }}
zx_channel_read${{ .Name }}(handle zx_chan_{{ $if }}_client, options const[0], bytes ptr[out, array[int8, ZX_CHANNEL_MAX_MSG_BYTES]], num_bytes bytesize[bytes], handles ptr[out, {{ .ResponseHandles.Name }}], num_handles bytesize[handles], actual_bytes ptr[out, int32], actual_handles ptr[out, int32])
{{- end }}
{{- end }}
{{ end -}}
`