blob: cbbc9722c57d5b4d0c24a717b9cb8630c9e98e6b [file] [log] [blame]
// Copyright 2019 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.
#include "tools/fidlcat/interception_tests/test_library.h"
#include <iostream>
#include <memory>
#include <sstream>
#include <string>
#include "src/lib/fidl_codec/library_loader.h"
// Generated with go/fidlbolt using this text:
// library fidl.examples.echo;
//
// using zx;
//
// @discoverable
// protocol Echo {
// EchoString(struct {
// value string:optional;
// }) -> (struct {
// response string:optional;
// });
// EchoHandle(resource struct {
// handle zx.handle;
// }) -> (resource struct {
// handle zx.handle;
// });
// -> OnPong();
// };
// -> OnPong();
// };
std::string echo_service = R"({
"name": "fidl.examples.echo",
"library_dependencies": [
{
"name": "zx",
"declarations": {
"zx/rights": {
"kind": "bits"
},
"zx/CHANNEL_MAX_MSG_BYTES": {
"kind": "const"
},
"zx/CHANNEL_MAX_MSG_HANDLES": {
"kind": "const"
},
"zx/MAX_NAME_LEN": {
"kind": "const"
},
"zx/MAX_CPUS": {
"kind": "const"
},
"zx/RIGHTS_BASIC": {
"kind": "const"
},
"zx/RIGHTS_IO": {
"kind": "const"
},
"zx/RIGHTS_PROPERTY": {
"kind": "const"
},
"zx/RIGHTS_POLICY": {
"kind": "const"
},
"zx/DEFAULT_CHANNEL_RIGHTS": {
"kind": "const"
},
"zx/DEFAULT_EVENT_RIGHTS": {
"kind": "const"
},
"zx/obj_type": {
"kind": "enum"
},
"zx/handle": {
"kind": "experimental_resource"
},
"zx/status": {
"kind": "type_alias"
},
"zx/time": {
"kind": "type_alias"
},
"zx/duration": {
"kind": "type_alias"
},
"zx/ticks": {
"kind": "type_alias"
},
"zx/koid": {
"kind": "type_alias"
},
"zx/vaddr": {
"kind": "type_alias"
},
"zx/paddr": {
"kind": "type_alias"
},
"zx/paddr32": {
"kind": "type_alias"
},
"zx/gpaddr": {
"kind": "type_alias"
},
"zx/off": {
"kind": "type_alias"
},
"zx/procarg": {
"kind": "type_alias"
},
"zx/signals": {
"kind": "type_alias"
}
}
}
],
"bits_declarations": [],
"const_declarations": [],
"enum_declarations": [],
"experimental_resource_declarations": [],
"protocol_declarations": [
{
"name": "fidl.examples.echo/Echo",
"location": {
"filename": "fidlbolt.fidl",
"line": 33,
"column": 10,
"length": 4
},
"maybe_attributes": [
{
"name": "discoverable",
"arguments": [],
"location": {
"filename": "fidlbolt.fidl",
"line": 32,
"column": 1,
"length": 13
}
}
],
"composed_protocols": [],
"methods": [
{
"ordinal": 2936880781197466513,
"name": "EchoString",
"location": {
"filename": "fidlbolt.fidl",
"line": 34,
"column": 5,
"length": 10
},
"has_request": true,
"maybe_request": [
{
"type": {
"kind": "string",
"nullable": true,
"type_shape_v1": {
"inline_size": 16,
"alignment": 8,
"depth": 1,
"max_handles": 0,
"max_out_of_line": 4294967295,
"has_padding": true,
"has_flexible_envelope": false
},
"type_shape_v2": {
"inline_size": 16,
"alignment": 8,
"depth": 1,
"max_handles": 0,
"max_out_of_line": 4294967295,
"has_padding": true,
"has_flexible_envelope": false
}
},
"name": "value",
"location": {
"filename": "fidlbolt.fidl",
"line": 35,
"column": 9,
"length": 5
},
"field_shape_v1": {
"offset": 16,
"padding": 0
},
"field_shape_v2": {
"offset": 16,
"padding": 0
}
}
],
"maybe_request_payload": {
"kind": "identifier",
"identifier": "fidl.examples.echo/EchoEchoStringRequest",
"nullable": false,
"type_shape_v1": {
"inline_size": 16,
"alignment": 8,
"depth": 1,
"max_handles": 0,
"max_out_of_line": 4294967295,
"has_padding": true,
"has_flexible_envelope": false
},
"type_shape_v2": {
"inline_size": 16,
"alignment": 8,
"depth": 1,
"max_handles": 0,
"max_out_of_line": 4294967295,
"has_padding": true,
"has_flexible_envelope": false
}
},
"maybe_request_type_shape_v1": {
"inline_size": 32,
"alignment": 8,
"depth": 1,
"max_handles": 0,
"max_out_of_line": 4294967295,
"has_padding": true,
"has_flexible_envelope": false
},
"maybe_request_type_shape_v2": {
"inline_size": 32,
"alignment": 8,
"depth": 1,
"max_handles": 0,
"max_out_of_line": 4294967295,
"has_padding": true,
"has_flexible_envelope": false
},
"has_response": true,
"maybe_response": [
{
"type": {
"kind": "string",
"nullable": true,
"type_shape_v1": {
"inline_size": 16,
"alignment": 8,
"depth": 1,
"max_handles": 0,
"max_out_of_line": 4294967295,
"has_padding": true,
"has_flexible_envelope": false
},
"type_shape_v2": {
"inline_size": 16,
"alignment": 8,
"depth": 1,
"max_handles": 0,
"max_out_of_line": 4294967295,
"has_padding": true,
"has_flexible_envelope": false
}
},
"name": "response",
"location": {
"filename": "fidlbolt.fidl",
"line": 37,
"column": 9,
"length": 8
},
"field_shape_v1": {
"offset": 16,
"padding": 0
},
"field_shape_v2": {
"offset": 16,
"padding": 0
}
}
],
"maybe_response_payload": {
"kind": "identifier",
"identifier": "fidl.examples.echo/EchoEchoStringTopResponse",
"nullable": false,
"type_shape_v1": {
"inline_size": 16,
"alignment": 8,
"depth": 1,
"max_handles": 0,
"max_out_of_line": 4294967295,
"has_padding": true,
"has_flexible_envelope": false
},
"type_shape_v2": {
"inline_size": 16,
"alignment": 8,
"depth": 1,
"max_handles": 0,
"max_out_of_line": 4294967295,
"has_padding": true,
"has_flexible_envelope": false
}
},
"maybe_response_type_shape_v1": {
"inline_size": 32,
"alignment": 8,
"depth": 1,
"max_handles": 0,
"max_out_of_line": 4294967295,
"has_padding": true,
"has_flexible_envelope": false
},
"maybe_response_type_shape_v2": {
"inline_size": 32,
"alignment": 8,
"depth": 1,
"max_handles": 0,
"max_out_of_line": 4294967295,
"has_padding": true,
"has_flexible_envelope": false
},
"is_composed": false,
"has_error": false
},
{
"ordinal": 9059114273465311787,
"name": "EchoHandle",
"location": {
"filename": "fidlbolt.fidl",
"line": 39,
"column": 5,
"length": 10
},
"has_request": true,
"maybe_request": [
{
"type": {
"kind": "handle",
"obj_type": 0,
"subtype": "handle",
"rights": 2147483648,
"nullable": false,
"type_shape_v1": {
"inline_size": 4,
"alignment": 4,
"depth": 0,
"max_handles": 1,
"max_out_of_line": 0,
"has_padding": false,
"has_flexible_envelope": false
},
"type_shape_v2": {
"inline_size": 4,
"alignment": 4,
"depth": 0,
"max_handles": 1,
"max_out_of_line": 0,
"has_padding": false,
"has_flexible_envelope": false
}
},
"name": "handle",
"location": {
"filename": "fidlbolt.fidl",
"line": 40,
"column": 9,
"length": 6
},
"field_shape_v1": {
"offset": 16,
"padding": 4
},
"field_shape_v2": {
"offset": 16,
"padding": 4
}
}
],
"maybe_request_payload": {
"kind": "identifier",
"identifier": "fidl.examples.echo/EchoEchoHandleRequest",
"nullable": false,
"type_shape_v1": {
"inline_size": 8,
"alignment": 8,
"depth": 0,
"max_handles": 1,
"max_out_of_line": 0,
"has_padding": true,
"has_flexible_envelope": false
},
"type_shape_v2": {
"inline_size": 8,
"alignment": 8,
"depth": 0,
"max_handles": 1,
"max_out_of_line": 0,
"has_padding": true,
"has_flexible_envelope": false
}
},
"maybe_request_type_shape_v1": {
"inline_size": 24,
"alignment": 8,
"depth": 0,
"max_handles": 1,
"max_out_of_line": 0,
"has_padding": true,
"has_flexible_envelope": false
},
"maybe_request_type_shape_v2": {
"inline_size": 24,
"alignment": 8,
"depth": 0,
"max_handles": 1,
"max_out_of_line": 0,
"has_padding": true,
"has_flexible_envelope": false
},
"has_response": true,
"maybe_response": [
{
"type": {
"kind": "handle",
"obj_type": 0,
"subtype": "handle",
"rights": 2147483648,
"nullable": false,
"type_shape_v1": {
"inline_size": 4,
"alignment": 4,
"depth": 0,
"max_handles": 1,
"max_out_of_line": 0,
"has_padding": false,
"has_flexible_envelope": false
},
"type_shape_v2": {
"inline_size": 4,
"alignment": 4,
"depth": 0,
"max_handles": 1,
"max_out_of_line": 0,
"has_padding": false,
"has_flexible_envelope": false
}
},
"name": "handle",
"location": {
"filename": "fidlbolt.fidl",
"line": 42,
"column": 9,
"length": 6
},
"field_shape_v1": {
"offset": 16,
"padding": 4
},
"field_shape_v2": {
"offset": 16,
"padding": 4
}
}
],
"maybe_response_payload": {
"kind": "identifier",
"identifier": "fidl.examples.echo/EchoEchoHandleTopResponse",
"nullable": false,
"type_shape_v1": {
"inline_size": 8,
"alignment": 8,
"depth": 0,
"max_handles": 1,
"max_out_of_line": 0,
"has_padding": true,
"has_flexible_envelope": false
},
"type_shape_v2": {
"inline_size": 8,
"alignment": 8,
"depth": 0,
"max_handles": 1,
"max_out_of_line": 0,
"has_padding": true,
"has_flexible_envelope": false
}
},
"maybe_response_type_shape_v1": {
"inline_size": 24,
"alignment": 8,
"depth": 0,
"max_handles": 1,
"max_out_of_line": 0,
"has_padding": true,
"has_flexible_envelope": false
},
"maybe_response_type_shape_v2": {
"inline_size": 24,
"alignment": 8,
"depth": 0,
"max_handles": 1,
"max_out_of_line": 0,
"has_padding": true,
"has_flexible_envelope": false
},
"is_composed": false,
"has_error": false
},
{
"ordinal": 1120886698987607603,
"name": "OnPong",
"location": {
"filename": "fidlbolt.fidl",
"line": 44,
"column": 8,
"length": 6
},
"has_request": false,
"has_response": true,
"maybe_response": [],
"maybe_response_type_shape_v1": {
"inline_size": 16,
"alignment": 8,
"depth": 0,
"max_handles": 0,
"max_out_of_line": 0,
"has_padding": false,
"has_flexible_envelope": false
},
"maybe_response_type_shape_v2": {
"inline_size": 16,
"alignment": 8,
"depth": 0,
"max_handles": 0,
"max_out_of_line": 0,
"has_padding": false,
"has_flexible_envelope": false
},
"is_composed": false,
"has_error": false
}
]
}
],
"service_declarations": [],
"struct_declarations": [
{
"name": "fidl.examples.echo/EchoEchoStringRequest",
"naming_context": [
"Echo",
"EchoString",
"Request"
],
"location": {
"filename": "fidlbolt.fidl",
"line": 34,
"column": 16,
"length": 45
},
"members": [
{
"type": {
"kind": "string",
"nullable": true,
"type_shape_v1": {
"inline_size": 16,
"alignment": 8,
"depth": 1,
"max_handles": 0,
"max_out_of_line": 4294967295,
"has_padding": true,
"has_flexible_envelope": false
},
"type_shape_v2": {
"inline_size": 16,
"alignment": 8,
"depth": 1,
"max_handles": 0,
"max_out_of_line": 4294967295,
"has_padding": true,
"has_flexible_envelope": false
}
},
"name": "value",
"location": {
"filename": "fidlbolt.fidl",
"line": 35,
"column": 9,
"length": 5
},
"field_shape_v1": {
"offset": 0,
"padding": 0
},
"field_shape_v2": {
"offset": 0,
"padding": 0
}
}
],
"resource": false,
"type_shape_v1": {
"inline_size": 16,
"alignment": 8,
"depth": 1,
"max_handles": 0,
"max_out_of_line": 4294967295,
"has_padding": true,
"has_flexible_envelope": false
},
"type_shape_v2": {
"inline_size": 16,
"alignment": 8,
"depth": 1,
"max_handles": 0,
"max_out_of_line": 4294967295,
"has_padding": true,
"has_flexible_envelope": false
}
},
{
"name": "fidl.examples.echo/EchoEchoStringTopResponse",
"naming_context": [
"Echo",
"EchoString",
"Response"
],
"location": {
"filename": "fidlbolt.fidl",
"line": 36,
"column": 12,
"length": 48
},
"members": [
{
"type": {
"kind": "string",
"nullable": true,
"type_shape_v1": {
"inline_size": 16,
"alignment": 8,
"depth": 1,
"max_handles": 0,
"max_out_of_line": 4294967295,
"has_padding": true,
"has_flexible_envelope": false
},
"type_shape_v2": {
"inline_size": 16,
"alignment": 8,
"depth": 1,
"max_handles": 0,
"max_out_of_line": 4294967295,
"has_padding": true,
"has_flexible_envelope": false
}
},
"name": "response",
"location": {
"filename": "fidlbolt.fidl",
"line": 37,
"column": 9,
"length": 8
},
"field_shape_v1": {
"offset": 0,
"padding": 0
},
"field_shape_v2": {
"offset": 0,
"padding": 0
}
}
],
"resource": false,
"type_shape_v1": {
"inline_size": 16,
"alignment": 8,
"depth": 1,
"max_handles": 0,
"max_out_of_line": 4294967295,
"has_padding": true,
"has_flexible_envelope": false
},
"type_shape_v2": {
"inline_size": 16,
"alignment": 8,
"depth": 1,
"max_handles": 0,
"max_out_of_line": 4294967295,
"has_padding": true,
"has_flexible_envelope": false
}
},
{
"name": "fidl.examples.echo/EchoEchoHandleRequest",
"naming_context": [
"Echo",
"EchoHandle",
"Request"
],
"location": {
"filename": "fidlbolt.fidl",
"line": 39,
"column": 16,
"length": 49
},
"members": [
{
"type": {
"kind": "handle",
"obj_type": 0,
"subtype": "handle",
"rights": 2147483648,
"nullable": false,
"type_shape_v1": {
"inline_size": 4,
"alignment": 4,
"depth": 0,
"max_handles": 1,
"max_out_of_line": 0,
"has_padding": false,
"has_flexible_envelope": false
},
"type_shape_v2": {
"inline_size": 4,
"alignment": 4,
"depth": 0,
"max_handles": 1,
"max_out_of_line": 0,
"has_padding": false,
"has_flexible_envelope": false
}
},
"name": "handle",
"location": {
"filename": "fidlbolt.fidl",
"line": 40,
"column": 9,
"length": 6
},
"field_shape_v1": {
"offset": 0,
"padding": 4
},
"field_shape_v2": {
"offset": 0,
"padding": 4
}
}
],
"resource": true,
"type_shape_v1": {
"inline_size": 8,
"alignment": 8,
"depth": 0,
"max_handles": 1,
"max_out_of_line": 0,
"has_padding": true,
"has_flexible_envelope": false
},
"type_shape_v2": {
"inline_size": 8,
"alignment": 8,
"depth": 0,
"max_handles": 1,
"max_out_of_line": 0,
"has_padding": true,
"has_flexible_envelope": false
}
},
{
"name": "fidl.examples.echo/EchoEchoHandleTopResponse",
"naming_context": [
"Echo",
"EchoHandle",
"Response"
],
"location": {
"filename": "fidlbolt.fidl",
"line": 41,
"column": 12,
"length": 49
},
"members": [
{
"type": {
"kind": "handle",
"obj_type": 0,
"subtype": "handle",
"rights": 2147483648,
"nullable": false,
"type_shape_v1": {
"inline_size": 4,
"alignment": 4,
"depth": 0,
"max_handles": 1,
"max_out_of_line": 0,
"has_padding": false,
"has_flexible_envelope": false
},
"type_shape_v2": {
"inline_size": 4,
"alignment": 4,
"depth": 0,
"max_handles": 1,
"max_out_of_line": 0,
"has_padding": false,
"has_flexible_envelope": false
}
},
"name": "handle",
"location": {
"filename": "fidlbolt.fidl",
"line": 42,
"column": 9,
"length": 6
},
"field_shape_v1": {
"offset": 0,
"padding": 4
},
"field_shape_v2": {
"offset": 0,
"padding": 4
}
}
],
"resource": true,
"type_shape_v1": {
"inline_size": 8,
"alignment": 8,
"depth": 0,
"max_handles": 1,
"max_out_of_line": 0,
"has_padding": true,
"has_flexible_envelope": false
},
"type_shape_v2": {
"inline_size": 8,
"alignment": 8,
"depth": 0,
"max_handles": 1,
"max_out_of_line": 0,
"has_padding": true,
"has_flexible_envelope": false
}
}
],
"external_struct_declarations": [],
"table_declarations": [],
"union_declarations": [],
"type_alias_declarations": [],
"declaration_order": [
"fidl.examples.echo/EchoEchoHandleTopResponse",
"fidl.examples.echo/EchoEchoHandleRequest",
"fidl.examples.echo/EchoEchoStringTopResponse",
"fidl.examples.echo/EchoEchoStringRequest",
"fidl.examples.echo/Echo"
],
"declarations": {
"fidl.examples.echo/Echo": "protocol",
"fidl.examples.echo/EchoEchoStringRequest": "struct",
"fidl.examples.echo/EchoEchoStringTopResponse": "struct",
"fidl.examples.echo/EchoEchoHandleRequest": "struct",
"fidl.examples.echo/EchoEchoHandleTopResponse": "struct"
}
}
)";
static fidl_codec::LibraryLoader* test_library_loader = nullptr;
fidl_codec::LibraryLoader* GetTestLibraryLoader() {
if (test_library_loader == nullptr) {
test_library_loader = new fidl_codec::LibraryLoader();
fidl_codec::LibraryReadError err;
test_library_loader->AddContent(echo_service, &err);
}
return test_library_loader;
}