# 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/protocols/c/fidl.h>
fidl_test_protocols_obj_type = fidl_test_protocols_obj_type_NONE, fidl_test_protocols_obj_type_SOCKET
fidl_test_protocols_ErrorEnun = fidl_test_protocols_ErrorEnun_ERR_FOO, fidl_test_protocols_ErrorEnun_ERR_BAR
fidl_test_protocols_WithErrorSyntax_ResponseAsStruct_ResponseInLine {
       a int64
       b int64
       c int64
} [packed]
fidl_test_protocols_WithErrorSyntax_ResponseAsStruct_ResponseOutOfLine {
       void void
} [packed]
fidl_test_protocols_WithErrorSyntax_ResponseAsStruct_ResponseHandles {
       void void
} [packed]
fidl_test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResponseInLine {
       padding int8
} [packed]
fidl_test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResponseOutOfLine {
       void void
} [packed]
fidl_test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResponseHandles {
       void void
} [packed]
fidl_test_protocols_WithErrorSyntax_ErrorAsEnum_ResponseInLine {
       padding int8
} [packed]
fidl_test_protocols_WithErrorSyntax_ErrorAsEnum_ResponseOutOfLine {
       void void
} [packed]
fidl_test_protocols_WithErrorSyntax_ErrorAsEnum_ResponseHandles {
       void void
} [packed]
fidl_test_protocols_WithErrorSyntax_ResponseAsStruct_ResultInLine [
       responseInLine fidl_union_member[1, fidl_test_protocols_WithErrorSyntax_ResponseAsStruct_ResponseInLine]
       err fidl_union_member[2, int32]
]
fidl_test_protocols_WithErrorSyntax_ResponseAsStruct_ResultOutOfLine [
       responseOutOfLine fidl_test_protocols_WithErrorSyntax_ResponseAsStruct_ResponseOutOfLine
][varlen]
fidl_test_protocols_WithErrorSyntax_ResponseAsStruct_ResultHandles [
       response fidl_test_protocols_WithErrorSyntax_ResponseAsStruct_ResponseHandles
][varlen]
fidl_test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResultInLine [
       responseInLine fidl_union_member[1, fidl_test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResponseInLine]
       err fidl_union_member[2, int32]
]
fidl_test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResultOutOfLine [
       responseOutOfLine fidl_test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResponseOutOfLine
][varlen]
fidl_test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResultHandles [
       response fidl_test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResponseHandles
][varlen]
fidl_test_protocols_WithErrorSyntax_ErrorAsEnum_ResultInLine [
       responseInLine fidl_union_member[1, fidl_test_protocols_WithErrorSyntax_ErrorAsEnum_ResponseInLine]
       err fidl_union_member[2, flags[fidl_test_protocols_ErrorEnun, int32]]
]
fidl_test_protocols_WithErrorSyntax_ErrorAsEnum_ResultOutOfLine [
       responseOutOfLine fidl_test_protocols_WithErrorSyntax_ErrorAsEnum_ResponseOutOfLine
][varlen]
fidl_test_protocols_WithErrorSyntax_ErrorAsEnum_ResultHandles [
       response fidl_test_protocols_WithErrorSyntax_ErrorAsEnum_ResponseHandles
][varlen]


