# 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.
#
# WARNING: This file is machine generated by fidlgen.

include <fidl/test/transitivedependenciescompose/c/fidl.h>


fidl_test_transitivedependenciescompose_TopGetFooRequest {
       hdr fidl_message_header[3210163844600846111]
} [packed]
fidl_test_transitivedependenciescompose_TopGetFooRequestHandles {
       void void
} [packed]
fidl_test_transitivedependenciescompose_TopGetFooResponse {
       hdr fidl_message_header[3210163844600846111]
       fooInLine bottom_FooInLine
       fooOutOfLine bottom_FooOutOfLine
} [packed]
fidl_test_transitivedependenciescompose_TopGetFooResponseHandles {
       foo bottom_FooHandles
} [packed]

resource zx_chan_fidl_test_transitivedependenciescompose_Top_client[zx_chan]
resource zx_chan_fidl_test_transitivedependenciescompose_Top_server[zx_chan]

zx_channel_create$fidl_test_transitivedependenciescompose_Top(options const[0], out0 ptr[out, zx_chan_fidl_test_transitivedependenciescompose_Top_client], out1 ptr[out, zx_chan_fidl_test_transitivedependenciescompose_Top_server])
fdio_service_connect$fidl_test_transitivedependenciescompose_Top(path ptr[in, string["/svc/"]], handle zx_chan_fidl_test_transitivedependenciescompose_Top_server)
zx_channel_call$fidl_test_transitivedependenciescompose_TopGetFoo(handle zx_chan_fidl_test_transitivedependenciescompose_Top_client, options const[0], deadline zx_time, args ptr[in, fidl_call_args[fidl_test_transitivedependenciescompose_TopGetFooRequest, fidl_test_transitivedependenciescompose_TopGetFooRequestHandles, array[int8, ZX_CHANNEL_MAX_MSG_BYTES], fidl_test_transitivedependenciescompose_TopGetFooResponseHandles]], actual_bytes ptr[out, int32], actual_handles ptr[out, int32])