fidl_test_protocols_WithAndWithoutRequestResponseNoRequestNoResponseRequest {
       hdr fidl_message_header[7699066378708085668]
} [packed]
fidl_test_protocols_WithAndWithoutRequestResponseNoRequestNoResponseRequestHandles {
       void void
} [packed]
fidl_test_protocols_WithAndWithoutRequestResponseNoRequestEmptyResponseRequest {
       hdr fidl_message_header[4641225961522096302]
} [packed]
fidl_test_protocols_WithAndWithoutRequestResponseNoRequestEmptyResponseRequestHandles {
       void void
} [packed]
fidl_test_protocols_WithAndWithoutRequestResponseNoRequestEmptyResponseResponse {
       hdr fidl_message_header[4641225961522096302]
} [packed]
fidl_test_protocols_WithAndWithoutRequestResponseNoRequestEmptyResponseResponseHandles {
       void void
} [packed]
fidl_test_protocols_WithAndWithoutRequestResponseNoRequestWithResponseRequest {
       hdr fidl_message_header[4935493674668456948]
} [packed]
fidl_test_protocols_WithAndWithoutRequestResponseNoRequestWithResponseRequestHandles {
       void void
} [packed]
fidl_test_protocols_WithAndWithoutRequestResponseNoRequestWithResponseResponse {
       hdr fidl_message_header[4935493674668456948]
       retInLine fidl_string
       retOutOfLine fidl_aligned[stringnoz]
} [packed]
fidl_test_protocols_WithAndWithoutRequestResponseNoRequestWithResponseResponseHandles {
       void void
} [packed]
fidl_test_protocols_WithAndWithoutRequestResponseWithRequestNoResponseRequest {
       hdr fidl_message_header[8985942600963248509]
       argInLine fidl_string
       argOutOfLine fidl_aligned[stringnoz]
} [packed]
fidl_test_protocols_WithAndWithoutRequestResponseWithRequestNoResponseRequestHandles {
       void void
} [packed]
fidl_test_protocols_WithAndWithoutRequestResponseWithRequestEmptyResponseRequest {
       hdr fidl_message_header[7344052883704365182]
       argInLine fidl_string
       argOutOfLine fidl_aligned[stringnoz]
} [packed]
fidl_test_protocols_WithAndWithoutRequestResponseWithRequestEmptyResponseRequestHandles {
       void void
} [packed]
fidl_test_protocols_WithAndWithoutRequestResponseWithRequestEmptyResponseResponse {
       hdr fidl_message_header[7344052883704365182]
} [packed]
fidl_test_protocols_WithAndWithoutRequestResponseWithRequestEmptyResponseResponseHandles {
       void void
} [packed]
fidl_test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseRequest {
       hdr fidl_message_header[2103802322332450033]
       argInLine fidl_string
       argOutOfLine fidl_aligned[stringnoz]
} [packed]
fidl_test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseRequestHandles {
       void void
} [packed]
fidl_test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseResponse {
       hdr fidl_message_header[2103802322332450033]
       retInLine fidl_string
       retOutOfLine fidl_aligned[stringnoz]
} [packed]
fidl_test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseResponseHandles {
       void void
} [packed]
fidl_test_protocols_WithAndWithoutRequestResponseOnEmptyResponseEvent {
       hdr fidl_message_header[1323081535741489193]
} [packed]
fidl_test_protocols_WithAndWithoutRequestResponseOnEmptyResponseEventHandles {
       void void
} [packed]
fidl_test_protocols_WithAndWithoutRequestResponseOnWithResponseEvent {
       hdr fidl_message_header[1691906546593908418]
       retInLine fidl_string
       retOutOfLine fidl_aligned[stringnoz]
} [packed]
fidl_test_protocols_WithAndWithoutRequestResponseOnWithResponseEventHandles {
       void void
} [packed]

resource zx_chan_fidl_test_protocols_WithAndWithoutRequestResponse_client[zx_chan]
resource zx_chan_fidl_test_protocols_WithAndWithoutRequestResponse_server[zx_chan]

zx_channel_create$fidl_test_protocols_WithAndWithoutRequestResponse(options const[0], out0 ptr[out, zx_chan_fidl_test_protocols_WithAndWithoutRequestResponse_client], out1 ptr[out, zx_chan_fidl_test_protocols_WithAndWithoutRequestResponse_server])
fdio_service_connect$fidl_test_protocols_WithAndWithoutRequestResponse(path ptr[in, string["/svc/"]], handle zx_chan_fidl_test_protocols_WithAndWithoutRequestResponse_server)
zx_channel_write$fidl_test_protocols_WithAndWithoutRequestResponseNoRequestNoResponse(handle zx_chan_fidl_test_protocols_WithAndWithoutRequestResponse_client, options const[0], bytes ptr[in, fidl_test_protocols_WithAndWithoutRequestResponseNoRequestNoResponseRequest], num_bytes bytesize[bytes], handles ptr[in, fidl_test_protocols_WithAndWithoutRequestResponseNoRequestNoResponseRequestHandles], num_handles bytesize[handles])
zx_channel_call$fidl_test_protocols_WithAndWithoutRequestResponseNoRequestEmptyResponse(handle zx_chan_fidl_test_protocols_WithAndWithoutRequestResponse_client, options const[0], deadline zx_time, args ptr[in, fidl_call_args[fidl_test_protocols_WithAndWithoutRequestResponseNoRequestEmptyResponseRequest, fidl_test_protocols_WithAndWithoutRequestResponseNoRequestEmptyResponseRequestHandles, array[int8, ZX_CHANNEL_MAX_MSG_BYTES], fidl_test_protocols_WithAndWithoutRequestResponseNoRequestEmptyResponseResponseHandles]], actual_bytes ptr[out, int32], actual_handles ptr[out, int32])
zx_channel_call$fidl_test_protocols_WithAndWithoutRequestResponseNoRequestWithResponse(handle zx_chan_fidl_test_protocols_WithAndWithoutRequestResponse_client, options const[0], deadline zx_time, args ptr[in, fidl_call_args[fidl_test_protocols_WithAndWithoutRequestResponseNoRequestWithResponseRequest, fidl_test_protocols_WithAndWithoutRequestResponseNoRequestWithResponseRequestHandles, array[int8, ZX_CHANNEL_MAX_MSG_BYTES], fidl_test_protocols_WithAndWithoutRequestResponseNoRequestWithResponseResponseHandles]], actual_bytes ptr[out, int32], actual_handles ptr[out, int32])
zx_channel_write$fidl_test_protocols_WithAndWithoutRequestResponseWithRequestNoResponse(handle zx_chan_fidl_test_protocols_WithAndWithoutRequestResponse_client, options const[0], bytes ptr[in, fidl_test_protocols_WithAndWithoutRequestResponseWithRequestNoResponseRequest], num_bytes bytesize[bytes], handles ptr[in, fidl_test_protocols_WithAndWithoutRequestResponseWithRequestNoResponseRequestHandles], num_handles bytesize[handles])
zx_channel_call$fidl_test_protocols_WithAndWithoutRequestResponseWithRequestEmptyResponse(handle zx_chan_fidl_test_protocols_WithAndWithoutRequestResponse_client, options const[0], deadline zx_time, args ptr[in, fidl_call_args[fidl_test_protocols_WithAndWithoutRequestResponseWithRequestEmptyResponseRequest, fidl_test_protocols_WithAndWithoutRequestResponseWithRequestEmptyResponseRequestHandles, array[int8, ZX_CHANNEL_MAX_MSG_BYTES], fidl_test_protocols_WithAndWithoutRequestResponseWithRequestEmptyResponseResponseHandles]], actual_bytes ptr[out, int32], actual_handles ptr[out, int32])
zx_channel_call$fidl_test_protocols_WithAndWithoutRequestResponseWithRequestWithResponse(handle zx_chan_fidl_test_protocols_WithAndWithoutRequestResponse_client, options const[0], deadline zx_time, args ptr[in, fidl_call_args[fidl_test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseRequest, fidl_test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseRequestHandles, array[int8, ZX_CHANNEL_MAX_MSG_BYTES], fidl_test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseResponseHandles]], actual_bytes ptr[out, int32], actual_handles ptr[out, int32])
zx_channel_read$fidl_test_protocols_WithAndWithoutRequestResponseOnEmptyResponse(handle zx_chan_fidl_test_protocols_WithAndWithoutRequestResponse_client, options const[0], bytes ptr[out, array[int8, ZX_CHANNEL_MAX_MSG_BYTES]], num_bytes bytesize[bytes], handles ptr[out, fidl_test_protocols_WithAndWithoutRequestResponseOnEmptyResponseEventHandles], num_handles bytesize[handles], actual_bytes ptr[out, int32], actual_handles ptr[out, int32])
zx_channel_read$fidl_test_protocols_WithAndWithoutRequestResponseOnWithResponse(handle zx_chan_fidl_test_protocols_WithAndWithoutRequestResponse_client, options const[0], bytes ptr[out, array[int8, ZX_CHANNEL_MAX_MSG_BYTES]], num_bytes bytesize[bytes], handles ptr[out, fidl_test_protocols_WithAndWithoutRequestResponseOnWithResponseEventHandles], num_handles bytesize[handles], actual_bytes ptr[out, int32], actual_handles ptr[out, int32])


fidl_test_protocols_WithErrorSyntaxResponseAsStructRequest {
       hdr fidl_message_header[4000554951765344912]
} [packed]
fidl_test_protocols_WithErrorSyntaxResponseAsStructRequestHandles {
       void void
} [packed]
fidl_test_protocols_WithErrorSyntaxResponseAsStructResponse {
       hdr fidl_message_header[4000554951765344912]
       resultInLine fidl_test_protocols_WithErrorSyntax_ResponseAsStruct_ResultInLine
       resultOutOfLine fidl_test_protocols_WithErrorSyntax_ResponseAsStruct_ResultOutOfLine
} [packed]
fidl_test_protocols_WithErrorSyntaxResponseAsStructResponseHandles {
       result fidl_test_protocols_WithErrorSyntax_ResponseAsStruct_ResultHandles
} [packed]
fidl_test_protocols_WithErrorSyntaxErrorAsPrimitiveRequest {
       hdr fidl_message_header[3421672554503271630]
} [packed]
fidl_test_protocols_WithErrorSyntaxErrorAsPrimitiveRequestHandles {
       void void
} [packed]
fidl_test_protocols_WithErrorSyntaxErrorAsPrimitiveResponse {
       hdr fidl_message_header[3421672554503271630]
       resultInLine fidl_test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResultInLine
       resultOutOfLine fidl_test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResultOutOfLine
} [packed]
fidl_test_protocols_WithErrorSyntaxErrorAsPrimitiveResponseHandles {
       result fidl_test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResultHandles
} [packed]
fidl_test_protocols_WithErrorSyntaxErrorAsEnumRequest {
       hdr fidl_message_header[627496610701472780]
} [packed]
fidl_test_protocols_WithErrorSyntaxErrorAsEnumRequestHandles {
       void void
} [packed]
fidl_test_protocols_WithErrorSyntaxErrorAsEnumResponse {
       hdr fidl_message_header[627496610701472780]
       resultInLine fidl_test_protocols_WithErrorSyntax_ErrorAsEnum_ResultInLine
       resultOutOfLine fidl_test_protocols_WithErrorSyntax_ErrorAsEnum_ResultOutOfLine
} [packed]
fidl_test_protocols_WithErrorSyntaxErrorAsEnumResponseHandles {
       result fidl_test_protocols_WithErrorSyntax_ErrorAsEnum_ResultHandles
} [packed]

resource zx_chan_fidl_test_protocols_WithErrorSyntax_client[zx_chan]
resource zx_chan_fidl_test_protocols_WithErrorSyntax_server[zx_chan]

zx_channel_create$fidl_test_protocols_WithErrorSyntax(options const[0], out0 ptr[out, zx_chan_fidl_test_protocols_WithErrorSyntax_client], out1 ptr[out, zx_chan_fidl_test_protocols_WithErrorSyntax_server])
fdio_service_connect$fidl_test_protocols_WithErrorSyntax(path ptr[in, string["/svc/"]], handle zx_chan_fidl_test_protocols_WithErrorSyntax_server)
zx_channel_call$fidl_test_protocols_WithErrorSyntaxResponseAsStruct(handle zx_chan_fidl_test_protocols_WithErrorSyntax_client, options const[0], deadline zx_time, args ptr[in, fidl_call_args[fidl_test_protocols_WithErrorSyntaxResponseAsStructRequest, fidl_test_protocols_WithErrorSyntaxResponseAsStructRequestHandles, array[int8, ZX_CHANNEL_MAX_MSG_BYTES], fidl_test_protocols_WithErrorSyntaxResponseAsStructResponseHandles]], actual_bytes ptr[out, int32], actual_handles ptr[out, int32])
zx_channel_call$fidl_test_protocols_WithErrorSyntaxErrorAsPrimitive(handle zx_chan_fidl_test_protocols_WithErrorSyntax_client, options const[0], deadline zx_time, args ptr[in, fidl_call_args[fidl_test_protocols_WithErrorSyntaxErrorAsPrimitiveRequest, fidl_test_protocols_WithErrorSyntaxErrorAsPrimitiveRequestHandles, array[int8, ZX_CHANNEL_MAX_MSG_BYTES], fidl_test_protocols_WithErrorSyntaxErrorAsPrimitiveResponseHandles]], actual_bytes ptr[out, int32], actual_handles ptr[out, int32])
zx_channel_call$fidl_test_protocols_WithErrorSyntaxErrorAsEnum(handle zx_chan_fidl_test_protocols_WithErrorSyntax_client, options const[0], deadline zx_time, args ptr[in, fidl_call_args[fidl_test_protocols_WithErrorSyntaxErrorAsEnumRequest, fidl_test_protocols_WithErrorSyntaxErrorAsEnumRequestHandles, array[int8, ZX_CHANNEL_MAX_MSG_BYTES], fidl_test_protocols_WithErrorSyntaxErrorAsEnumResponseHandles]], actual_bytes ptr[out, int32], actual_handles ptr[out, int32])


fidl_test_protocols_ChannelProtocolMethodARequest {
       hdr fidl_message_header[565531679656837166]
       a int64
       b int64
} [packed]
fidl_test_protocols_ChannelProtocolMethodARequestHandles {
       void void
} [packed]
fidl_test_protocols_ChannelProtocolEventAEvent {
       hdr fidl_message_header[5963604044179602938]
       a int64
       b int64
} [packed]
fidl_test_protocols_ChannelProtocolEventAEventHandles {
       void void
} [packed]
fidl_test_protocols_ChannelProtocolMethodBRequest {
       hdr fidl_message_header[6746905632127147242]
       a int64
       b int64
} [packed]
fidl_test_protocols_ChannelProtocolMethodBRequestHandles {
       void void
} [packed]
fidl_test_protocols_ChannelProtocolMethodBResponse {
       hdr fidl_message_header[6746905632127147242]
       result int64
} [packed]
fidl_test_protocols_ChannelProtocolMethodBResponseHandles {
       void void
} [packed]
fidl_test_protocols_ChannelProtocolTakeHandleRequest {
       hdr fidl_message_header[875219241480379432]
       h flags[fidl_handle_presence, int32]
} [packed]
fidl_test_protocols_ChannelProtocolTakeHandleRequestHandles {
       h zx_handle
} [packed]
fidl_test_protocols_ChannelProtocolTakeHandleResponse {
       hdr fidl_message_header[875219241480379432]
} [packed]
fidl_test_protocols_ChannelProtocolTakeHandleResponseHandles {
       void void
} [packed]
fidl_test_protocols_ChannelProtocolMutateSocketRequest {
       hdr fidl_message_header[9065806117349865322]
       a flags[fidl_handle_presence, int32]
} [packed]
fidl_test_protocols_ChannelProtocolMutateSocketRequestHandles {
       a zx_socket
} [packed]
fidl_test_protocols_ChannelProtocolMutateSocketResponse {
       hdr fidl_message_header[9065806117349865322]
       b flags[fidl_handle_presence, int32]
} [packed]
fidl_test_protocols_ChannelProtocolMutateSocketResponseHandles {
       b zx_socket
} [packed]

resource zx_chan_fidl_test_protocols_ChannelProtocol_client[zx_chan]
resource zx_chan_fidl_test_protocols_ChannelProtocol_server[zx_chan]

zx_channel_create$fidl_test_protocols_ChannelProtocol(options const[0], out0 ptr[out, zx_chan_fidl_test_protocols_ChannelProtocol_client], out1 ptr[out, zx_chan_fidl_test_protocols_ChannelProtocol_server])
fdio_service_connect$fidl_test_protocols_ChannelProtocol(path ptr[in, string["/svc/"]], handle zx_chan_fidl_test_protocols_ChannelProtocol_server)
zx_channel_write$fidl_test_protocols_ChannelProtocolMethodA(handle zx_chan_fidl_test_protocols_ChannelProtocol_client, options const[0], bytes ptr[in, fidl_test_protocols_ChannelProtocolMethodARequest], num_bytes bytesize[bytes], handles ptr[in, fidl_test_protocols_ChannelProtocolMethodARequestHandles], num_handles bytesize[handles])
zx_channel_read$fidl_test_protocols_ChannelProtocolEventA(handle zx_chan_fidl_test_protocols_ChannelProtocol_client, options const[0], bytes ptr[out, array[int8, ZX_CHANNEL_MAX_MSG_BYTES]], num_bytes bytesize[bytes], handles ptr[out, fidl_test_protocols_ChannelProtocolEventAEventHandles], num_handles bytesize[handles], actual_bytes ptr[out, int32], actual_handles ptr[out, int32])
zx_channel_call$fidl_test_protocols_ChannelProtocolMethodB(handle zx_chan_fidl_test_protocols_ChannelProtocol_client, options const[0], deadline zx_time, args ptr[in, fidl_call_args[fidl_test_protocols_ChannelProtocolMethodBRequest, fidl_test_protocols_ChannelProtocolMethodBRequestHandles, array[int8, ZX_CHANNEL_MAX_MSG_BYTES], fidl_test_protocols_ChannelProtocolMethodBResponseHandles]], actual_bytes ptr[out, int32], actual_handles ptr[out, int32])
zx_channel_call$fidl_test_protocols_ChannelProtocolTakeHandle(handle zx_chan_fidl_test_protocols_ChannelProtocol_client, options const[0], deadline zx_time, args ptr[in, fidl_call_args[fidl_test_protocols_ChannelProtocolTakeHandleRequest, fidl_test_protocols_ChannelProtocolTakeHandleRequestHandles, array[int8, ZX_CHANNEL_MAX_MSG_BYTES], fidl_test_protocols_ChannelProtocolTakeHandleResponseHandles]], actual_bytes ptr[out, int32], actual_handles ptr[out, int32])
zx_channel_call$fidl_test_protocols_ChannelProtocolMutateSocket(handle zx_chan_fidl_test_protocols_ChannelProtocol_client, options const[0], deadline zx_time, args ptr[in, fidl_call_args[fidl_test_protocols_ChannelProtocolMutateSocketRequest, fidl_test_protocols_ChannelProtocolMutateSocketRequestHandles, array[int8, ZX_CHANNEL_MAX_MSG_BYTES], fidl_test_protocols_ChannelProtocolMutateSocketResponseHandles]], actual_bytes ptr[out, int32], actual_handles ptr[out, int32])


fidl_test_protocols_TransitionalRequestRequest {
       hdr fidl_message_header[7121112290509197032]
       x int64
} [packed]
fidl_test_protocols_TransitionalRequestRequestHandles {
       void void
} [packed]
fidl_test_protocols_TransitionalRequestResponse {
       hdr fidl_message_header[7121112290509197032]
       y int64
} [packed]
fidl_test_protocols_TransitionalRequestResponseHandles {
       void void
} [packed]
fidl_test_protocols_TransitionalOneWayRequest {
       hdr fidl_message_header[1124136612964114085]
       x int64
} [packed]
fidl_test_protocols_TransitionalOneWayRequestHandles {
       void void
} [packed]
fidl_test_protocols_TransitionalEventEvent {
       hdr fidl_message_header[6033576734966581606]
       x int64
} [packed]
fidl_test_protocols_TransitionalEventEventHandles {
       void void
} [packed]

resource zx_chan_fidl_test_protocols_Transitional_client[zx_chan]
resource zx_chan_fidl_test_protocols_Transitional_server[zx_chan]

zx_channel_create$fidl_test_protocols_Transitional(options const[0], out0 ptr[out, zx_chan_fidl_test_protocols_Transitional_client], out1 ptr[out, zx_chan_fidl_test_protocols_Transitional_server])
fdio_service_connect$fidl_test_protocols_Transitional(path ptr[in, string["/svc/"]], handle zx_chan_fidl_test_protocols_Transitional_server)
zx_channel_call$fidl_test_protocols_TransitionalRequest(handle zx_chan_fidl_test_protocols_Transitional_client, options const[0], deadline zx_time, args ptr[in, fidl_call_args[fidl_test_protocols_TransitionalRequestRequest, fidl_test_protocols_TransitionalRequestRequestHandles, array[int8, ZX_CHANNEL_MAX_MSG_BYTES], fidl_test_protocols_TransitionalRequestResponseHandles]], actual_bytes ptr[out, int32], actual_handles ptr[out, int32])
zx_channel_write$fidl_test_protocols_TransitionalOneWay(handle zx_chan_fidl_test_protocols_Transitional_client, options const[0], bytes ptr[in, fidl_test_protocols_TransitionalOneWayRequest], num_bytes bytesize[bytes], handles ptr[in, fidl_test_protocols_TransitionalOneWayRequestHandles], num_handles bytesize[handles])
zx_channel_read$fidl_test_protocols_TransitionalEvent(handle zx_chan_fidl_test_protocols_Transitional_client, options const[0], bytes ptr[out, array[int8, ZX_CHANNEL_MAX_MSG_BYTES]], num_bytes bytesize[bytes], handles ptr[out, fidl_test_protocols_TransitionalEventEventHandles], num_handles bytesize[handles], actual_bytes ptr[out, int32], actual_handles ptr[out, int32])

