aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.travis.yml2
-rw-r--r--BUILD2
-rw-r--r--Makefile918
-rw-r--r--README.md3
-rw-r--r--build.json6
-rw-r--r--examples/pubsub/main.cc2
-rw-r--r--gRPC.podspec6
-rw-r--r--include/grpc++/client_context.h14
-rw-r--r--include/grpc++/create_channel.h2
-rw-r--r--include/grpc++/credentials.h35
-rw-r--r--include/grpc/support/subprocess.h2
-rw-r--r--src/core/channel/http_server_filter.c1
-rw-r--r--src/core/iomgr/tcp_posix.c4
-rw-r--r--src/core/profiling/basic_timers.c32
-rw-r--r--src/core/profiling/stap_timers.c13
-rw-r--r--src/core/profiling/timers.h41
-rw-r--r--src/core/security/security_connector.c2
-rw-r--r--src/core/security/security_connector.h4
-rw-r--r--src/core/support/subprocess_posix.c2
-rw-r--r--src/cpp/client/client_context.cc12
-rw-r--r--src/cpp/client/create_channel.cc2
-rw-r--r--src/cpp/client/insecure_credentials.cc7
-rw-r--r--src/cpp/client/secure_credentials.cc32
-rw-r--r--src/cpp/client/secure_credentials.h1
-rw-r--r--src/node/src/server.js29
-rw-r--r--src/node/test/surface_test.js224
-rw-r--r--src/objective-c/ProtoRPC/ProtoRPC.m4
-rw-r--r--src/objective-c/RxLibrary/GRXBufferedPipe.h59
-rw-r--r--src/objective-c/RxLibrary/GRXBufferedPipe.m146
-rw-r--r--src/objective-c/examples/Sample/Podfile1
-rw-r--r--src/objective-c/examples/Sample/RemoteTestClient/Empty.pb.h103
-rw-r--r--src/objective-c/examples/Sample/RemoteTestClient/Empty.pb.m179
-rw-r--r--src/objective-c/examples/Sample/RemoteTestClient/Empty.pbobjc.h33
-rw-r--r--src/objective-c/examples/Sample/RemoteTestClient/Empty.pbobjc.m59
-rw-r--r--src/objective-c/examples/Sample/RemoteTestClient/Messages.pb.h578
-rw-r--r--src/objective-c/examples/Sample/RemoteTestClient/Messages.pb.m2256
-rw-r--r--src/objective-c/examples/Sample/RemoteTestClient/Messages.pbobjc.h221
-rw-r--r--src/objective-c/examples/Sample/RemoteTestClient/Messages.pbobjc.m603
-rw-r--r--src/objective-c/examples/Sample/RemoteTestClient/RemoteTest.podspec20
-rw-r--r--src/objective-c/examples/Sample/RemoteTestClient/Test.pb.h167
-rw-r--r--src/objective-c/examples/Sample/RemoteTestClient/Test.pb.m163
-rw-r--r--src/objective-c/examples/Sample/RemoteTestClient/Test.pbobjc.h12
-rw-r--r--src/objective-c/examples/Sample/RemoteTestClient/Test.pbobjc.m9
-rw-r--r--src/objective-c/examples/Sample/RemoteTestClient/Test.pbrpc.h59
-rw-r--r--src/objective-c/examples/Sample/RemoteTestClient/Test.pbrpc.m96
-rw-r--r--src/objective-c/examples/Sample/RemoteTestClient/empty.proto6
-rw-r--r--src/objective-c/examples/Sample/RemoteTestClient/messages.proto40
-rw-r--r--src/objective-c/examples/Sample/RemoteTestClient/test.proto21
-rw-r--r--src/objective-c/examples/Sample/RouteGuideClient/RouteGuide.pbobjc.h134
-rw-r--r--src/objective-c/examples/Sample/RouteGuideClient/RouteGuide.pbobjc.m355
-rw-r--r--src/objective-c/examples/Sample/RouteGuideClient/RouteGuide.pbrpc.h43
-rw-r--r--src/objective-c/examples/Sample/RouteGuideClient/RouteGuide.pbrpc.m72
-rw-r--r--src/objective-c/examples/Sample/RouteGuideClient/Route_guide.pb.h387
-rw-r--r--src/objective-c/examples/Sample/RouteGuideClient/Route_guide.pb.m1435
-rw-r--r--src/objective-c/examples/Sample/RouteGuideClient/Route_guide.podspec19
-rw-r--r--src/objective-c/examples/Sample/RouteGuideClient/route_guide.proto37
-rw-r--r--src/objective-c/examples/Sample/Sample/ViewController.m37
-rw-r--r--src/objective-c/examples/Sample/SampleTests/RemoteProtoTests.m226
-rw-r--r--src/objective-c/examples/Sample/SampleTests/RemoteTests.m11
-rw-r--r--src/objective-c/examples/Sample/SampleTests/SampleTests.m30
-rw-r--r--src/python/README.md2
-rw-r--r--src/python/requirements.txt2
-rw-r--r--src/python/src/setup.py2
-rw-r--r--src/ruby/ext/grpc/extconf.rb25
-rw-r--r--src/ruby/ext/grpc/rb_byte_buffer.c2
-rw-r--r--src/ruby/ext/grpc/rb_byte_buffer.h3
-rw-r--r--src/ruby/ext/grpc/rb_call.c2
-rw-r--r--src/ruby/ext/grpc/rb_call.h3
-rw-r--r--src/ruby/ext/grpc/rb_channel.c2
-rw-r--r--src/ruby/ext/grpc/rb_channel.h3
-rw-r--r--src/ruby/ext/grpc/rb_channel_args.c3
-rw-r--r--src/ruby/ext/grpc/rb_channel_args.h3
-rw-r--r--src/ruby/ext/grpc/rb_completion_queue.h3
-rw-r--r--src/ruby/ext/grpc/rb_credentials.c2
-rw-r--r--src/ruby/ext/grpc/rb_credentials.h3
-rw-r--r--src/ruby/ext/grpc/rb_grpc.h3
-rw-r--r--src/ruby/ext/grpc/rb_server.c2
-rw-r--r--src/ruby/ext/grpc/rb_server.h3
-rw-r--r--src/ruby/ext/grpc/rb_server_credentials.c2
-rw-r--r--src/ruby/ext/grpc/rb_server_credentials.h3
-rw-r--r--test/core/end2end/fixtures/chttp2_socket_pair_with_grpc_trace.c156
-rwxr-xr-xtest/core/end2end/gen_build_json.py1
-rw-r--r--test/cpp/client/credentials_test.cc3
-rw-r--r--test/cpp/end2end/end2end_test.cc112
-rw-r--r--test/cpp/interop/client_helper.cc6
-rw-r--r--test/cpp/util/create_test_channel.cc6
-rw-r--r--test/cpp/util/create_test_channel.h2
-rw-r--r--test/cpp/util/fake_credentials.cc58
-rw-r--r--test/cpp/util/fake_credentials.h (renamed from include/grpc/grpc_http.h)40
-rw-r--r--test/cpp/util/grpc_cli.cc2
-rw-r--r--test/cpp/util/messages.proto1
m---------third_party/protobuf0
-rwxr-xr-xtools/dockerfile/grpc_node/build.sh8
-rw-r--r--tools/dockerfile/grpc_python_base/Dockerfile2
-rwxr-xr-xtools/dockerfile/grpc_ruby/build.sh8
-rwxr-xr-xtools/gce_setup/grpc_docker.sh19
-rwxr-xr-xtools/run_tests/build_python.sh2
-rwxr-xr-xtools/run_tests/build_ruby.sh13
-rwxr-xr-xtools/run_tests/run_sanity.sh2
-rwxr-xr-xtools/run_tests/run_tests.py2
-rw-r--r--tools/run_tests/tests.json495
-rw-r--r--vsprojects/Grpc.mak393
-rw-r--r--vsprojects/grpc/grpc.vcxproj1
-rw-r--r--vsprojects/grpc/grpc.vcxproj.filters3
-rw-r--r--vsprojects/grpc_unsecure/grpc_unsecure.vcxproj1
-rw-r--r--vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters3
106 files changed, 4737 insertions, 5694 deletions
diff --git a/.travis.yml b/.travis.yml
index c1086c1765..ee5f50579b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -32,7 +32,7 @@ script:
- if [ ! -z "$USE_GCC" ] ; then export CC=gcc-$USE_GCC ; export CXX=g++-$USE_GCC ; fi
- ./tools/run_tests/run_tests.py -l $TEST -t -j 16 -c $CONFIG -s 4.0
after_success:
- - if [ "$CONFIG" = "gcov" ] ; then coveralls --exclude third_party --exclude gens -b. --gcov-options '\-p' ; fi
+ - if [ "$CONFIG" = "gcov" ] ; then coveralls --exclude third_party --exclude gens --exclude test --exclude src/compiler -b. --gcov-options '\-p' ; fi
notifications:
email: false
webhooks:
diff --git a/BUILD b/BUILD
index 5108f365b7..f7fdd44981 100644
--- a/BUILD
+++ b/BUILD
@@ -358,7 +358,6 @@ cc_library(
"include/grpc/byte_buffer.h",
"include/grpc/byte_buffer_reader.h",
"include/grpc/grpc.h",
- "include/grpc/grpc_http.h",
"include/grpc/status.h",
],
includes = [
@@ -569,7 +568,6 @@ cc_library(
"include/grpc/byte_buffer.h",
"include/grpc/byte_buffer_reader.h",
"include/grpc/grpc.h",
- "include/grpc/grpc_http.h",
"include/grpc/status.h",
],
includes = [
diff --git a/Makefile b/Makefile
index b0c51ffa81..f116f2ed1b 100644
--- a/Makefile
+++ b/Makefile
@@ -308,7 +308,7 @@ E = @echo
Q = @
endif
-VERSION = 0.8.0.0
+VERSION = 0.9.0.0
CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES))
CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS)
@@ -893,6 +893,34 @@ chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test: $(BINDIR)/$(CON
chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_test
chttp2_socket_pair_one_byte_at_a_time_simple_request_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_test
chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test
+chttp2_socket_pair_with_grpc_trace_bad_hostname_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_test
+chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test
+chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test
+chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test
+chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test
+chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test
+chttp2_socket_pair_with_grpc_trace_census_simple_request_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_test
+chttp2_socket_pair_with_grpc_trace_disappearing_server_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_disappearing_server_test
+chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test
+chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test
+chttp2_socket_pair_with_grpc_trace_empty_batch_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_test
+chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test
+chttp2_socket_pair_with_grpc_trace_invoke_large_request_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_test
+chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test
+chttp2_socket_pair_with_grpc_trace_max_message_length_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_test
+chttp2_socket_pair_with_grpc_trace_no_op_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_test
+chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test
+chttp2_socket_pair_with_grpc_trace_registered_call_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_test
+chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test
+chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test
+chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test
+chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test
+chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test
+chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test
+chttp2_socket_pair_with_grpc_trace_request_with_payload_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_test
+chttp2_socket_pair_with_grpc_trace_simple_delayed_request_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_delayed_request_test
+chttp2_socket_pair_with_grpc_trace_simple_request_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_test
+chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test
chttp2_fullstack_bad_hostname_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_fullstack_bad_hostname_unsecure_test
chttp2_fullstack_cancel_after_accept_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_unsecure_test
chttp2_fullstack_cancel_after_accept_and_writes_closed_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_and_writes_closed_unsecure_test
@@ -1001,6 +1029,33 @@ chttp2_socket_pair_one_byte_at_a_time_request_with_payload_unsecure_test: $(BIND
chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_unsecure_test
chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test
chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test
+chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test
+chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test
+chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test
+chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test
+chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test
+chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test
+chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test
+chttp2_socket_pair_with_grpc_trace_disappearing_server_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_disappearing_server_unsecure_test
+chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test
+chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test
+chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test
+chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test
+chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test
+chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test
+chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test
+chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test
+chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test
+chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test
+chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test
+chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test
+chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test
+chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test
+chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test
+chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test
+chttp2_socket_pair_with_grpc_trace_simple_delayed_request_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_delayed_request_unsecure_test
+chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test
+chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test: $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test
run_dep_checks:
$(OPENSSL_ALPN_CHECK_CMD) || true
@@ -1087,13 +1142,13 @@ plugins: $(PROTOC_PLUGINS)
privatelibs: privatelibs_c privatelibs_cxx
-privatelibs_c: $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_fake_security.a $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_fullstack.a $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_fullstack_uds_posix.a $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_simple_ssl_fullstack.a $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_simple_ssl_with_oauth2_fullstack.a $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair.a $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_one_byte_at_a_time.a $(LIBDIR)/$(CONFIG)/libend2end_test_bad_hostname.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_after_accept.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_after_accept_and_writes_closed.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_after_invoke.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_before_invoke.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_in_a_vacuum.a $(LIBDIR)/$(CONFIG)/libend2end_test_census_simple_request.a $(LIBDIR)/$(CONFIG)/libend2end_test_disappearing_server.a $(LIBDIR)/$(CONFIG)/libend2end_test_early_server_shutdown_finishes_inflight_calls.a $(LIBDIR)/$(CONFIG)/libend2end_test_early_server_shutdown_finishes_tags.a $(LIBDIR)/$(CONFIG)/libend2end_test_empty_batch.a $(LIBDIR)/$(CONFIG)/libend2end_test_graceful_server_shutdown.a $(LIBDIR)/$(CONFIG)/libend2end_test_invoke_large_request.a $(LIBDIR)/$(CONFIG)/libend2end_test_max_concurrent_streams.a $(LIBDIR)/$(CONFIG)/libend2end_test_max_message_length.a $(LIBDIR)/$(CONFIG)/libend2end_test_no_op.a $(LIBDIR)/$(CONFIG)/libend2end_test_ping_pong_streaming.a $(LIBDIR)/$(CONFIG)/libend2end_test_registered_call.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_binary_metadata_and_payload.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_metadata_and_payload.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_payload.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_payload_and_call_creds.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_trailing_metadata_and_payload.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_with_large_metadata.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_with_payload.a $(LIBDIR)/$(CONFIG)/libend2end_test_simple_delayed_request.a $(LIBDIR)/$(CONFIG)/libend2end_test_simple_request.a $(LIBDIR)/$(CONFIG)/libend2end_test_simple_request_with_high_initial_sequence_number.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a
+privatelibs_c: $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_fake_security.a $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_fullstack.a $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_fullstack_uds_posix.a $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_simple_ssl_fullstack.a $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_simple_ssl_with_oauth2_fullstack.a $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair.a $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_one_byte_at_a_time.a $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_bad_hostname.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_after_accept.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_after_accept_and_writes_closed.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_after_invoke.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_before_invoke.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_in_a_vacuum.a $(LIBDIR)/$(CONFIG)/libend2end_test_census_simple_request.a $(LIBDIR)/$(CONFIG)/libend2end_test_disappearing_server.a $(LIBDIR)/$(CONFIG)/libend2end_test_early_server_shutdown_finishes_inflight_calls.a $(LIBDIR)/$(CONFIG)/libend2end_test_early_server_shutdown_finishes_tags.a $(LIBDIR)/$(CONFIG)/libend2end_test_empty_batch.a $(LIBDIR)/$(CONFIG)/libend2end_test_graceful_server_shutdown.a $(LIBDIR)/$(CONFIG)/libend2end_test_invoke_large_request.a $(LIBDIR)/$(CONFIG)/libend2end_test_max_concurrent_streams.a $(LIBDIR)/$(CONFIG)/libend2end_test_max_message_length.a $(LIBDIR)/$(CONFIG)/libend2end_test_no_op.a $(LIBDIR)/$(CONFIG)/libend2end_test_ping_pong_streaming.a $(LIBDIR)/$(CONFIG)/libend2end_test_registered_call.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_binary_metadata_and_payload.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_metadata_and_payload.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_payload.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_payload_and_call_creds.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_trailing_metadata_and_payload.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_with_large_metadata.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_with_payload.a $(LIBDIR)/$(CONFIG)/libend2end_test_simple_delayed_request.a $(LIBDIR)/$(CONFIG)/libend2end_test_simple_request.a $(LIBDIR)/$(CONFIG)/libend2end_test_simple_request_with_high_initial_sequence_number.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a
privatelibs_cxx: $(LIBDIR)/$(CONFIG)/libgrpc++_test_config.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libinterop_client_helper.a $(LIBDIR)/$(CONFIG)/libinterop_client_main.a $(LIBDIR)/$(CONFIG)/libinterop_server_helper.a $(LIBDIR)/$(CONFIG)/libinterop_server_main.a $(LIBDIR)/$(CONFIG)/libqps.a
buildtests: buildtests_c buildtests_cxx
-buildtests_c: privatelibs_c $(BINDIR)/$(CONFIG)/alarm_heap_test $(BINDIR)/$(CONFIG)/alarm_list_test $(BINDIR)/$(CONFIG)/alarm_test $(BINDIR)/$(CONFIG)/alpn_test $(BINDIR)/$(CONFIG)/bin_encoder_test $(BINDIR)/$(CONFIG)/census_hash_table_test $(BINDIR)/$(CONFIG)/census_statistics_multiple_writers_circular_buffer_test $(BINDIR)/$(CONFIG)/census_statistics_multiple_writers_test $(BINDIR)/$(CONFIG)/census_statistics_performance_test $(BINDIR)/$(CONFIG)/census_statistics_quick_test $(BINDIR)/$(CONFIG)/census_statistics_small_log_test $(BINDIR)/$(CONFIG)/census_stub_test $(BINDIR)/$(CONFIG)/census_window_stats_test $(BINDIR)/$(CONFIG)/chttp2_status_conversion_test $(BINDIR)/$(CONFIG)/chttp2_stream_encoder_test $(BINDIR)/$(CONFIG)/chttp2_stream_map_test $(BINDIR)/$(CONFIG)/dualstack_socket_test $(BINDIR)/$(CONFIG)/fd_posix_test $(BINDIR)/$(CONFIG)/fling_client $(BINDIR)/$(CONFIG)/fling_server $(BINDIR)/$(CONFIG)/fling_stream_test $(BINDIR)/$(CONFIG)/fling_test $(BINDIR)/$(CONFIG)/gpr_cancellable_test $(BINDIR)/$(CONFIG)/gpr_cmdline_test $(BINDIR)/$(CONFIG)/gpr_env_test $(BINDIR)/$(CONFIG)/gpr_file_test $(BINDIR)/$(CONFIG)/gpr_histogram_test $(BINDIR)/$(CONFIG)/gpr_host_port_test $(BINDIR)/$(CONFIG)/gpr_log_test $(BINDIR)/$(CONFIG)/gpr_slice_buffer_test $(BINDIR)/$(CONFIG)/gpr_slice_test $(BINDIR)/$(CONFIG)/gpr_string_test $(BINDIR)/$(CONFIG)/gpr_sync_test $(BINDIR)/$(CONFIG)/gpr_thd_test $(BINDIR)/$(CONFIG)/gpr_time_test $(BINDIR)/$(CONFIG)/gpr_tls_test $(BINDIR)/$(CONFIG)/gpr_useful_test $(BINDIR)/$(CONFIG)/grpc_base64_test $(BINDIR)/$(CONFIG)/grpc_byte_buffer_reader_test $(BINDIR)/$(CONFIG)/grpc_channel_stack_test $(BINDIR)/$(CONFIG)/grpc_completion_queue_test $(BINDIR)/$(CONFIG)/grpc_credentials_test $(BINDIR)/$(CONFIG)/grpc_json_token_test $(BINDIR)/$(CONFIG)/grpc_stream_op_test $(BINDIR)/$(CONFIG)/hpack_parser_test $(BINDIR)/$(CONFIG)/hpack_table_test $(BINDIR)/$(CONFIG)/httpcli_format_request_test $(BINDIR)/$(CONFIG)/httpcli_parser_test $(BINDIR)/$(CONFIG)/httpcli_test $(BINDIR)/$(CONFIG)/json_rewrite $(BINDIR)/$(CONFIG)/json_rewrite_test $(BINDIR)/$(CONFIG)/json_test $(BINDIR)/$(CONFIG)/lame_client_test $(BINDIR)/$(CONFIG)/message_compress_test $(BINDIR)/$(CONFIG)/multi_init_test $(BINDIR)/$(CONFIG)/murmur_hash_test $(BINDIR)/$(CONFIG)/no_server_test $(BINDIR)/$(CONFIG)/poll_kick_posix_test $(BINDIR)/$(CONFIG)/resolve_address_test $(BINDIR)/$(CONFIG)/secure_endpoint_test $(BINDIR)/$(CONFIG)/sockaddr_utils_test $(BINDIR)/$(CONFIG)/tcp_client_posix_test $(BINDIR)/$(CONFIG)/tcp_posix_test $(BINDIR)/$(CONFIG)/tcp_server_posix_test $(BINDIR)/$(CONFIG)/time_averaged_stats_test $(BINDIR)/$(CONFIG)/time_test $(BINDIR)/$(CONFIG)/timeout_encoding_test $(BINDIR)/$(CONFIG)/timers_test $(BINDIR)/$(CONFIG)/transport_metadata_test $(BINDIR)/$(CONFIG)/transport_security_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test
+buildtests_c: privatelibs_c $(BINDIR)/$(CONFIG)/alarm_heap_test $(BINDIR)/$(CONFIG)/alarm_list_test $(BINDIR)/$(CONFIG)/alarm_test $(BINDIR)/$(CONFIG)/alpn_test $(BINDIR)/$(CONFIG)/bin_encoder_test $(BINDIR)/$(CONFIG)/census_hash_table_test $(BINDIR)/$(CONFIG)/census_statistics_multiple_writers_circular_buffer_test $(BINDIR)/$(CONFIG)/census_statistics_multiple_writers_test $(BINDIR)/$(CONFIG)/census_statistics_performance_test $(BINDIR)/$(CONFIG)/census_statistics_quick_test $(BINDIR)/$(CONFIG)/census_statistics_small_log_test $(BINDIR)/$(CONFIG)/census_stub_test $(BINDIR)/$(CONFIG)/census_window_stats_test $(BINDIR)/$(CONFIG)/chttp2_status_conversion_test $(BINDIR)/$(CONFIG)/chttp2_stream_encoder_test $(BINDIR)/$(CONFIG)/chttp2_stream_map_test $(BINDIR)/$(CONFIG)/dualstack_socket_test $(BINDIR)/$(CONFIG)/fd_posix_test $(BINDIR)/$(CONFIG)/fling_client $(BINDIR)/$(CONFIG)/fling_server $(BINDIR)/$(CONFIG)/fling_stream_test $(BINDIR)/$(CONFIG)/fling_test $(BINDIR)/$(CONFIG)/gpr_cancellable_test $(BINDIR)/$(CONFIG)/gpr_cmdline_test $(BINDIR)/$(CONFIG)/gpr_env_test $(BINDIR)/$(CONFIG)/gpr_file_test $(BINDIR)/$(CONFIG)/gpr_histogram_test $(BINDIR)/$(CONFIG)/gpr_host_port_test $(BINDIR)/$(CONFIG)/gpr_log_test $(BINDIR)/$(CONFIG)/gpr_slice_buffer_test $(BINDIR)/$(CONFIG)/gpr_slice_test $(BINDIR)/$(CONFIG)/gpr_string_test $(BINDIR)/$(CONFIG)/gpr_sync_test $(BINDIR)/$(CONFIG)/gpr_thd_test $(BINDIR)/$(CONFIG)/gpr_time_test $(BINDIR)/$(CONFIG)/gpr_tls_test $(BINDIR)/$(CONFIG)/gpr_useful_test $(BINDIR)/$(CONFIG)/grpc_base64_test $(BINDIR)/$(CONFIG)/grpc_byte_buffer_reader_test $(BINDIR)/$(CONFIG)/grpc_channel_stack_test $(BINDIR)/$(CONFIG)/grpc_completion_queue_test $(BINDIR)/$(CONFIG)/grpc_credentials_test $(BINDIR)/$(CONFIG)/grpc_json_token_test $(BINDIR)/$(CONFIG)/grpc_stream_op_test $(BINDIR)/$(CONFIG)/hpack_parser_test $(BINDIR)/$(CONFIG)/hpack_table_test $(BINDIR)/$(CONFIG)/httpcli_format_request_test $(BINDIR)/$(CONFIG)/httpcli_parser_test $(BINDIR)/$(CONFIG)/httpcli_test $(BINDIR)/$(CONFIG)/json_rewrite $(BINDIR)/$(CONFIG)/json_rewrite_test $(BINDIR)/$(CONFIG)/json_test $(BINDIR)/$(CONFIG)/lame_client_test $(BINDIR)/$(CONFIG)/message_compress_test $(BINDIR)/$(CONFIG)/multi_init_test $(BINDIR)/$(CONFIG)/murmur_hash_test $(BINDIR)/$(CONFIG)/no_server_test $(BINDIR)/$(CONFIG)/poll_kick_posix_test $(BINDIR)/$(CONFIG)/resolve_address_test $(BINDIR)/$(CONFIG)/secure_endpoint_test $(BINDIR)/$(CONFIG)/sockaddr_utils_test $(BINDIR)/$(CONFIG)/tcp_client_posix_test $(BINDIR)/$(CONFIG)/tcp_posix_test $(BINDIR)/$(CONFIG)/tcp_server_posix_test $(BINDIR)/$(CONFIG)/time_averaged_stats_test $(BINDIR)/$(CONFIG)/time_test $(BINDIR)/$(CONFIG)/timeout_encoding_test $(BINDIR)/$(CONFIG)/timers_test $(BINDIR)/$(CONFIG)/transport_metadata_test $(BINDIR)/$(CONFIG)/transport_security_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test
buildtests_cxx: privatelibs_cxx $(BINDIR)/$(CONFIG)/async_end2end_test $(BINDIR)/$(CONFIG)/async_streaming_ping_pong_test $(BINDIR)/$(CONFIG)/async_unary_ping_pong_test $(BINDIR)/$(CONFIG)/channel_arguments_test $(BINDIR)/$(CONFIG)/cli_call_test $(BINDIR)/$(CONFIG)/credentials_test $(BINDIR)/$(CONFIG)/cxx_time_test $(BINDIR)/$(CONFIG)/end2end_test $(BINDIR)/$(CONFIG)/generic_end2end_test $(BINDIR)/$(CONFIG)/grpc_cli $(BINDIR)/$(CONFIG)/interop_client $(BINDIR)/$(CONFIG)/interop_server $(BINDIR)/$(CONFIG)/interop_test $(BINDIR)/$(CONFIG)/mock_test $(BINDIR)/$(CONFIG)/status_test $(BINDIR)/$(CONFIG)/sync_streaming_ping_pong_test $(BINDIR)/$(CONFIG)/sync_unary_ping_pong_test $(BINDIR)/$(CONFIG)/thread_pool_test $(BINDIR)/$(CONFIG)/thread_stress_test
@@ -1624,6 +1679,62 @@ test_c: buildtests_c
$(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_test || ( echo test chttp2_socket_pair_one_byte_at_a_time_simple_request_test failed ; exit 1 )
$(E) "[RUN] Testing chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test"
$(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test || ( echo test chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_bad_hostname_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_test || ( echo test chttp2_socket_pair_with_grpc_trace_bad_hostname_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test || ( echo test chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test || ( echo test chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test || ( echo test chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test || ( echo test chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test || ( echo test chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_census_simple_request_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_test || ( echo test chttp2_socket_pair_with_grpc_trace_census_simple_request_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_disappearing_server_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_disappearing_server_test || ( echo test chttp2_socket_pair_with_grpc_trace_disappearing_server_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test || ( echo test chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test || ( echo test chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_empty_batch_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_test || ( echo test chttp2_socket_pair_with_grpc_trace_empty_batch_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test || ( echo test chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_invoke_large_request_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_test || ( echo test chttp2_socket_pair_with_grpc_trace_invoke_large_request_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test || ( echo test chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_max_message_length_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_test || ( echo test chttp2_socket_pair_with_grpc_trace_max_message_length_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_no_op_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_test || ( echo test chttp2_socket_pair_with_grpc_trace_no_op_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test || ( echo test chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_registered_call_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_test || ( echo test chttp2_socket_pair_with_grpc_trace_registered_call_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test || ( echo test chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test || ( echo test chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test || ( echo test chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test || ( echo test chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test || ( echo test chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test || ( echo test chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_request_with_payload_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_test || ( echo test chttp2_socket_pair_with_grpc_trace_request_with_payload_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_simple_delayed_request_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_delayed_request_test || ( echo test chttp2_socket_pair_with_grpc_trace_simple_delayed_request_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_simple_request_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_test || ( echo test chttp2_socket_pair_with_grpc_trace_simple_request_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test || ( echo test chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test failed ; exit 1 )
$(E) "[RUN] Testing chttp2_fullstack_bad_hostname_unsecure_test"
$(Q) $(BINDIR)/$(CONFIG)/chttp2_fullstack_bad_hostname_unsecure_test || ( echo test chttp2_fullstack_bad_hostname_unsecure_test failed ; exit 1 )
$(E) "[RUN] Testing chttp2_fullstack_cancel_after_accept_unsecure_test"
@@ -1840,6 +1951,60 @@ test_c: buildtests_c
$(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test || ( echo test chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test failed ; exit 1 )
$(E) "[RUN] Testing chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test"
$(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test || ( echo test chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_disappearing_server_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_disappearing_server_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_disappearing_server_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_simple_delayed_request_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_delayed_request_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_simple_delayed_request_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test"
+ $(Q) $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test || ( echo test chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test failed ; exit 1 )
test_cxx: buildtests_cxx
@@ -2573,7 +2738,6 @@ PUBLIC_HEADERS_C += \
include/grpc/byte_buffer.h \
include/grpc/byte_buffer_reader.h \
include/grpc/grpc.h \
- include/grpc/grpc_http.h \
include/grpc/status.h \
LIBGRPC_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPC_SRC))))
@@ -2823,7 +2987,6 @@ PUBLIC_HEADERS_C += \
include/grpc/byte_buffer.h \
include/grpc/byte_buffer_reader.h \
include/grpc/grpc.h \
- include/grpc/grpc_http.h \
include/grpc/status.h \
LIBGRPC_UNSECURE_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPC_UNSECURE_SRC))))
@@ -3049,6 +3212,7 @@ LIBGRPC++_TEST_UTIL_SRC = \
$(GENDIR)/test/cpp/util/echo_duplicate.pb.cc $(GENDIR)/test/cpp/util/echo_duplicate.grpc.pb.cc \
test/cpp/util/cli_call.cc \
test/cpp/util/create_test_channel.cc \
+ test/cpp/util/fake_credentials.cc \
LIBGRPC++_TEST_UTIL_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPC++_TEST_UTIL_SRC))))
@@ -3094,6 +3258,7 @@ endif
endif
$(OBJDIR)/$(CONFIG)/test/cpp/util/cli_call.o: $(GENDIR)/test/cpp/util/messages.pb.cc $(GENDIR)/test/cpp/util/messages.grpc.pb.cc $(GENDIR)/test/cpp/util/echo.pb.cc $(GENDIR)/test/cpp/util/echo.grpc.pb.cc $(GENDIR)/test/cpp/util/echo_duplicate.pb.cc $(GENDIR)/test/cpp/util/echo_duplicate.grpc.pb.cc
$(OBJDIR)/$(CONFIG)/test/cpp/util/create_test_channel.o: $(GENDIR)/test/cpp/util/messages.pb.cc $(GENDIR)/test/cpp/util/messages.grpc.pb.cc $(GENDIR)/test/cpp/util/echo.pb.cc $(GENDIR)/test/cpp/util/echo.grpc.pb.cc $(GENDIR)/test/cpp/util/echo_duplicate.pb.cc $(GENDIR)/test/cpp/util/echo_duplicate.grpc.pb.cc
+$(OBJDIR)/$(CONFIG)/test/cpp/util/fake_credentials.o: $(GENDIR)/test/cpp/util/messages.pb.cc $(GENDIR)/test/cpp/util/messages.grpc.pb.cc $(GENDIR)/test/cpp/util/echo.pb.cc $(GENDIR)/test/cpp/util/echo.grpc.pb.cc $(GENDIR)/test/cpp/util/echo_duplicate.pb.cc $(GENDIR)/test/cpp/util/echo_duplicate.grpc.pb.cc
LIBGRPC++_UNSECURE_SRC = \
@@ -3824,6 +3989,29 @@ ifneq ($(NO_DEPS),true)
endif
+LIBEND2END_FIXTURE_CHTTP2_SOCKET_PAIR_WITH_GRPC_TRACE_SRC = \
+ test/core/end2end/fixtures/chttp2_socket_pair_with_grpc_trace.c \
+
+
+LIBEND2END_FIXTURE_CHTTP2_SOCKET_PAIR_WITH_GRPC_TRACE_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBEND2END_FIXTURE_CHTTP2_SOCKET_PAIR_WITH_GRPC_TRACE_SRC))))
+
+$(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a: $(ZLIB_DEP) $(LIBEND2END_FIXTURE_CHTTP2_SOCKET_PAIR_WITH_GRPC_TRACE_OBJS)
+ $(E) "[AR] Creating $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) rm -f $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a
+ $(Q) $(AR) rcs $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBEND2END_FIXTURE_CHTTP2_SOCKET_PAIR_WITH_GRPC_TRACE_OBJS)
+ifeq ($(SYSTEM),Darwin)
+ $(Q) ranlib $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a
+endif
+
+
+
+
+ifneq ($(NO_DEPS),true)
+-include $(LIBEND2END_FIXTURE_CHTTP2_SOCKET_PAIR_WITH_GRPC_TRACE_OBJS:.o=.dep)
+endif
+
+
LIBEND2END_TEST_BAD_HOSTNAME_SRC = \
test/core/end2end/tests/bad_hostname.c \
@@ -11404,6 +11592,510 @@ endif
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_bad_hostname.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_bad_hostname.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_after_accept.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_after_accept.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_after_accept_and_writes_closed.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_after_accept_and_writes_closed.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_after_invoke.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_after_invoke.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_before_invoke.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_before_invoke.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_in_a_vacuum.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_in_a_vacuum.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_census_simple_request.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_census_simple_request.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_disappearing_server_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_disappearing_server_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_disappearing_server.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_disappearing_server.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_disappearing_server_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_early_server_shutdown_finishes_inflight_calls.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_early_server_shutdown_finishes_inflight_calls.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_early_server_shutdown_finishes_tags.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_early_server_shutdown_finishes_tags.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_empty_batch.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_empty_batch.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_graceful_server_shutdown.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_graceful_server_shutdown.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_invoke_large_request.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_invoke_large_request.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_max_concurrent_streams.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_max_concurrent_streams.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_max_message_length.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_max_message_length.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_no_op.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_no_op.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_ping_pong_streaming.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_ping_pong_streaming.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_registered_call.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_registered_call.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_binary_metadata_and_payload.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_binary_metadata_and_payload.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_metadata_and_payload.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_metadata_and_payload.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_payload.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_payload.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_payload_and_call_creds.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_payload_and_call_creds.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_trailing_metadata_and_payload.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_trailing_metadata_and_payload.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_with_large_metadata.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_with_large_metadata.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_with_payload.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_with_payload.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_delayed_request_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_delayed_request_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_simple_delayed_request.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_simple_delayed_request.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_delayed_request_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_simple_request.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_simple_request.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_test
+
+endif
+
+
+
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_simple_request_with_high_initial_sequence_number.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_simple_request_with_high_initial_sequence_number.a $(LIBDIR)/$(CONFIG)/libend2end_certs.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test
+
+endif
+
+
+
+
$(BINDIR)/$(CONFIG)/chttp2_fullstack_bad_hostname_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_fullstack.a $(LIBDIR)/$(CONFIG)/libend2end_test_bad_hostname.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
@@ -12268,6 +12960,222 @@ $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_with_hi
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_bad_hostname.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_bad_hostname.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_after_accept.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_after_accept.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_after_accept_and_writes_closed.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_after_accept_and_writes_closed.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_after_invoke.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_after_invoke.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_before_invoke.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_before_invoke.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_in_a_vacuum.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_cancel_in_a_vacuum.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_census_simple_request.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_census_simple_request.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_disappearing_server_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_disappearing_server.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_disappearing_server.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_disappearing_server_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_early_server_shutdown_finishes_inflight_calls.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_early_server_shutdown_finishes_inflight_calls.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_early_server_shutdown_finishes_tags.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_early_server_shutdown_finishes_tags.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_empty_batch.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_empty_batch.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_graceful_server_shutdown.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_graceful_server_shutdown.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_invoke_large_request.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_invoke_large_request.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_max_concurrent_streams.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_max_concurrent_streams.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_max_message_length.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_max_message_length.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_no_op.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_no_op.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_ping_pong_streaming.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_ping_pong_streaming.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_registered_call.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_registered_call.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_binary_metadata_and_payload.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_binary_metadata_and_payload.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_metadata_and_payload.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_metadata_and_payload.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_payload.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_payload.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_trailing_metadata_and_payload.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_response_with_trailing_metadata_and_payload.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_with_large_metadata.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_with_large_metadata.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_with_payload.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_request_with_payload.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_delayed_request_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_simple_delayed_request.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_simple_delayed_request.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_delayed_request_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_simple_request.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_simple_request.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test
+
+
+
+
+$(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test: $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_simple_request_with_high_initial_sequence_number.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libend2end_fixture_chttp2_socket_pair_with_grpc_trace.a $(LIBDIR)/$(CONFIG)/libend2end_test_simple_request_with_high_initial_sequence_number.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test
+
+
+
+
diff --git a/README.md b/README.md
index bba316cee3..f407bc306f 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,5 @@
[![Build Status](https://travis-ci.org/grpc/grpc.svg?branch=master)](https://travis-ci.org/grpc/grpc)
+[![Coverage Status](https://img.shields.io/coveralls/grpc/grpc.svg)](https://coveralls.io/r/grpc/grpc?branch=master)
[gRPC - An RPC library and framework](http://github.com/grpc/grpc)
===================================
@@ -37,7 +38,7 @@ Libraries in different languages are in different state of development. We are s
* C++ Library: [src/cpp] (src/cpp) : Early adopter ready - Alpha.
* Ruby Library: [src/ruby] (src/ruby) : Early adopter ready - Alpha.
* NodeJS Library: [src/node] (src/node) : Early adopter ready - Alpha.
- * Python Library: [src/python] (src/python) : Usable with limitations - Alpha.
+ * Python Library: [src/python] (src/python) : Early adopter ready - Alpha.
* PHP Library: [src/php] (src/php) : Pre-Alpha.
* C# Library: [src/csharp] (src/csharp) : Pre-Alpha.
* Objective-C Library: [src/objective-c] (src/objective-c): Pre-Alpha.
diff --git a/build.json b/build.json
index b6773423a9..9d41bfc00d 100644
--- a/build.json
+++ b/build.json
@@ -6,7 +6,7 @@
"#": "The public version number of the library.",
"version": {
"major": 0,
- "minor": 8,
+ "minor": 9,
"micro": 0,
"build": 0
}
@@ -88,7 +88,6 @@
"include/grpc/byte_buffer.h",
"include/grpc/byte_buffer_reader.h",
"include/grpc/grpc.h",
- "include/grpc/grpc_http.h",
"include/grpc/status.h"
],
"headers": [
@@ -547,7 +546,8 @@
"test/cpp/util/echo.proto",
"test/cpp/util/echo_duplicate.proto",
"test/cpp/util/cli_call.cc",
- "test/cpp/util/create_test_channel.cc"
+ "test/cpp/util/create_test_channel.cc",
+ "test/cpp/util/fake_credentials.cc"
]
},
{
diff --git a/examples/pubsub/main.cc b/examples/pubsub/main.cc
index 68620e64c5..b1898f18d9 100644
--- a/examples/pubsub/main.cc
+++ b/examples/pubsub/main.cc
@@ -71,7 +71,7 @@ int main(int argc, char** argv) {
ss << FLAGS_server_host << ":" << FLAGS_server_port;
- std::unique_ptr<grpc::Credentials> creds = grpc::GoogleDefaultCredentials();
+ std::shared_ptr<grpc::Credentials> creds = grpc::GoogleDefaultCredentials();
std::shared_ptr<grpc::ChannelInterface> channel =
grpc::CreateChannel(ss.str(), creds, grpc::ChannelArguments());
diff --git a/gRPC.podspec b/gRPC.podspec
index affd0d81db..8429357a9e 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -5,7 +5,7 @@ Pod::Spec.new do |s|
s.homepage = 'https://www.grpc.io'
s.license = 'New BSD'
s.authors = { 'Jorge Canizales' => 'jcanizales@google.com',
- 'Michael Lumish' => 'mlumish@google.com' }
+ 'Michael Lumish' => 'mlumish@google.com' }
# s.source = { :git => 'https://github.com/grpc/grpc.git', :tag => 'release-0_5_0' }
@@ -67,7 +67,8 @@ Pod::Spec.new do |s|
s.subspec 'GRPCClient' do |gs|
gs.summary = 'Objective-C wrapper around the core gRPC library.'
- gs.authors = { 'Jorge Canizales' => 'jcanizales@google.com' }
+ gs.authors = { 'Jorge Canizales' => 'jcanizales@google.com',
+ 'Michael Lumish' => 'mlumish@google.com' }
gs.source_files = 'src/objective-c/GRPCClient/*.{h,m}',
'src/objective-c/GRPCClient/private/*.{h,m}'
@@ -90,5 +91,6 @@ Pod::Spec.new do |s|
ps.dependency 'gRPC/GRPCClient'
ps.dependency 'gRPC/RxLibrary'
+ ps.dependency 'Protobuf', '~> 3.0'
end
end
diff --git a/include/grpc++/client_context.h b/include/grpc++/client_context.h
index a58e9872e6..6d9015f278 100644
--- a/include/grpc++/client_context.h
+++ b/include/grpc++/client_context.h
@@ -51,6 +51,7 @@ namespace grpc {
class CallOpBuffer;
class ChannelInterface;
class CompletionQueue;
+class Credentials;
class RpcMethod;
class Status;
template <class R>
@@ -102,6 +103,11 @@ class ClientContext {
void set_authority(const grpc::string& authority) { authority_ = authority; }
+ // Set credentials for the rpc.
+ void set_credentials(const std::shared_ptr<Credentials>& creds) {
+ creds_ = creds;
+ }
+
void TryCancel();
private:
@@ -127,11 +133,8 @@ class ClientContext {
friend class ::grpc::ClientAsyncResponseReader;
grpc_call* call() { return call_; }
- void set_call(grpc_call* call, const std::shared_ptr<ChannelInterface>& channel) {
- GPR_ASSERT(call_ == nullptr);
- call_ = call;
- channel_ = channel;
- }
+ void set_call(grpc_call* call,
+ const std::shared_ptr<ChannelInterface>& channel);
grpc_completion_queue* cq() { return cq_; }
void set_cq(grpc_completion_queue* cq) { cq_ = cq; }
@@ -144,6 +147,7 @@ class ClientContext {
grpc_completion_queue* cq_;
gpr_timespec deadline_;
grpc::string authority_;
+ std::shared_ptr<Credentials> creds_;
std::multimap<grpc::string, grpc::string> send_initial_metadata_;
std::multimap<grpc::string, grpc::string> recv_initial_metadata_;
std::multimap<grpc::string, grpc::string> trailing_metadata_;
diff --git a/include/grpc++/create_channel.h b/include/grpc++/create_channel.h
index da375b97db..424a93a64c 100644
--- a/include/grpc++/create_channel.h
+++ b/include/grpc++/create_channel.h
@@ -45,7 +45,7 @@ class ChannelInterface;
// If creds does not hold an object or is invalid, a lame channel is returned.
std::shared_ptr<ChannelInterface> CreateChannel(
- const grpc::string& target, const std::unique_ptr<Credentials>& creds,
+ const grpc::string& target, const std::shared_ptr<Credentials>& creds,
const ChannelArguments& args);
} // namespace grpc
diff --git a/include/grpc++/credentials.h b/include/grpc++/credentials.h
index 61c4094691..7a40cd199d 100644
--- a/include/grpc++/credentials.h
+++ b/include/grpc++/credentials.h
@@ -47,17 +47,18 @@ class SecureCredentials;
class Credentials : public GrpcLibrary {
public:
~Credentials() GRPC_OVERRIDE;
+ virtual bool ApplyToCall(grpc_call* call) = 0;
protected:
- friend std::unique_ptr<Credentials> CompositeCredentials(
- const std::unique_ptr<Credentials>& creds1,
- const std::unique_ptr<Credentials>& creds2);
+ friend std::shared_ptr<Credentials> CompositeCredentials(
+ const std::shared_ptr<Credentials>& creds1,
+ const std::shared_ptr<Credentials>& creds2);
virtual SecureCredentials* AsSecureCredentials() = 0;
private:
friend std::shared_ptr<ChannelInterface> CreateChannel(
- const grpc::string& target, const std::unique_ptr<Credentials>& creds,
+ const grpc::string& target, const std::shared_ptr<Credentials>& creds,
const ChannelArguments& args);
virtual std::shared_ptr<ChannelInterface> CreateChannel(
@@ -80,20 +81,20 @@ struct SslCredentialsOptions {
};
// Factories for building different types of Credentials
-// The functions may return empty unique_ptr when credentials cannot be created.
+// The functions may return empty shared_ptr when credentials cannot be created.
// If a Credentials pointer is returned, it can still be invalid when used to
// create a channel. A lame channel will be created then and all rpcs will
// fail on it.
// Builds credentials with reasonable defaults.
-std::unique_ptr<Credentials> GoogleDefaultCredentials();
+std::shared_ptr<Credentials> GoogleDefaultCredentials();
// Builds SSL Credentials given SSL specific options
-std::unique_ptr<Credentials> SslCredentials(
+std::shared_ptr<Credentials> SslCredentials(
const SslCredentialsOptions& options);
// Builds credentials for use when running in GCE
-std::unique_ptr<Credentials> ComputeEngineCredentials();
+std::shared_ptr<Credentials> ComputeEngineCredentials();
// Builds service account credentials.
// json_key is the JSON key string containing the client's private key.
@@ -101,7 +102,7 @@ std::unique_ptr<Credentials> ComputeEngineCredentials();
// token_lifetime_seconds is the lifetime in seconds of each token acquired
// through this service account credentials. It should be positive and should
// not exceed grpc_max_auth_token_lifetime or will be cropped to this value.
-std::unique_ptr<Credentials> ServiceAccountCredentials(
+std::shared_ptr<Credentials> ServiceAccountCredentials(
const grpc::string& json_key, const grpc::string& scope,
long token_lifetime_seconds);
@@ -110,27 +111,27 @@ std::unique_ptr<Credentials> ServiceAccountCredentials(
// token_lifetime_seconds is the lifetime in seconds of each Json Web Token
// (JWT) created with this credentials. It should not exceed
// grpc_max_auth_token_lifetime or will be cropped to this value.
-std::unique_ptr<Credentials> JWTCredentials(
- const grpc::string& json_key, long token_lifetime_seconds);
+std::shared_ptr<Credentials> JWTCredentials(const grpc::string& json_key,
+ long token_lifetime_seconds);
// Builds refresh token credentials.
// json_refresh_token is the JSON string containing the refresh token along
// with a client_id and client_secret.
-std::unique_ptr<Credentials> RefreshTokenCredentials(
+std::shared_ptr<Credentials> RefreshTokenCredentials(
const grpc::string& json_refresh_token);
// Builds IAM credentials.
-std::unique_ptr<Credentials> IAMCredentials(
+std::shared_ptr<Credentials> IAMCredentials(
const grpc::string& authorization_token,
const grpc::string& authority_selector);
// Combines two credentials objects into a composite credentials
-std::unique_ptr<Credentials> CompositeCredentials(
- const std::unique_ptr<Credentials>& creds1,
- const std::unique_ptr<Credentials>& creds2);
+std::shared_ptr<Credentials> CompositeCredentials(
+ const std::shared_ptr<Credentials>& creds1,
+ const std::shared_ptr<Credentials>& creds2);
// Credentials for an unencrypted, unauthenticated channel
-std::unique_ptr<Credentials> InsecureCredentials();
+std::shared_ptr<Credentials> InsecureCredentials();
} // namespace grpc
diff --git a/include/grpc/support/subprocess.h b/include/grpc/support/subprocess.h
index c59751da83..1b7431e7d9 100644
--- a/include/grpc/support/subprocess.h
+++ b/include/grpc/support/subprocess.h
@@ -37,7 +37,7 @@
typedef struct gpr_subprocess gpr_subprocess;
/* .exe on windows, empty on unices */
-char *gpr_subprocess_binary_extension();
+const char *gpr_subprocess_binary_extension();
gpr_subprocess *gpr_subprocess_create(int argc, char **argv);
/* if subprocess has not been joined, kill it */
diff --git a/src/core/channel/http_server_filter.c b/src/core/channel/http_server_filter.c
index 1f64df68e3..11a53b1e70 100644
--- a/src/core/channel/http_server_filter.c
+++ b/src/core/channel/http_server_filter.c
@@ -34,7 +34,6 @@
#include "src/core/channel/http_server_filter.h"
#include <string.h>
-#include <grpc/grpc_http.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
diff --git a/src/core/iomgr/tcp_posix.c b/src/core/iomgr/tcp_posix.c
index f7dae5f86c..cd6b2ecae6 100644
--- a/src/core/iomgr/tcp_posix.c
+++ b/src/core/iomgr/tcp_posix.c
@@ -138,8 +138,10 @@ static void slice_state_remove_prefix(grpc_tcp_slice_state *state,
native "trim the first N bytes" operation to splice */
/* TODO(klempner): This really shouldn't be modifying the current slice
unless we own the slices array. */
- *current_slice = gpr_slice_split_tail(current_slice, prefix_bytes);
+ gpr_slice tail;
+ tail = gpr_slice_split_tail(current_slice, prefix_bytes);
gpr_slice_unref(*current_slice);
+ *current_slice = tail;
return;
} else {
gpr_slice_unref(*current_slice);
diff --git a/src/core/profiling/basic_timers.c b/src/core/profiling/basic_timers.c
index 124a8d6621..ae37f584eb 100644
--- a/src/core/profiling/basic_timers.c
+++ b/src/core/profiling/basic_timers.c
@@ -55,6 +55,7 @@ typedef enum {
typedef struct grpc_timer_entry {
grpc_precise_clock tm;
int tag;
+ const char* tagstr;
marker_type type;
void* id;
const char* file;
@@ -70,18 +71,19 @@ static void log_report() {
int i;
for (i = 0; i < count; i++) {
grpc_timer_entry* entry = &(log[i]);
- printf("GRPC_LAT_PROF " GRPC_PRECISE_CLOCK_FORMAT " %p %c %d %p %s %d\n",
+ printf("GRPC_LAT_PROF " GRPC_PRECISE_CLOCK_FORMAT
+ " %p %c %d(%s) %p %s %d\n",
GRPC_PRECISE_CLOCK_PRINTF_ARGS(&entry->tm),
(void*)(gpr_intptr)gpr_thd_currentid(), entry->type, entry->tag,
- entry->id, entry->file, entry->line);
+ entry->tagstr, entry->id, entry->file, entry->line);
}
/* Now clear out the log */
count = 0;
}
-static void grpc_timers_log_add(int tag, marker_type type, void* id,
- const char* file, int line) {
+static void grpc_timers_log_add(int tag, const char* tagstr, marker_type type,
+ void* id, const char* file, int line) {
grpc_timer_entry* entry;
/* TODO (vpai) : Improve concurrency */
@@ -93,6 +95,7 @@ static void grpc_timers_log_add(int tag, marker_type type, void* id,
grpc_precise_clock_now(&entry->tm);
entry->tag = tag;
+ entry->tagstr = tagstr;
entry->type = type;
entry->id = id;
entry->file = file;
@@ -100,28 +103,31 @@ static void grpc_timers_log_add(int tag, marker_type type, void* id,
}
/* Latency profiler API implementation. */
-void grpc_timer_add_mark(int tag, void* id, const char* file, int line) {
+void grpc_timer_add_mark(int tag, const char* tagstr, void* id,
+ const char* file, int line) {
if (tag < GRPC_PTAG_IGNORE_THRESHOLD) {
- grpc_timers_log_add(tag, MARK, id, file, line);
+ grpc_timers_log_add(tag, tagstr, MARK, id, file, line);
}
}
-void grpc_timer_add_important_mark(int tag, void* id, const char* file,
- int line) {
+void grpc_timer_add_important_mark(int tag, const char* tagstr, void* id,
+ const char* file, int line) {
if (tag < GRPC_PTAG_IGNORE_THRESHOLD) {
- grpc_timers_log_add(tag, IMPORTANT, id, file, line);
+ grpc_timers_log_add(tag, tagstr, IMPORTANT, id, file, line);
}
}
-void grpc_timer_begin(int tag, void* id, const char* file, int line) {
+void grpc_timer_begin(int tag, const char* tagstr, void* id, const char* file,
+ int line) {
if (tag < GRPC_PTAG_IGNORE_THRESHOLD) {
- grpc_timers_log_add(tag, BEGIN, id, file, line);
+ grpc_timers_log_add(tag, tagstr, BEGIN, id, file, line);
}
}
-void grpc_timer_end(int tag, void* id, const char* file, int line) {
+void grpc_timer_end(int tag, const char* tagstr, void* id, const char* file,
+ int line) {
if (tag < GRPC_PTAG_IGNORE_THRESHOLD) {
- grpc_timers_log_add(tag, END, id, file, line);
+ grpc_timers_log_add(tag, tagstr, END, id, file, line);
}
}
diff --git a/src/core/profiling/stap_timers.c b/src/core/profiling/stap_timers.c
index 064c86e794..99975163f9 100644
--- a/src/core/profiling/stap_timers.c
+++ b/src/core/profiling/stap_timers.c
@@ -42,20 +42,23 @@
#include "src/core/profiling/stap_probes.h"
/* Latency profiler API implementation. */
-void grpc_timer_add_mark(int tag, void* id, const char* file, int line) {
+void grpc_timer_add_mark(int tag, const char* tagstr, void* id,
+ const char* file, int line) {
_STAP_ADD_MARK(tag);
}
-void grpc_timer_add_important_mark(int tag, void* id, const char* file,
- int line) {
+void grpc_timer_add_important_mark(int tag, const char* tagstr, void* id,
+ const char* file, int line) {
_STAP_ADD_IMPORTANT_MARK(tag);
}
-void grpc_timer_begin(int tag, void* id, const char* file, int line) {
+void grpc_timer_begin(int tag, const char* tagstr, void* id, const char* file,
+ int line) {
_STAP_TIMING_NS_BEGIN(tag);
}
-void grpc_timer_end(int tag, void* id, const char* file, int line) {
+void grpc_timer_end(int tag, const char* tagstr, void* id, const char* file,
+ int line) {
_STAP_TIMING_NS_END(tag);
}
diff --git a/src/core/profiling/timers.h b/src/core/profiling/timers.h
index 4fb465c237..036d02f187 100644
--- a/src/core/profiling/timers.h
+++ b/src/core/profiling/timers.h
@@ -41,11 +41,14 @@ extern "C" {
void grpc_timers_global_init(void);
void grpc_timers_global_destroy(void);
-void grpc_timer_add_mark(int tag, void *id, const char *file, int line);
-void grpc_timer_add_important_mark(int tag, void *id, const char *file,
- int line);
-void grpc_timer_begin(int tag, void *id, const char *file, int line);
-void grpc_timer_end(int tag, void *id, const char *file, int line);
+void grpc_timer_add_mark(int tag, const char *tagstr, void *id,
+ const char *file, int line);
+void grpc_timer_add_important_mark(int tag, const char *tagstr, void *id,
+ const char *file, int line);
+void grpc_timer_begin(int tag, const char *tagstr, void *id, const char *file,
+ int line);
+void grpc_timer_end(int tag, const char *tagstr, void *id, const char *file,
+ int line);
enum grpc_profiling_tags {
/* Any GRPC_PTAG_* >= than the threshold won't generate any profiling mark. */
@@ -103,25 +106,27 @@ enum grpc_profiling_tags {
#endif
/* Generic profiling interface. */
-#define GRPC_TIMER_MARK(tag, id) \
- if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \
- grpc_timer_add_mark(tag, ((void *)(gpr_intptr)(id)), __FILE__, __LINE__); \
+#define GRPC_TIMER_MARK(tag, id) \
+ if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \
+ grpc_timer_add_mark(tag, #tag, ((void *)(gpr_intptr)(id)), __FILE__, \
+ __LINE__); \
}
-#define GRPC_TIMER_IMPORTANT_MARK(tag, id) \
- if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \
- grpc_timer_add_important_mark(tag, ((void *)(gpr_intptr)(id)), __FILE__, \
- __LINE__); \
+#define GRPC_TIMER_IMPORTANT_MARK(tag, id) \
+ if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \
+ grpc_timer_add_important_mark(tag, #tag, ((void *)(gpr_intptr)(id)), \
+ __FILE__, __LINE__); \
}
-#define GRPC_TIMER_BEGIN(tag, id) \
- if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \
- grpc_timer_begin(tag, ((void *)(gpr_intptr)(id)), __FILE__, __LINE__); \
+#define GRPC_TIMER_BEGIN(tag, id) \
+ if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \
+ grpc_timer_begin(tag, #tag, ((void *)(gpr_intptr)(id)), __FILE__, \
+ __LINE__); \
}
-#define GRPC_TIMER_END(tag, id) \
- if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \
- grpc_timer_end(tag, ((void *)(gpr_intptr)(id)), __FILE__, __LINE__); \
+#define GRPC_TIMER_END(tag, id) \
+ if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \
+ grpc_timer_end(tag, #tag, ((void *)(gpr_intptr)(id)), __FILE__, __LINE__); \
}
#ifdef GRPC_STAP_PROFILER
diff --git a/src/core/security/security_connector.c b/src/core/security/security_connector.c
index 61cb20f6b9..b17e0e0dfa 100644
--- a/src/core/security/security_connector.c
+++ b/src/core/security/security_connector.c
@@ -82,7 +82,7 @@ static const char *ssl_cipher_suites(void) {
/* -- Common methods. -- */
/* Returns the first property with that name. */
-static const tsi_peer_property *tsi_peer_get_property_by_name(
+const tsi_peer_property *tsi_peer_get_property_by_name(
const tsi_peer *peer, const char *name) {
size_t i;
if (peer == NULL) return NULL;
diff --git a/src/core/security/security_connector.h b/src/core/security/security_connector.h
index 47abe05cff..87b7ca9b8b 100644
--- a/src/core/security/security_connector.h
+++ b/src/core/security/security_connector.h
@@ -198,4 +198,8 @@ typedef struct {
grpc_security_status grpc_ssl_server_security_connector_create(
const grpc_ssl_server_config *config, grpc_security_connector **sc);
+/* Util. */
+const tsi_peer_property *tsi_peer_get_property_by_name(
+ const tsi_peer *peer, const char *name);
+
#endif /* GRPC_INTERNAL_CORE_SECURITY_SECURITY_CONNECTOR_H */
diff --git a/src/core/support/subprocess_posix.c b/src/core/support/subprocess_posix.c
index 4580537aa8..642520bb47 100644
--- a/src/core/support/subprocess_posix.c
+++ b/src/core/support/subprocess_posix.c
@@ -55,7 +55,7 @@ struct gpr_subprocess {
int joined;
};
-char *gpr_subprocess_binary_extension() { return ""; }
+const char *gpr_subprocess_binary_extension() { return ""; }
gpr_subprocess *gpr_subprocess_create(int argc, char **argv) {
gpr_subprocess *r;
diff --git a/src/cpp/client/client_context.cc b/src/cpp/client/client_context.cc
index f38a694734..72cdd49d19 100644
--- a/src/cpp/client/client_context.cc
+++ b/src/cpp/client/client_context.cc
@@ -34,6 +34,7 @@
#include <grpc++/client_context.h>
#include <grpc/grpc.h>
+#include <grpc++/credentials.h>
#include <grpc++/time.h>
namespace grpc {
@@ -63,6 +64,17 @@ void ClientContext::AddMetadata(const grpc::string& meta_key,
send_initial_metadata_.insert(std::make_pair(meta_key, meta_value));
}
+void ClientContext::set_call(grpc_call* call,
+ const std::shared_ptr<ChannelInterface>& channel) {
+ GPR_ASSERT(call_ == nullptr);
+ call_ = call;
+ channel_ = channel;
+ if (creds_ && !creds_->ApplyToCall(call_)) {
+ grpc_call_cancel_with_status(call, GRPC_STATUS_CANCELLED,
+ "Failed to set credentials to rpc.");
+ }
+}
+
void ClientContext::TryCancel() {
if (call_) {
grpc_call_cancel(call_);
diff --git a/src/cpp/client/create_channel.cc b/src/cpp/client/create_channel.cc
index 301430572a..510af2bb00 100644
--- a/src/cpp/client/create_channel.cc
+++ b/src/cpp/client/create_channel.cc
@@ -41,7 +41,7 @@ namespace grpc {
class ChannelArguments;
std::shared_ptr<ChannelInterface> CreateChannel(
- const grpc::string& target, const std::unique_ptr<Credentials>& creds,
+ const grpc::string& target, const std::shared_ptr<Credentials>& creds,
const ChannelArguments& args) {
return creds ? creds->CreateChannel(target, args)
: std::shared_ptr<ChannelInterface>(
diff --git a/src/cpp/client/insecure_credentials.cc b/src/cpp/client/insecure_credentials.cc
index 8945b038de..5ad8784567 100644
--- a/src/cpp/client/insecure_credentials.cc
+++ b/src/cpp/client/insecure_credentials.cc
@@ -52,12 +52,15 @@ class InsecureCredentialsImpl GRPC_FINAL : public Credentials {
target, grpc_channel_create(target.c_str(), &channel_args)));
}
+ // InsecureCredentials should not be applied to a call.
+ bool ApplyToCall(grpc_call* call) GRPC_OVERRIDE { return false; }
+
SecureCredentials* AsSecureCredentials() GRPC_OVERRIDE { return nullptr; }
};
} // namespace
-std::unique_ptr<Credentials> InsecureCredentials() {
- return std::unique_ptr<Credentials>(new InsecureCredentialsImpl());
+std::shared_ptr<Credentials> InsecureCredentials() {
+ return std::shared_ptr<Credentials>(new InsecureCredentialsImpl());
}
} // namespace grpc
diff --git a/src/cpp/client/secure_credentials.cc b/src/cpp/client/secure_credentials.cc
index 48bf7430b2..b5134b3140 100644
--- a/src/cpp/client/secure_credentials.cc
+++ b/src/cpp/client/secure_credentials.cc
@@ -49,20 +49,24 @@ std::shared_ptr<grpc::ChannelInterface> SecureCredentials::CreateChannel(
grpc_secure_channel_create(c_creds_, target.c_str(), &channel_args)));
}
+bool SecureCredentials::ApplyToCall(grpc_call* call) {
+ return grpc_call_set_credentials(call, c_creds_) == GRPC_CALL_OK;
+}
+
namespace {
-std::unique_ptr<Credentials> WrapCredentials(grpc_credentials* creds) {
+std::shared_ptr<Credentials> WrapCredentials(grpc_credentials* creds) {
return creds == nullptr
? nullptr
- : std::unique_ptr<Credentials>(new SecureCredentials(creds));
+ : std::shared_ptr<Credentials>(new SecureCredentials(creds));
}
} // namespace
-std::unique_ptr<Credentials> GoogleDefaultCredentials() {
+std::shared_ptr<Credentials> GoogleDefaultCredentials() {
return WrapCredentials(grpc_google_default_credentials_create());
}
// Builds SSL Credentials given SSL specific options
-std::unique_ptr<Credentials> SslCredentials(
+std::shared_ptr<Credentials> SslCredentials(
const SslCredentialsOptions& options) {
grpc_ssl_pem_key_cert_pair pem_key_cert_pair = {
options.pem_private_key.c_str(), options.pem_cert_chain.c_str()};
@@ -74,12 +78,12 @@ std::unique_ptr<Credentials> SslCredentials(
}
// Builds credentials for use when running in GCE
-std::unique_ptr<Credentials> ComputeEngineCredentials() {
+std::shared_ptr<Credentials> ComputeEngineCredentials() {
return WrapCredentials(grpc_compute_engine_credentials_create());
}
// Builds service account credentials.
-std::unique_ptr<Credentials> ServiceAccountCredentials(
+std::shared_ptr<Credentials> ServiceAccountCredentials(
const grpc::string& json_key, const grpc::string& scope,
long token_lifetime_seconds) {
if (token_lifetime_seconds <= 0) {
@@ -94,8 +98,8 @@ std::unique_ptr<Credentials> ServiceAccountCredentials(
}
// Builds JWT credentials.
-std::unique_ptr<Credentials> JWTCredentials(
- const grpc::string& json_key, long token_lifetime_seconds) {
+std::shared_ptr<Credentials> JWTCredentials(const grpc::string& json_key,
+ long token_lifetime_seconds) {
if (token_lifetime_seconds <= 0) {
gpr_log(GPR_ERROR,
"Trying to create JWTCredentials with non-positive lifetime");
@@ -107,14 +111,14 @@ std::unique_ptr<Credentials> JWTCredentials(
}
// Builds refresh token credentials.
-std::unique_ptr<Credentials> RefreshTokenCredentials(
+std::shared_ptr<Credentials> RefreshTokenCredentials(
const grpc::string& json_refresh_token) {
return WrapCredentials(
grpc_refresh_token_credentials_create(json_refresh_token.c_str()));
}
// Builds IAM credentials.
-std::unique_ptr<Credentials> IAMCredentials(
+std::shared_ptr<Credentials> IAMCredentials(
const grpc::string& authorization_token,
const grpc::string& authority_selector) {
return WrapCredentials(grpc_iam_credentials_create(
@@ -122,10 +126,10 @@ std::unique_ptr<Credentials> IAMCredentials(
}
// Combines two credentials objects into a composite credentials.
-std::unique_ptr<Credentials> CompositeCredentials(
- const std::unique_ptr<Credentials>& creds1,
- const std::unique_ptr<Credentials>& creds2) {
- // Note that we are not saving unique_ptrs to the two credentials
+std::shared_ptr<Credentials> CompositeCredentials(
+ const std::shared_ptr<Credentials>& creds1,
+ const std::shared_ptr<Credentials>& creds2) {
+ // Note that we are not saving shared_ptrs to the two credentials
// passed in here. This is OK because the underlying C objects (i.e.,
// creds1 and creds2) into grpc_composite_credentials_create will see their
// refcounts incremented.
diff --git a/src/cpp/client/secure_credentials.h b/src/cpp/client/secure_credentials.h
index 77d575813e..ddf69911b5 100644
--- a/src/cpp/client/secure_credentials.h
+++ b/src/cpp/client/secure_credentials.h
@@ -46,6 +46,7 @@ class SecureCredentials GRPC_FINAL : public Credentials {
explicit SecureCredentials(grpc_credentials* c_creds) : c_creds_(c_creds) {}
~SecureCredentials() GRPC_OVERRIDE { grpc_credentials_release(c_creds_); }
grpc_credentials* GetRawCreds() { return c_creds_; }
+ bool ApplyToCall(grpc_call* call) GRPC_OVERRIDE;
std::shared_ptr<grpc::ChannelInterface> CreateChannel(
const string& target, const grpc::ChannelArguments& args) GRPC_OVERRIDE;
diff --git a/src/node/src/server.js b/src/node/src/server.js
index eef705c44c..079495afd4 100644
--- a/src/node/src/server.js
+++ b/src/node/src/server.js
@@ -291,7 +291,15 @@ function _read(size) {
return;
}
var data = event.read;
- if (self.push(self.deserialize(data)) && data !== null) {
+ var deserialized;
+ try {
+ deserialized = self.deserialize(data);
+ } catch (e) {
+ e.code = grpc.status.INVALID_ARGUMENT;
+ self.emit('error', e);
+ return;
+ }
+ if (self.push(deserialized) && data !== null) {
var read_batch = {};
read_batch[grpc.opType.RECV_MESSAGE] = true;
self.call.startBatch(read_batch, readCallback);
@@ -354,7 +362,13 @@ function handleUnary(call, handler, metadata) {
handleError(call, err);
return;
}
- emitter.request = handler.deserialize(result.read);
+ try {
+ emitter.request = handler.deserialize(result.read);
+ } catch (e) {
+ e.code = grpc.status.INVALID_ARGUMENT;
+ handleError(call, e);
+ return;
+ }
if (emitter.cancelled) {
return;
}
@@ -388,7 +402,13 @@ function handleServerStreaming(call, handler, metadata) {
stream.emit('error', err);
return;
}
- stream.request = handler.deserialize(result.read);
+ try {
+ stream.request = handler.deserialize(result.read);
+ } catch (e) {
+ e.code = grpc.status.INVALID_ARGUMENT;
+ stream.emit('error', e);
+ return;
+ }
handler.func(stream);
});
}
@@ -401,6 +421,9 @@ function handleServerStreaming(call, handler, metadata) {
*/
function handleClientStreaming(call, handler, metadata) {
var stream = new ServerReadableStream(call, handler.deserialize);
+ stream.on('error', function(error) {
+ handleError(call, error);
+ });
waitForCancel(call, stream);
var metadata_batch = {};
metadata_batch[grpc.opType.SEND_INITIAL_METADATA] = metadata;
diff --git a/src/node/test/surface_test.js b/src/node/test/surface_test.js
index 9c72c29fab..b390f8b2a5 100644
--- a/src/node/test/surface_test.js
+++ b/src/node/test/surface_test.js
@@ -47,6 +47,8 @@ var mathService = math_proto.lookup('math.Math');
var capitalize = require('underscore.string/capitalize');
+var _ = require('underscore');
+
describe('File loader', function() {
it('Should load a proto file by default', function() {
assert.doesNotThrow(function() {
@@ -178,9 +180,10 @@ describe('Generic client and server', function() {
});
});
});
-describe('Trailing metadata', function() {
+describe('Other conditions', function() {
var client;
var server;
+ var port;
before(function() {
var test_proto = ProtoBuf.loadProtoFile(__dirname + '/test_service.proto');
var test_service = test_proto.lookup('TestService');
@@ -246,7 +249,7 @@ describe('Trailing metadata', function() {
}
}
});
- var port = server.bind('localhost:0');
+ port = server.bind('localhost:0');
var Client = surface_client.makeProtobufClientConstructor(test_service);
client = new Client('localhost:' + port);
server.listen();
@@ -254,86 +257,167 @@ describe('Trailing metadata', function() {
after(function() {
server.shutdown();
});
- it('should be present when a unary call succeeds', function(done) {
- var call = client.unary({error: false}, function(err, data) {
- assert.ifError(err);
+ describe('Server recieving bad input', function() {
+ var misbehavingClient;
+ var badArg = new Buffer([0xFF]);
+ before(function() {
+ var test_service_attrs = {
+ unary: {
+ path: '/TestService/Unary',
+ requestStream: false,
+ responseStream: false,
+ requestSerialize: _.identity,
+ responseDeserialize: _.identity
+ },
+ clientStream: {
+ path: '/TestService/ClientStream',
+ requestStream: true,
+ responseStream: false,
+ requestSerialize: _.identity,
+ responseDeserialize: _.identity
+ },
+ serverStream: {
+ path: '/TestService/ServerStream',
+ requestStream: false,
+ responseStream: true,
+ requestSerialize: _.identity,
+ responseDeserialize: _.identity
+ },
+ bidiStream: {
+ path: '/TestService/BidiStream',
+ requestStream: true,
+ responseStream: true,
+ requestSerialize: _.identity,
+ responseDeserialize: _.identity
+ }
+ };
+ var Client = surface_client.makeClientConstructor(test_service_attrs,
+ 'TestService');
+ misbehavingClient = new Client('localhost:' + port);
});
- call.on('status', function(status) {
- assert.deepEqual(status.metadata.metadata, ['yes']);
- done();
+ it('should respond correctly to a unary call', function(done) {
+ misbehavingClient.unary(badArg, function(err, data) {
+ assert(err);
+ assert.strictEqual(err.code, grpc.status.INVALID_ARGUMENT);
+ done();
+ });
});
- });
- it('should be present when a unary call fails', function(done) {
- var call = client.unary({error: true}, function(err, data) {
- assert(err);
+ it('should respond correctly to a client stream', function(done) {
+ var call = misbehavingClient.clientStream(function(err, data) {
+ assert(err);
+ assert.strictEqual(err.code, grpc.status.INVALID_ARGUMENT);
+ done();
+ });
+ call.write(badArg);
+ // TODO(mlumish): Remove call.end()
+ call.end();
});
- call.on('status', function(status) {
- assert.deepEqual(status.metadata.metadata, ['yes']);
- done();
+ it('should respond correctly to a server stream', function(done) {
+ var call = misbehavingClient.serverStream(badArg);
+ call.on('data', function(data) {
+ assert.fail(data, null, 'Unexpected data', '===');
+ });
+ call.on('error', function(err) {
+ assert.strictEqual(err.code, grpc.status.INVALID_ARGUMENT);
+ done();
+ });
+ });
+ it('should respond correctly to a bidi stream', function(done) {
+ var call = misbehavingClient.bidiStream();
+ call.on('data', function(data) {
+ assert.fail(data, null, 'Unexpected data', '===');
+ });
+ call.on('error', function(err) {
+ assert.strictEqual(err.code, grpc.status.INVALID_ARGUMENT);
+ done();
+ });
+ call.write(badArg);
+ // TODO(mlumish): Remove call.end()
+ call.end();
});
});
- it('should be present when a client stream call succeeds', function(done) {
- var call = client.clientStream(function(err, data) {
- assert.ifError(err);
+ describe('Trailing metadata', function() {
+ it('should be present when a unary call succeeds', function(done) {
+ var call = client.unary({error: false}, function(err, data) {
+ assert.ifError(err);
+ });
+ call.on('status', function(status) {
+ assert.deepEqual(status.metadata.metadata, ['yes']);
+ done();
+ });
});
- call.write({error: false});
- call.write({error: false});
- call.end();
- call.on('status', function(status) {
- assert.deepEqual(status.metadata.metadata, ['yes']);
- done();
+ it('should be present when a unary call fails', function(done) {
+ var call = client.unary({error: true}, function(err, data) {
+ assert(err);
+ });
+ call.on('status', function(status) {
+ assert.deepEqual(status.metadata.metadata, ['yes']);
+ done();
+ });
});
- });
- it('should be present when a client stream call fails', function(done) {
- var call = client.clientStream(function(err, data) {
- assert(err);
+ it('should be present when a client stream call succeeds', function(done) {
+ var call = client.clientStream(function(err, data) {
+ assert.ifError(err);
+ });
+ call.write({error: false});
+ call.write({error: false});
+ call.end();
+ call.on('status', function(status) {
+ assert.deepEqual(status.metadata.metadata, ['yes']);
+ done();
+ });
});
- call.write({error: false});
- call.write({error: true});
- call.end();
- call.on('status', function(status) {
- assert.deepEqual(status.metadata.metadata, ['yes']);
- done();
+ it('should be present when a client stream call fails', function(done) {
+ var call = client.clientStream(function(err, data) {
+ assert(err);
+ });
+ call.write({error: false});
+ call.write({error: true});
+ call.end();
+ call.on('status', function(status) {
+ assert.deepEqual(status.metadata.metadata, ['yes']);
+ done();
+ });
});
- });
- it('should be present when a server stream call succeeds', function(done) {
- var call = client.serverStream({error: false});
- call.on('data', function(){});
- call.on('status', function(status) {
- assert.strictEqual(status.code, grpc.status.OK);
- assert.deepEqual(status.metadata.metadata, ['yes']);
- done();
+ it('should be present when a server stream call succeeds', function(done) {
+ var call = client.serverStream({error: false});
+ call.on('data', function(){});
+ call.on('status', function(status) {
+ assert.strictEqual(status.code, grpc.status.OK);
+ assert.deepEqual(status.metadata.metadata, ['yes']);
+ done();
+ });
});
- });
- it('should be present when a server stream call fails', function(done) {
- var call = client.serverStream({error: true});
- call.on('data', function(){});
- call.on('error', function(error) {
- assert.deepEqual(error.metadata.metadata, ['yes']);
- done();
+ it('should be present when a server stream call fails', function(done) {
+ var call = client.serverStream({error: true});
+ call.on('data', function(){});
+ call.on('error', function(error) {
+ assert.deepEqual(error.metadata.metadata, ['yes']);
+ done();
+ });
});
- });
- it('should be present when a bidi stream succeeds', function(done) {
- var call = client.bidiStream();
- call.write({error: false});
- call.write({error: false});
- call.end();
- call.on('data', function(){});
- call.on('status', function(status) {
- assert.strictEqual(status.code, grpc.status.OK);
- assert.deepEqual(status.metadata.metadata, ['yes']);
- done();
+ it('should be present when a bidi stream succeeds', function(done) {
+ var call = client.bidiStream();
+ call.write({error: false});
+ call.write({error: false});
+ call.end();
+ call.on('data', function(){});
+ call.on('status', function(status) {
+ assert.strictEqual(status.code, grpc.status.OK);
+ assert.deepEqual(status.metadata.metadata, ['yes']);
+ done();
+ });
});
- });
- it('should be present when a bidi stream fails', function(done) {
- var call = client.bidiStream();
- call.write({error: false});
- call.write({error: true});
- call.end();
- call.on('data', function(){});
- call.on('error', function(error) {
- assert.deepEqual(error.metadata.metadata, ['yes']);
- done();
+ it('should be present when a bidi stream fails', function(done) {
+ var call = client.bidiStream();
+ call.write({error: false});
+ call.write({error: true});
+ call.end();
+ call.on('data', function(){});
+ call.on('error', function(error) {
+ assert.deepEqual(error.metadata.metadata, ['yes']);
+ done();
+ });
});
});
});
diff --git a/src/objective-c/ProtoRPC/ProtoRPC.m b/src/objective-c/ProtoRPC/ProtoRPC.m
index 6520b3af59..c5051c0123 100644
--- a/src/objective-c/ProtoRPC/ProtoRPC.m
+++ b/src/objective-c/ProtoRPC/ProtoRPC.m
@@ -36,7 +36,7 @@
#import <gRPC/GRXWriteable.h>
#import <gRPC/GRXWriter.h>
#import <gRPC/GRXWriter+Transformations.h>
-#import <ProtocolBuffers/ProtocolBuffers.h>
+#import <Protobuf/GPBProtocolBuffers.h>
@implementation ProtoRPC {
id<GRXWriteable> _responseWriteable;
@@ -65,7 +65,7 @@
}
// A writer that serializes the proto messages to send.
id<GRXWriter> bytesWriter =
- [[[GRXWriter alloc] initWithWriter:requestsWriter] map:^id(PBGeneratedMessage *proto) {
+ [[[GRXWriter alloc] initWithWriter:requestsWriter] map:^id(GPBMessage *proto) {
return [proto data];
}];
if ((self = [super initWithHost:host method:method requestsWriter:bytesWriter])) {
diff --git a/src/objective-c/RxLibrary/GRXBufferedPipe.h b/src/objective-c/RxLibrary/GRXBufferedPipe.h
new file mode 100644
index 0000000000..4147362ba4
--- /dev/null
+++ b/src/objective-c/RxLibrary/GRXBufferedPipe.h
@@ -0,0 +1,59 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "GRXWriteable.h"
+#import "GRXWriter.h"
+
+// A buffered pipe is a Writeable that also acts as a Writer (to whichever other writeable is passed
+// to -startWithWriteable:).
+// Once it is started, whatever values are written into it (via -didReceiveValue:) will be
+// propagated immediately, unless flow control prevents it.
+// If it is throttled and keeps receiving values, as well as if it receives values before being
+// started, it will buffer them and propagate them in order as soon as its state becomes
+// GRXWriterStateStarted.
+// If it receives an error (via -didFinishWithError:), it will drop any buffered values and
+// propagate the error immediately.
+//
+// Beware that a pipe of this type can't prevent receiving more values when it is paused (for
+// example if used to write data to a congested network connection). Because in such situations the
+// pipe will keep buffering all data written to it, your application could run out of memory and
+// crash. If you want to react to flow control signals to prevent that, instead of using this class
+// you can implement an object that conforms to GRXWriter.
+@interface GRXBufferedPipe : NSObject<GRXWriteable, GRXWriter>
+
+// Convenience constructor.
++ (instancetype)pipe;
+
+@end
diff --git a/src/objective-c/RxLibrary/GRXBufferedPipe.m b/src/objective-c/RxLibrary/GRXBufferedPipe.m
new file mode 100644
index 0000000000..3ef470f89f
--- /dev/null
+++ b/src/objective-c/RxLibrary/GRXBufferedPipe.m
@@ -0,0 +1,146 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#import "GRXBufferedPipe.h"
+
+@implementation GRXBufferedPipe {
+ id<GRXWriteable> _writeable;
+ NSMutableArray *_queue;
+ BOOL _inputIsFinished;
+ NSError *_errorOrNil;
+}
+
+@synthesize state = _state;
+
++ (instancetype)pipe {
+ return [[self alloc] init];
+}
+
+- (instancetype)init {
+ if (self = [super init]) {
+ _queue = [NSMutableArray array];
+ _state = GRXWriterStateNotStarted;
+ }
+ return self;
+}
+
+- (id)popValue {
+ id value = _queue[0];
+ [_queue removeObjectAtIndex:0];
+ return value;
+}
+
+- (void)writeBufferUntilPausedOrStopped {
+ while (_state == GRXWriterStateStarted && _queue.count > 0) {
+ [_writeable didReceiveValue:[self popValue]];
+ }
+ if (_inputIsFinished && _queue.count == 0) {
+ // Our writer finished normally while we were paused or not-started-yet.
+ [self finishWithError:_errorOrNil];
+ }
+}
+
+#pragma mark GRXWriteable implementation
+
+// Returns whether events can be simply propagated to the other end of the pipe.
+- (BOOL)shouldFastForward {
+ return _state == GRXWriterStateStarted && _queue.count == 0;
+}
+
+- (void)didReceiveValue:(id)value {
+ if (self.shouldFastForward) {
+ // Skip the queue.
+ [_writeable didReceiveValue:value];
+ } else {
+ // Even if we're paused and with enqueued values, we can't excert back-pressure to our writer.
+ // So just buffer the new value.
+ // We need a copy, so that it doesn't mutate before it's written at the other end of the pipe.
+ if ([value respondsToSelector:@selector(copy)]) {
+ value = [value copy];
+ }
+ [_queue addObject:value];
+ }
+}
+
+- (void)didFinishWithError:(NSError *)errorOrNil {
+ _inputIsFinished = YES;
+ _errorOrNil = errorOrNil;
+ if (errorOrNil || self.shouldFastForward) {
+ // No need to write pending values.
+ [self finishWithError:_errorOrNil];
+ }
+}
+
+#pragma mark GRXWriter implementation
+
+- (void)setState:(GRXWriterState)newState {
+ // Manual transitions are only allowed from the started or paused states.
+ if (_state == GRXWriterStateNotStarted || _state == GRXWriterStateFinished) {
+ return;
+ }
+
+ switch (newState) {
+ case GRXWriterStateFinished:
+ _state = newState;
+ _queue = nil;
+ // Per GRXWriter's contract, setting the state to Finished manually means one doesn't wish the
+ // writeable to be messaged anymore.
+ _writeable = nil;
+ return;
+ case GRXWriterStatePaused:
+ _state = newState;
+ return;
+ case GRXWriterStateStarted:
+ if (_state == GRXWriterStatePaused) {
+ _state = newState;
+ [self writeBufferUntilPausedOrStopped];
+ }
+ return;
+ case GRXWriterStateNotStarted:
+ return;
+ }
+}
+
+- (void)startWithWriteable:(id<GRXWriteable>)writeable {
+ _state = GRXWriterStateStarted;
+ _writeable = writeable;
+ [self writeBufferUntilPausedOrStopped];
+}
+
+- (void)finishWithError:(NSError *)errorOrNil {
+ id<GRXWriteable> writeable = _writeable;
+ self.state = GRXWriterStateFinished;
+ [writeable didFinishWithError:errorOrNil];
+}
+
+@end
diff --git a/src/objective-c/examples/Sample/Podfile b/src/objective-c/examples/Sample/Podfile
index 8b1a90e39b..d30d9c5210 100644
--- a/src/objective-c/examples/Sample/Podfile
+++ b/src/objective-c/examples/Sample/Podfile
@@ -2,6 +2,7 @@ source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
pod 'gRPC', :path => "../../../.."
+pod 'Protobuf', :git => 'https://github.com/jcanizales/protobuf.git', :branch => 'add-podspec'
pod 'Route_guide', :path => "RouteGuideClient"
pod 'RemoteTest', :path => "RemoteTestClient"
diff --git a/src/objective-c/examples/Sample/RemoteTestClient/Empty.pb.h b/src/objective-c/examples/Sample/RemoteTestClient/Empty.pb.h
deleted file mode 100644
index bf9fa3e36f..0000000000
--- a/src/objective-c/examples/Sample/RemoteTestClient/Empty.pb.h
+++ /dev/null
@@ -1,103 +0,0 @@
-// Generated by the protocol buffer compiler. DO NOT EDIT!
-
-#import <ProtocolBuffers/ProtocolBuffers.h>
-
-// @@protoc_insertion_point(imports)
-
-@class ObjectiveCFileOptions;
-@class ObjectiveCFileOptionsBuilder;
-@class PBDescriptorProto;
-@class PBDescriptorProtoBuilder;
-@class PBDescriptorProtoExtensionRange;
-@class PBDescriptorProtoExtensionRangeBuilder;
-@class PBEnumDescriptorProto;
-@class PBEnumDescriptorProtoBuilder;
-@class PBEnumOptions;
-@class PBEnumOptionsBuilder;
-@class PBEnumValueDescriptorProto;
-@class PBEnumValueDescriptorProtoBuilder;
-@class PBEnumValueOptions;
-@class PBEnumValueOptionsBuilder;
-@class PBFieldDescriptorProto;
-@class PBFieldDescriptorProtoBuilder;
-@class PBFieldOptions;
-@class PBFieldOptionsBuilder;
-@class PBFileDescriptorProto;
-@class PBFileDescriptorProtoBuilder;
-@class PBFileDescriptorSet;
-@class PBFileDescriptorSetBuilder;
-@class PBFileOptions;
-@class PBFileOptionsBuilder;
-@class PBMessageOptions;
-@class PBMessageOptionsBuilder;
-@class PBMethodDescriptorProto;
-@class PBMethodDescriptorProtoBuilder;
-@class PBMethodOptions;
-@class PBMethodOptionsBuilder;
-@class PBOneofDescriptorProto;
-@class PBOneofDescriptorProtoBuilder;
-@class PBServiceDescriptorProto;
-@class PBServiceDescriptorProtoBuilder;
-@class PBServiceOptions;
-@class PBServiceOptionsBuilder;
-@class PBSourceCodeInfo;
-@class PBSourceCodeInfoBuilder;
-@class PBSourceCodeInfoLocation;
-@class PBSourceCodeInfoLocationBuilder;
-@class PBUninterpretedOption;
-@class PBUninterpretedOptionBuilder;
-@class PBUninterpretedOptionNamePart;
-@class PBUninterpretedOptionNamePartBuilder;
-@class RMTEmpty;
-@class RMTEmptyBuilder;
-
-
-
-@interface RMTEmptyRoot : NSObject {
-}
-+ (PBExtensionRegistry*) extensionRegistry;
-+ (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry;
-@end
-
-@interface RMTEmpty : PBGeneratedMessage<GeneratedMessageProtocol> {
-@private
-}
-
-+ (instancetype) defaultInstance;
-- (instancetype) defaultInstance;
-
-- (BOOL) isInitialized;
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output;
-- (RMTEmptyBuilder*) builder;
-+ (RMTEmptyBuilder*) builder;
-+ (RMTEmptyBuilder*) builderWithPrototype:(RMTEmpty*) prototype;
-- (RMTEmptyBuilder*) toBuilder;
-
-+ (RMTEmpty*) parseFromData:(NSData*) data;
-+ (RMTEmpty*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RMTEmpty*) parseFromInputStream:(NSInputStream*) input;
-+ (RMTEmpty*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RMTEmpty*) parseFromCodedInputStream:(PBCodedInputStream*) input;
-+ (RMTEmpty*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-@end
-
-@interface RMTEmptyBuilder : PBGeneratedMessageBuilder {
-@private
- RMTEmpty* resultEmpty;
-}
-
-- (RMTEmpty*) defaultInstance;
-
-- (RMTEmptyBuilder*) clear;
-- (RMTEmptyBuilder*) clone;
-
-- (RMTEmpty*) build;
-- (RMTEmpty*) buildPartial;
-
-- (RMTEmptyBuilder*) mergeFrom:(RMTEmpty*) other;
-- (RMTEmptyBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input;
-- (RMTEmptyBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-@end
-
-
-// @@protoc_insertion_point(global_scope)
diff --git a/src/objective-c/examples/Sample/RemoteTestClient/Empty.pb.m b/src/objective-c/examples/Sample/RemoteTestClient/Empty.pb.m
deleted file mode 100644
index 8e39cb70d1..0000000000
--- a/src/objective-c/examples/Sample/RemoteTestClient/Empty.pb.m
+++ /dev/null
@@ -1,179 +0,0 @@
-// Generated by the protocol buffer compiler. DO NOT EDIT!
-
-#import "Empty.pb.h"
-// @@protoc_insertion_point(imports)
-
-@implementation RMTEmptyRoot
-static PBExtensionRegistry* extensionRegistry = nil;
-+ (PBExtensionRegistry*) extensionRegistry {
- return extensionRegistry;
-}
-
-+ (void) initialize {
- if (self == [RMTEmptyRoot class]) {
- PBMutableExtensionRegistry* registry = [PBMutableExtensionRegistry registry];
- [self registerAllExtensions:registry];
- [ObjectivecDescriptorRoot registerAllExtensions:registry];
- extensionRegistry = registry;
- }
-}
-+ (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry {
-}
-@end
-
-@interface RMTEmpty ()
-@end
-
-@implementation RMTEmpty
-
-- (instancetype) init {
- if ((self = [super init])) {
- }
- return self;
-}
-static RMTEmpty* defaultRMTEmptyInstance = nil;
-+ (void) initialize {
- if (self == [RMTEmpty class]) {
- defaultRMTEmptyInstance = [[RMTEmpty alloc] init];
- }
-}
-+ (instancetype) defaultInstance {
- return defaultRMTEmptyInstance;
-}
-- (instancetype) defaultInstance {
- return defaultRMTEmptyInstance;
-}
-- (BOOL) isInitialized {
- return YES;
-}
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
- [self.unknownFields writeToCodedOutputStream:output];
-}
-- (SInt32) serializedSize {
- __block SInt32 size_ = memoizedSerializedSize;
- if (size_ != -1) {
- return size_;
- }
-
- size_ = 0;
- size_ += self.unknownFields.serializedSize;
- memoizedSerializedSize = size_;
- return size_;
-}
-+ (RMTEmpty*) parseFromData:(NSData*) data {
- return (RMTEmpty*)[[[RMTEmpty builder] mergeFromData:data] build];
-}
-+ (RMTEmpty*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTEmpty*)[[[RMTEmpty builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
-}
-+ (RMTEmpty*) parseFromInputStream:(NSInputStream*) input {
- return (RMTEmpty*)[[[RMTEmpty builder] mergeFromInputStream:input] build];
-}
-+ (RMTEmpty*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTEmpty*)[[[RMTEmpty builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RMTEmpty*) parseFromCodedInputStream:(PBCodedInputStream*) input {
- return (RMTEmpty*)[[[RMTEmpty builder] mergeFromCodedInputStream:input] build];
-}
-+ (RMTEmpty*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTEmpty*)[[[RMTEmpty builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RMTEmptyBuilder*) builder {
- return [[RMTEmptyBuilder alloc] init];
-}
-+ (RMTEmptyBuilder*) builderWithPrototype:(RMTEmpty*) prototype {
- return [[RMTEmpty builder] mergeFrom:prototype];
-}
-- (RMTEmptyBuilder*) builder {
- return [RMTEmpty builder];
-}
-- (RMTEmptyBuilder*) toBuilder {
- return [RMTEmpty builderWithPrototype:self];
-}
-- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
- [self.unknownFields writeDescriptionTo:output withIndent:indent];
-}
-- (BOOL) isEqual:(id)other {
- if (other == self) {
- return YES;
- }
- if (![other isKindOfClass:[RMTEmpty class]]) {
- return NO;
- }
- RMTEmpty *otherMessage = other;
- return
- (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
-}
-- (NSUInteger) hash {
- __block NSUInteger hashCode = 7;
- hashCode = hashCode * 31 + [self.unknownFields hash];
- return hashCode;
-}
-@end
-
-@interface RMTEmptyBuilder()
-@property (strong) RMTEmpty* resultEmpty;
-@end
-
-@implementation RMTEmptyBuilder
-@synthesize resultEmpty;
-- (instancetype) init {
- if ((self = [super init])) {
- self.resultEmpty = [[RMTEmpty alloc] init];
- }
- return self;
-}
-- (PBGeneratedMessage*) internalGetResult {
- return resultEmpty;
-}
-- (RMTEmptyBuilder*) clear {
- self.resultEmpty = [[RMTEmpty alloc] init];
- return self;
-}
-- (RMTEmptyBuilder*) clone {
- return [RMTEmpty builderWithPrototype:resultEmpty];
-}
-- (RMTEmpty*) defaultInstance {
- return [RMTEmpty defaultInstance];
-}
-- (RMTEmpty*) build {
- [self checkInitialized];
- return [self buildPartial];
-}
-- (RMTEmpty*) buildPartial {
- RMTEmpty* returnMe = resultEmpty;
- self.resultEmpty = nil;
- return returnMe;
-}
-- (RMTEmptyBuilder*) mergeFrom:(RMTEmpty*) other {
- if (other == [RMTEmpty defaultInstance]) {
- return self;
- }
- [self mergeUnknownFields:other.unknownFields];
- return self;
-}
-- (RMTEmptyBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
- return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
-}
-- (RMTEmptyBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
- while (YES) {
- SInt32 tag = [input readTag];
- switch (tag) {
- case 0:
- [self setUnknownFields:[unknownFields build]];
- return self;
- default: {
- if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
- [self setUnknownFields:[unknownFields build]];
- return self;
- }
- break;
- }
- }
- }
-}
-@end
-
-
-// @@protoc_insertion_point(global_scope)
diff --git a/src/objective-c/examples/Sample/RemoteTestClient/Empty.pbobjc.h b/src/objective-c/examples/Sample/RemoteTestClient/Empty.pbobjc.h
new file mode 100644
index 0000000000..809d0dde6e
--- /dev/null
+++ b/src/objective-c/examples/Sample/RemoteTestClient/Empty.pbobjc.h
@@ -0,0 +1,33 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: empty.proto
+
+#import "GPBProtocolBuffers.h"
+
+#if GOOGLE_PROTOBUF_OBJC_GEN_VERSION != 30000
+#error This file was generated by a different version of protoc-gen-objc which is incompatible with your Protocol Buffer sources.
+#endif
+
+CF_EXTERN_C_BEGIN
+
+@class RMTEmpty;
+
+
+#pragma mark - RMTEmptyRoot
+
+@interface RMTEmptyRoot : GPBRootObject
+@end
+
+#pragma mark - RMTEmpty
+
+// An empty message that you can re-use to avoid defining duplicated empty
+// messages in your project. A typical example is to use it as argument or the
+// return value of a service API. For instance:
+//
+// service Foo {
+// rpc Bar (grpc.testing.Empty) returns (grpc.testing.Empty) { };
+// };
+@interface RMTEmpty : GPBMessage
+
+@end
+
+CF_EXTERN_C_END
diff --git a/src/objective-c/examples/Sample/RemoteTestClient/Empty.pbobjc.m b/src/objective-c/examples/Sample/RemoteTestClient/Empty.pbobjc.m
new file mode 100644
index 0000000000..46d481af66
--- /dev/null
+++ b/src/objective-c/examples/Sample/RemoteTestClient/Empty.pbobjc.m
@@ -0,0 +1,59 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: empty.proto
+
+#import "GPBProtocolBuffers_RuntimeSupport.h"
+
+#import "Empty.pbobjc.h"
+
+#pragma mark - RMTEmptyRoot
+
+@implementation RMTEmptyRoot
+
+@end
+
+static GPBFileDescriptor *RMTEmptyRoot_FileDescriptor(void) {
+ // This is called by +initialize so there is no need to worry
+ // about thread safety of the singleton.
+ static GPBFileDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ descriptor = [[GPBFileDescriptor alloc] initWithPackage:@"grpc.testing"
+ syntax:GPBFileSyntaxProto3];
+ }
+ return descriptor;
+}
+
+#pragma mark - RMTEmpty
+
+@implementation RMTEmpty
+
+
+typedef struct RMTEmpty_Storage {
+ uint32_t _has_storage_[0];
+} RMTEmpty_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[RMTEmpty class]
+ rootClass:[RMTEmptyRoot class]
+ file:RMTEmptyRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(RMTEmpty_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
diff --git a/src/objective-c/examples/Sample/RemoteTestClient/Messages.pb.h b/src/objective-c/examples/Sample/RemoteTestClient/Messages.pb.h
deleted file mode 100644
index 0a08e67702..0000000000
--- a/src/objective-c/examples/Sample/RemoteTestClient/Messages.pb.h
+++ /dev/null
@@ -1,578 +0,0 @@
-// Generated by the protocol buffer compiler. DO NOT EDIT!
-
-#import <ProtocolBuffers/ProtocolBuffers.h>
-
-// @@protoc_insertion_point(imports)
-
-@class ObjectiveCFileOptions;
-@class ObjectiveCFileOptionsBuilder;
-@class PBDescriptorProto;
-@class PBDescriptorProtoBuilder;
-@class PBDescriptorProtoExtensionRange;
-@class PBDescriptorProtoExtensionRangeBuilder;
-@class PBEnumDescriptorProto;
-@class PBEnumDescriptorProtoBuilder;
-@class PBEnumOptions;
-@class PBEnumOptionsBuilder;
-@class PBEnumValueDescriptorProto;
-@class PBEnumValueDescriptorProtoBuilder;
-@class PBEnumValueOptions;
-@class PBEnumValueOptionsBuilder;
-@class PBFieldDescriptorProto;
-@class PBFieldDescriptorProtoBuilder;
-@class PBFieldOptions;
-@class PBFieldOptionsBuilder;
-@class PBFileDescriptorProto;
-@class PBFileDescriptorProtoBuilder;
-@class PBFileDescriptorSet;
-@class PBFileDescriptorSetBuilder;
-@class PBFileOptions;
-@class PBFileOptionsBuilder;
-@class PBMessageOptions;
-@class PBMessageOptionsBuilder;
-@class PBMethodDescriptorProto;
-@class PBMethodDescriptorProtoBuilder;
-@class PBMethodOptions;
-@class PBMethodOptionsBuilder;
-@class PBOneofDescriptorProto;
-@class PBOneofDescriptorProtoBuilder;
-@class PBServiceDescriptorProto;
-@class PBServiceDescriptorProtoBuilder;
-@class PBServiceOptions;
-@class PBServiceOptionsBuilder;
-@class PBSourceCodeInfo;
-@class PBSourceCodeInfoBuilder;
-@class PBSourceCodeInfoLocation;
-@class PBSourceCodeInfoLocationBuilder;
-@class PBUninterpretedOption;
-@class PBUninterpretedOptionBuilder;
-@class PBUninterpretedOptionNamePart;
-@class PBUninterpretedOptionNamePartBuilder;
-@class RMTPayload;
-@class RMTPayloadBuilder;
-@class RMTResponseParameters;
-@class RMTResponseParametersBuilder;
-@class RMTSimpleRequest;
-@class RMTSimpleRequestBuilder;
-@class RMTSimpleResponse;
-@class RMTSimpleResponseBuilder;
-@class RMTStreamingInputCallRequest;
-@class RMTStreamingInputCallRequestBuilder;
-@class RMTStreamingInputCallResponse;
-@class RMTStreamingInputCallResponseBuilder;
-@class RMTStreamingOutputCallRequest;
-@class RMTStreamingOutputCallRequestBuilder;
-@class RMTStreamingOutputCallResponse;
-@class RMTStreamingOutputCallResponseBuilder;
-
-
-typedef NS_ENUM(SInt32, RMTPayloadType) {
- RMTPayloadTypeCompressable = 0,
- RMTPayloadTypeUncompressable = 1,
- RMTPayloadTypeRandom = 2,
-};
-
-BOOL RMTPayloadTypeIsValidValue(RMTPayloadType value);
-NSString *NSStringFromRMTPayloadType(RMTPayloadType value);
-
-
-@interface RMTMessagesRoot : NSObject {
-}
-+ (PBExtensionRegistry*) extensionRegistry;
-+ (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry;
-@end
-
-@interface RMTPayload : PBGeneratedMessage<GeneratedMessageProtocol> {
-@private
- BOOL hasBody_:1;
- BOOL hasType_:1;
- NSData* body;
- RMTPayloadType type;
-}
-- (BOOL) hasType;
-- (BOOL) hasBody;
-@property (readonly) RMTPayloadType type;
-@property (readonly, strong) NSData* body;
-
-+ (instancetype) defaultInstance;
-- (instancetype) defaultInstance;
-
-- (BOOL) isInitialized;
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output;
-- (RMTPayloadBuilder*) builder;
-+ (RMTPayloadBuilder*) builder;
-+ (RMTPayloadBuilder*) builderWithPrototype:(RMTPayload*) prototype;
-- (RMTPayloadBuilder*) toBuilder;
-
-+ (RMTPayload*) parseFromData:(NSData*) data;
-+ (RMTPayload*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RMTPayload*) parseFromInputStream:(NSInputStream*) input;
-+ (RMTPayload*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RMTPayload*) parseFromCodedInputStream:(PBCodedInputStream*) input;
-+ (RMTPayload*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-@end
-
-@interface RMTPayloadBuilder : PBGeneratedMessageBuilder {
-@private
- RMTPayload* resultPayload;
-}
-
-- (RMTPayload*) defaultInstance;
-
-- (RMTPayloadBuilder*) clear;
-- (RMTPayloadBuilder*) clone;
-
-- (RMTPayload*) build;
-- (RMTPayload*) buildPartial;
-
-- (RMTPayloadBuilder*) mergeFrom:(RMTPayload*) other;
-- (RMTPayloadBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input;
-- (RMTPayloadBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-
-- (BOOL) hasType;
-- (RMTPayloadType) type;
-- (RMTPayloadBuilder*) setType:(RMTPayloadType) value;
-- (RMTPayloadBuilder*) clearType;
-
-- (BOOL) hasBody;
-- (NSData*) body;
-- (RMTPayloadBuilder*) setBody:(NSData*) value;
-- (RMTPayloadBuilder*) clearBody;
-@end
-
-@interface RMTSimpleRequest : PBGeneratedMessage<GeneratedMessageProtocol> {
-@private
- BOOL hasFillUsername_:1;
- BOOL hasFillOauthScope_:1;
- BOOL hasResponseSize_:1;
- BOOL hasPayload_:1;
- BOOL hasResponseType_:1;
- BOOL fillUsername_:1;
- BOOL fillOauthScope_:1;
- SInt32 responseSize;
- RMTPayload* payload;
- RMTPayloadType responseType;
-}
-- (BOOL) hasResponseType;
-- (BOOL) hasResponseSize;
-- (BOOL) hasPayload;
-- (BOOL) hasFillUsername;
-- (BOOL) hasFillOauthScope;
-@property (readonly) RMTPayloadType responseType;
-@property (readonly) SInt32 responseSize;
-@property (readonly, strong) RMTPayload* payload;
-- (BOOL) fillUsername;
-- (BOOL) fillOauthScope;
-
-+ (instancetype) defaultInstance;
-- (instancetype) defaultInstance;
-
-- (BOOL) isInitialized;
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output;
-- (RMTSimpleRequestBuilder*) builder;
-+ (RMTSimpleRequestBuilder*) builder;
-+ (RMTSimpleRequestBuilder*) builderWithPrototype:(RMTSimpleRequest*) prototype;
-- (RMTSimpleRequestBuilder*) toBuilder;
-
-+ (RMTSimpleRequest*) parseFromData:(NSData*) data;
-+ (RMTSimpleRequest*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RMTSimpleRequest*) parseFromInputStream:(NSInputStream*) input;
-+ (RMTSimpleRequest*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RMTSimpleRequest*) parseFromCodedInputStream:(PBCodedInputStream*) input;
-+ (RMTSimpleRequest*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-@end
-
-@interface RMTSimpleRequestBuilder : PBGeneratedMessageBuilder {
-@private
- RMTSimpleRequest* resultSimpleRequest;
-}
-
-- (RMTSimpleRequest*) defaultInstance;
-
-- (RMTSimpleRequestBuilder*) clear;
-- (RMTSimpleRequestBuilder*) clone;
-
-- (RMTSimpleRequest*) build;
-- (RMTSimpleRequest*) buildPartial;
-
-- (RMTSimpleRequestBuilder*) mergeFrom:(RMTSimpleRequest*) other;
-- (RMTSimpleRequestBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input;
-- (RMTSimpleRequestBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-
-- (BOOL) hasResponseType;
-- (RMTPayloadType) responseType;
-- (RMTSimpleRequestBuilder*) setResponseType:(RMTPayloadType) value;
-- (RMTSimpleRequestBuilder*) clearResponseType;
-
-- (BOOL) hasResponseSize;
-- (SInt32) responseSize;
-- (RMTSimpleRequestBuilder*) setResponseSize:(SInt32) value;
-- (RMTSimpleRequestBuilder*) clearResponseSize;
-
-- (BOOL) hasPayload;
-- (RMTPayload*) payload;
-- (RMTSimpleRequestBuilder*) setPayload:(RMTPayload*) value;
-- (RMTSimpleRequestBuilder*) setPayloadBuilder:(RMTPayloadBuilder*) builderForValue;
-- (RMTSimpleRequestBuilder*) mergePayload:(RMTPayload*) value;
-- (RMTSimpleRequestBuilder*) clearPayload;
-
-- (BOOL) hasFillUsername;
-- (BOOL) fillUsername;
-- (RMTSimpleRequestBuilder*) setFillUsername:(BOOL) value;
-- (RMTSimpleRequestBuilder*) clearFillUsername;
-
-- (BOOL) hasFillOauthScope;
-- (BOOL) fillOauthScope;
-- (RMTSimpleRequestBuilder*) setFillOauthScope:(BOOL) value;
-- (RMTSimpleRequestBuilder*) clearFillOauthScope;
-@end
-
-@interface RMTSimpleResponse : PBGeneratedMessage<GeneratedMessageProtocol> {
-@private
- BOOL hasUsername_:1;
- BOOL hasOauthScope_:1;
- BOOL hasPayload_:1;
- NSString* username;
- NSString* oauthScope;
- RMTPayload* payload;
-}
-- (BOOL) hasPayload;
-- (BOOL) hasUsername;
-- (BOOL) hasOauthScope;
-@property (readonly, strong) RMTPayload* payload;
-@property (readonly, strong) NSString* username;
-@property (readonly, strong) NSString* oauthScope;
-
-+ (instancetype) defaultInstance;
-- (instancetype) defaultInstance;
-
-- (BOOL) isInitialized;
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output;
-- (RMTSimpleResponseBuilder*) builder;
-+ (RMTSimpleResponseBuilder*) builder;
-+ (RMTSimpleResponseBuilder*) builderWithPrototype:(RMTSimpleResponse*) prototype;
-- (RMTSimpleResponseBuilder*) toBuilder;
-
-+ (RMTSimpleResponse*) parseFromData:(NSData*) data;
-+ (RMTSimpleResponse*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RMTSimpleResponse*) parseFromInputStream:(NSInputStream*) input;
-+ (RMTSimpleResponse*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RMTSimpleResponse*) parseFromCodedInputStream:(PBCodedInputStream*) input;
-+ (RMTSimpleResponse*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-@end
-
-@interface RMTSimpleResponseBuilder : PBGeneratedMessageBuilder {
-@private
- RMTSimpleResponse* resultSimpleResponse;
-}
-
-- (RMTSimpleResponse*) defaultInstance;
-
-- (RMTSimpleResponseBuilder*) clear;
-- (RMTSimpleResponseBuilder*) clone;
-
-- (RMTSimpleResponse*) build;
-- (RMTSimpleResponse*) buildPartial;
-
-- (RMTSimpleResponseBuilder*) mergeFrom:(RMTSimpleResponse*) other;
-- (RMTSimpleResponseBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input;
-- (RMTSimpleResponseBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-
-- (BOOL) hasPayload;
-- (RMTPayload*) payload;
-- (RMTSimpleResponseBuilder*) setPayload:(RMTPayload*) value;
-- (RMTSimpleResponseBuilder*) setPayloadBuilder:(RMTPayloadBuilder*) builderForValue;
-- (RMTSimpleResponseBuilder*) mergePayload:(RMTPayload*) value;
-- (RMTSimpleResponseBuilder*) clearPayload;
-
-- (BOOL) hasUsername;
-- (NSString*) username;
-- (RMTSimpleResponseBuilder*) setUsername:(NSString*) value;
-- (RMTSimpleResponseBuilder*) clearUsername;
-
-- (BOOL) hasOauthScope;
-- (NSString*) oauthScope;
-- (RMTSimpleResponseBuilder*) setOauthScope:(NSString*) value;
-- (RMTSimpleResponseBuilder*) clearOauthScope;
-@end
-
-@interface RMTStreamingInputCallRequest : PBGeneratedMessage<GeneratedMessageProtocol> {
-@private
- BOOL hasPayload_:1;
- RMTPayload* payload;
-}
-- (BOOL) hasPayload;
-@property (readonly, strong) RMTPayload* payload;
-
-+ (instancetype) defaultInstance;
-- (instancetype) defaultInstance;
-
-- (BOOL) isInitialized;
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output;
-- (RMTStreamingInputCallRequestBuilder*) builder;
-+ (RMTStreamingInputCallRequestBuilder*) builder;
-+ (RMTStreamingInputCallRequestBuilder*) builderWithPrototype:(RMTStreamingInputCallRequest*) prototype;
-- (RMTStreamingInputCallRequestBuilder*) toBuilder;
-
-+ (RMTStreamingInputCallRequest*) parseFromData:(NSData*) data;
-+ (RMTStreamingInputCallRequest*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RMTStreamingInputCallRequest*) parseFromInputStream:(NSInputStream*) input;
-+ (RMTStreamingInputCallRequest*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RMTStreamingInputCallRequest*) parseFromCodedInputStream:(PBCodedInputStream*) input;
-+ (RMTStreamingInputCallRequest*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-@end
-
-@interface RMTStreamingInputCallRequestBuilder : PBGeneratedMessageBuilder {
-@private
- RMTStreamingInputCallRequest* resultStreamingInputCallRequest;
-}
-
-- (RMTStreamingInputCallRequest*) defaultInstance;
-
-- (RMTStreamingInputCallRequestBuilder*) clear;
-- (RMTStreamingInputCallRequestBuilder*) clone;
-
-- (RMTStreamingInputCallRequest*) build;
-- (RMTStreamingInputCallRequest*) buildPartial;
-
-- (RMTStreamingInputCallRequestBuilder*) mergeFrom:(RMTStreamingInputCallRequest*) other;
-- (RMTStreamingInputCallRequestBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input;
-- (RMTStreamingInputCallRequestBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-
-- (BOOL) hasPayload;
-- (RMTPayload*) payload;
-- (RMTStreamingInputCallRequestBuilder*) setPayload:(RMTPayload*) value;
-- (RMTStreamingInputCallRequestBuilder*) setPayloadBuilder:(RMTPayloadBuilder*) builderForValue;
-- (RMTStreamingInputCallRequestBuilder*) mergePayload:(RMTPayload*) value;
-- (RMTStreamingInputCallRequestBuilder*) clearPayload;
-@end
-
-@interface RMTStreamingInputCallResponse : PBGeneratedMessage<GeneratedMessageProtocol> {
-@private
- BOOL hasAggregatedPayloadSize_:1;
- SInt32 aggregatedPayloadSize;
-}
-- (BOOL) hasAggregatedPayloadSize;
-@property (readonly) SInt32 aggregatedPayloadSize;
-
-+ (instancetype) defaultInstance;
-- (instancetype) defaultInstance;
-
-- (BOOL) isInitialized;
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output;
-- (RMTStreamingInputCallResponseBuilder*) builder;
-+ (RMTStreamingInputCallResponseBuilder*) builder;
-+ (RMTStreamingInputCallResponseBuilder*) builderWithPrototype:(RMTStreamingInputCallResponse*) prototype;
-- (RMTStreamingInputCallResponseBuilder*) toBuilder;
-
-+ (RMTStreamingInputCallResponse*) parseFromData:(NSData*) data;
-+ (RMTStreamingInputCallResponse*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RMTStreamingInputCallResponse*) parseFromInputStream:(NSInputStream*) input;
-+ (RMTStreamingInputCallResponse*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RMTStreamingInputCallResponse*) parseFromCodedInputStream:(PBCodedInputStream*) input;
-+ (RMTStreamingInputCallResponse*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-@end
-
-@interface RMTStreamingInputCallResponseBuilder : PBGeneratedMessageBuilder {
-@private
- RMTStreamingInputCallResponse* resultStreamingInputCallResponse;
-}
-
-- (RMTStreamingInputCallResponse*) defaultInstance;
-
-- (RMTStreamingInputCallResponseBuilder*) clear;
-- (RMTStreamingInputCallResponseBuilder*) clone;
-
-- (RMTStreamingInputCallResponse*) build;
-- (RMTStreamingInputCallResponse*) buildPartial;
-
-- (RMTStreamingInputCallResponseBuilder*) mergeFrom:(RMTStreamingInputCallResponse*) other;
-- (RMTStreamingInputCallResponseBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input;
-- (RMTStreamingInputCallResponseBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-
-- (BOOL) hasAggregatedPayloadSize;
-- (SInt32) aggregatedPayloadSize;
-- (RMTStreamingInputCallResponseBuilder*) setAggregatedPayloadSize:(SInt32) value;
-- (RMTStreamingInputCallResponseBuilder*) clearAggregatedPayloadSize;
-@end
-
-@interface RMTResponseParameters : PBGeneratedMessage<GeneratedMessageProtocol> {
-@private
- BOOL hasSize_:1;
- BOOL hasIntervalUs_:1;
- SInt32 size;
- SInt32 intervalUs;
-}
-- (BOOL) hasSize;
-- (BOOL) hasIntervalUs;
-@property (readonly) SInt32 size;
-@property (readonly) SInt32 intervalUs;
-
-+ (instancetype) defaultInstance;
-- (instancetype) defaultInstance;
-
-- (BOOL) isInitialized;
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output;
-- (RMTResponseParametersBuilder*) builder;
-+ (RMTResponseParametersBuilder*) builder;
-+ (RMTResponseParametersBuilder*) builderWithPrototype:(RMTResponseParameters*) prototype;
-- (RMTResponseParametersBuilder*) toBuilder;
-
-+ (RMTResponseParameters*) parseFromData:(NSData*) data;
-+ (RMTResponseParameters*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RMTResponseParameters*) parseFromInputStream:(NSInputStream*) input;
-+ (RMTResponseParameters*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RMTResponseParameters*) parseFromCodedInputStream:(PBCodedInputStream*) input;
-+ (RMTResponseParameters*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-@end
-
-@interface RMTResponseParametersBuilder : PBGeneratedMessageBuilder {
-@private
- RMTResponseParameters* resultResponseParameters;
-}
-
-- (RMTResponseParameters*) defaultInstance;
-
-- (RMTResponseParametersBuilder*) clear;
-- (RMTResponseParametersBuilder*) clone;
-
-- (RMTResponseParameters*) build;
-- (RMTResponseParameters*) buildPartial;
-
-- (RMTResponseParametersBuilder*) mergeFrom:(RMTResponseParameters*) other;
-- (RMTResponseParametersBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input;
-- (RMTResponseParametersBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-
-- (BOOL) hasSize;
-- (SInt32) size;
-- (RMTResponseParametersBuilder*) setSize:(SInt32) value;
-- (RMTResponseParametersBuilder*) clearSize;
-
-- (BOOL) hasIntervalUs;
-- (SInt32) intervalUs;
-- (RMTResponseParametersBuilder*) setIntervalUs:(SInt32) value;
-- (RMTResponseParametersBuilder*) clearIntervalUs;
-@end
-
-@interface RMTStreamingOutputCallRequest : PBGeneratedMessage<GeneratedMessageProtocol> {
-@private
- BOOL hasPayload_:1;
- BOOL hasResponseType_:1;
- RMTPayload* payload;
- RMTPayloadType responseType;
- NSMutableArray * responseParametersArray;
-}
-- (BOOL) hasResponseType;
-- (BOOL) hasPayload;
-@property (readonly) RMTPayloadType responseType;
-@property (readonly, strong) NSArray * responseParameters;
-@property (readonly, strong) RMTPayload* payload;
-- (RMTResponseParameters*)responseParametersAtIndex:(NSUInteger)index;
-
-+ (instancetype) defaultInstance;
-- (instancetype) defaultInstance;
-
-- (BOOL) isInitialized;
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output;
-- (RMTStreamingOutputCallRequestBuilder*) builder;
-+ (RMTStreamingOutputCallRequestBuilder*) builder;
-+ (RMTStreamingOutputCallRequestBuilder*) builderWithPrototype:(RMTStreamingOutputCallRequest*) prototype;
-- (RMTStreamingOutputCallRequestBuilder*) toBuilder;
-
-+ (RMTStreamingOutputCallRequest*) parseFromData:(NSData*) data;
-+ (RMTStreamingOutputCallRequest*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RMTStreamingOutputCallRequest*) parseFromInputStream:(NSInputStream*) input;
-+ (RMTStreamingOutputCallRequest*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RMTStreamingOutputCallRequest*) parseFromCodedInputStream:(PBCodedInputStream*) input;
-+ (RMTStreamingOutputCallRequest*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-@end
-
-@interface RMTStreamingOutputCallRequestBuilder : PBGeneratedMessageBuilder {
-@private
- RMTStreamingOutputCallRequest* resultStreamingOutputCallRequest;
-}
-
-- (RMTStreamingOutputCallRequest*) defaultInstance;
-
-- (RMTStreamingOutputCallRequestBuilder*) clear;
-- (RMTStreamingOutputCallRequestBuilder*) clone;
-
-- (RMTStreamingOutputCallRequest*) build;
-- (RMTStreamingOutputCallRequest*) buildPartial;
-
-- (RMTStreamingOutputCallRequestBuilder*) mergeFrom:(RMTStreamingOutputCallRequest*) other;
-- (RMTStreamingOutputCallRequestBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input;
-- (RMTStreamingOutputCallRequestBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-
-- (BOOL) hasResponseType;
-- (RMTPayloadType) responseType;
-- (RMTStreamingOutputCallRequestBuilder*) setResponseType:(RMTPayloadType) value;
-- (RMTStreamingOutputCallRequestBuilder*) clearResponseType;
-
-- (NSMutableArray *)responseParameters;
-- (RMTResponseParameters*)responseParametersAtIndex:(NSUInteger)index;
-- (RMTStreamingOutputCallRequestBuilder *)addResponseParameters:(RMTResponseParameters*)value;
-- (RMTStreamingOutputCallRequestBuilder *)setResponseParametersArray:(NSArray *)array;
-- (RMTStreamingOutputCallRequestBuilder *)clearResponseParameters;
-
-- (BOOL) hasPayload;
-- (RMTPayload*) payload;
-- (RMTStreamingOutputCallRequestBuilder*) setPayload:(RMTPayload*) value;
-- (RMTStreamingOutputCallRequestBuilder*) setPayloadBuilder:(RMTPayloadBuilder*) builderForValue;
-- (RMTStreamingOutputCallRequestBuilder*) mergePayload:(RMTPayload*) value;
-- (RMTStreamingOutputCallRequestBuilder*) clearPayload;
-@end
-
-@interface RMTStreamingOutputCallResponse : PBGeneratedMessage<GeneratedMessageProtocol> {
-@private
- BOOL hasPayload_:1;
- RMTPayload* payload;
-}
-- (BOOL) hasPayload;
-@property (readonly, strong) RMTPayload* payload;
-
-+ (instancetype) defaultInstance;
-- (instancetype) defaultInstance;
-
-- (BOOL) isInitialized;
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output;
-- (RMTStreamingOutputCallResponseBuilder*) builder;
-+ (RMTStreamingOutputCallResponseBuilder*) builder;
-+ (RMTStreamingOutputCallResponseBuilder*) builderWithPrototype:(RMTStreamingOutputCallResponse*) prototype;
-- (RMTStreamingOutputCallResponseBuilder*) toBuilder;
-
-+ (RMTStreamingOutputCallResponse*) parseFromData:(NSData*) data;
-+ (RMTStreamingOutputCallResponse*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RMTStreamingOutputCallResponse*) parseFromInputStream:(NSInputStream*) input;
-+ (RMTStreamingOutputCallResponse*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RMTStreamingOutputCallResponse*) parseFromCodedInputStream:(PBCodedInputStream*) input;
-+ (RMTStreamingOutputCallResponse*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-@end
-
-@interface RMTStreamingOutputCallResponseBuilder : PBGeneratedMessageBuilder {
-@private
- RMTStreamingOutputCallResponse* resultStreamingOutputCallResponse;
-}
-
-- (RMTStreamingOutputCallResponse*) defaultInstance;
-
-- (RMTStreamingOutputCallResponseBuilder*) clear;
-- (RMTStreamingOutputCallResponseBuilder*) clone;
-
-- (RMTStreamingOutputCallResponse*) build;
-- (RMTStreamingOutputCallResponse*) buildPartial;
-
-- (RMTStreamingOutputCallResponseBuilder*) mergeFrom:(RMTStreamingOutputCallResponse*) other;
-- (RMTStreamingOutputCallResponseBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input;
-- (RMTStreamingOutputCallResponseBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-
-- (BOOL) hasPayload;
-- (RMTPayload*) payload;
-- (RMTStreamingOutputCallResponseBuilder*) setPayload:(RMTPayload*) value;
-- (RMTStreamingOutputCallResponseBuilder*) setPayloadBuilder:(RMTPayloadBuilder*) builderForValue;
-- (RMTStreamingOutputCallResponseBuilder*) mergePayload:(RMTPayload*) value;
-- (RMTStreamingOutputCallResponseBuilder*) clearPayload;
-@end
-
-
-// @@protoc_insertion_point(global_scope)
diff --git a/src/objective-c/examples/Sample/RemoteTestClient/Messages.pb.m b/src/objective-c/examples/Sample/RemoteTestClient/Messages.pb.m
deleted file mode 100644
index fbad1a9c09..0000000000
--- a/src/objective-c/examples/Sample/RemoteTestClient/Messages.pb.m
+++ /dev/null
@@ -1,2256 +0,0 @@
-// Generated by the protocol buffer compiler. DO NOT EDIT!
-
-#import "Messages.pb.h"
-// @@protoc_insertion_point(imports)
-
-@implementation RMTMessagesRoot
-static PBExtensionRegistry* extensionRegistry = nil;
-+ (PBExtensionRegistry*) extensionRegistry {
- return extensionRegistry;
-}
-
-+ (void) initialize {
- if (self == [RMTMessagesRoot class]) {
- PBMutableExtensionRegistry* registry = [PBMutableExtensionRegistry registry];
- [self registerAllExtensions:registry];
- [ObjectivecDescriptorRoot registerAllExtensions:registry];
- extensionRegistry = registry;
- }
-}
-+ (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry {
-}
-@end
-
-BOOL RMTPayloadTypeIsValidValue(RMTPayloadType value) {
- switch (value) {
- case RMTPayloadTypeCompressable:
- case RMTPayloadTypeUncompressable:
- case RMTPayloadTypeRandom:
- return YES;
- default:
- return NO;
- }
-}
-NSString *NSStringFromRMTPayloadType(RMTPayloadType value) {
- switch (value) {
- case RMTPayloadTypeCompressable:
- return @"RMTPayloadTypeCompressable";
- case RMTPayloadTypeUncompressable:
- return @"RMTPayloadTypeUncompressable";
- case RMTPayloadTypeRandom:
- return @"RMTPayloadTypeRandom";
- default:
- return nil;
- }
-}
-
-@interface RMTPayload ()
-@property RMTPayloadType type;
-@property (strong) NSData* body;
-@end
-
-@implementation RMTPayload
-
-- (BOOL) hasType {
- return !!hasType_;
-}
-- (void) setHasType:(BOOL) _value_ {
- hasType_ = !!_value_;
-}
-@synthesize type;
-- (BOOL) hasBody {
- return !!hasBody_;
-}
-- (void) setHasBody:(BOOL) _value_ {
- hasBody_ = !!_value_;
-}
-@synthesize body;
-- (instancetype) init {
- if ((self = [super init])) {
- self.type = RMTPayloadTypeCompressable;
- self.body = [NSData data];
- }
- return self;
-}
-static RMTPayload* defaultRMTPayloadInstance = nil;
-+ (void) initialize {
- if (self == [RMTPayload class]) {
- defaultRMTPayloadInstance = [[RMTPayload alloc] init];
- }
-}
-+ (instancetype) defaultInstance {
- return defaultRMTPayloadInstance;
-}
-- (instancetype) defaultInstance {
- return defaultRMTPayloadInstance;
-}
-- (BOOL) isInitialized {
- return YES;
-}
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
- if (self.hasType) {
- [output writeEnum:1 value:self.type];
- }
- if (self.hasBody) {
- [output writeData:2 value:self.body];
- }
- [self.unknownFields writeToCodedOutputStream:output];
-}
-- (SInt32) serializedSize {
- __block SInt32 size_ = memoizedSerializedSize;
- if (size_ != -1) {
- return size_;
- }
-
- size_ = 0;
- if (self.hasType) {
- size_ += computeEnumSize(1, self.type);
- }
- if (self.hasBody) {
- size_ += computeDataSize(2, self.body);
- }
- size_ += self.unknownFields.serializedSize;
- memoizedSerializedSize = size_;
- return size_;
-}
-+ (RMTPayload*) parseFromData:(NSData*) data {
- return (RMTPayload*)[[[RMTPayload builder] mergeFromData:data] build];
-}
-+ (RMTPayload*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTPayload*)[[[RMTPayload builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
-}
-+ (RMTPayload*) parseFromInputStream:(NSInputStream*) input {
- return (RMTPayload*)[[[RMTPayload builder] mergeFromInputStream:input] build];
-}
-+ (RMTPayload*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTPayload*)[[[RMTPayload builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RMTPayload*) parseFromCodedInputStream:(PBCodedInputStream*) input {
- return (RMTPayload*)[[[RMTPayload builder] mergeFromCodedInputStream:input] build];
-}
-+ (RMTPayload*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTPayload*)[[[RMTPayload builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RMTPayloadBuilder*) builder {
- return [[RMTPayloadBuilder alloc] init];
-}
-+ (RMTPayloadBuilder*) builderWithPrototype:(RMTPayload*) prototype {
- return [[RMTPayload builder] mergeFrom:prototype];
-}
-- (RMTPayloadBuilder*) builder {
- return [RMTPayload builder];
-}
-- (RMTPayloadBuilder*) toBuilder {
- return [RMTPayload builderWithPrototype:self];
-}
-- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
- if (self.hasType) {
- [output appendFormat:@"%@%@: %@\n", indent, @"type", NSStringFromRMTPayloadType(self.type)];
- }
- if (self.hasBody) {
- [output appendFormat:@"%@%@: %@\n", indent, @"body", self.body];
- }
- [self.unknownFields writeDescriptionTo:output withIndent:indent];
-}
-- (BOOL) isEqual:(id)other {
- if (other == self) {
- return YES;
- }
- if (![other isKindOfClass:[RMTPayload class]]) {
- return NO;
- }
- RMTPayload *otherMessage = other;
- return
- self.hasType == otherMessage.hasType &&
- (!self.hasType || self.type == otherMessage.type) &&
- self.hasBody == otherMessage.hasBody &&
- (!self.hasBody || [self.body isEqual:otherMessage.body]) &&
- (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
-}
-- (NSUInteger) hash {
- __block NSUInteger hashCode = 7;
- if (self.hasType) {
- hashCode = hashCode * 31 + self.type;
- }
- if (self.hasBody) {
- hashCode = hashCode * 31 + [self.body hash];
- }
- hashCode = hashCode * 31 + [self.unknownFields hash];
- return hashCode;
-}
-@end
-
-@interface RMTPayloadBuilder()
-@property (strong) RMTPayload* resultPayload;
-@end
-
-@implementation RMTPayloadBuilder
-@synthesize resultPayload;
-- (instancetype) init {
- if ((self = [super init])) {
- self.resultPayload = [[RMTPayload alloc] init];
- }
- return self;
-}
-- (PBGeneratedMessage*) internalGetResult {
- return resultPayload;
-}
-- (RMTPayloadBuilder*) clear {
- self.resultPayload = [[RMTPayload alloc] init];
- return self;
-}
-- (RMTPayloadBuilder*) clone {
- return [RMTPayload builderWithPrototype:resultPayload];
-}
-- (RMTPayload*) defaultInstance {
- return [RMTPayload defaultInstance];
-}
-- (RMTPayload*) build {
- [self checkInitialized];
- return [self buildPartial];
-}
-- (RMTPayload*) buildPartial {
- RMTPayload* returnMe = resultPayload;
- self.resultPayload = nil;
- return returnMe;
-}
-- (RMTPayloadBuilder*) mergeFrom:(RMTPayload*) other {
- if (other == [RMTPayload defaultInstance]) {
- return self;
- }
- if (other.hasType) {
- [self setType:other.type];
- }
- if (other.hasBody) {
- [self setBody:other.body];
- }
- [self mergeUnknownFields:other.unknownFields];
- return self;
-}
-- (RMTPayloadBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
- return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
-}
-- (RMTPayloadBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
- while (YES) {
- SInt32 tag = [input readTag];
- switch (tag) {
- case 0:
- [self setUnknownFields:[unknownFields build]];
- return self;
- default: {
- if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
- [self setUnknownFields:[unknownFields build]];
- return self;
- }
- break;
- }
- case 8: {
- RMTPayloadType value = (RMTPayloadType)[input readEnum];
- if (RMTPayloadTypeIsValidValue(value)) {
- [self setType:value];
- } else {
- [unknownFields mergeVarintField:1 value:value];
- }
- break;
- }
- case 18: {
- [self setBody:[input readData]];
- break;
- }
- }
- }
-}
-- (BOOL) hasType {
- return resultPayload.hasType;
-}
-- (RMTPayloadType) type {
- return resultPayload.type;
-}
-- (RMTPayloadBuilder*) setType:(RMTPayloadType) value {
- resultPayload.hasType = YES;
- resultPayload.type = value;
- return self;
-}
-- (RMTPayloadBuilder*) clearType {
- resultPayload.hasType = NO;
- resultPayload.type = RMTPayloadTypeCompressable;
- return self;
-}
-- (BOOL) hasBody {
- return resultPayload.hasBody;
-}
-- (NSData*) body {
- return resultPayload.body;
-}
-- (RMTPayloadBuilder*) setBody:(NSData*) value {
- resultPayload.hasBody = YES;
- resultPayload.body = value;
- return self;
-}
-- (RMTPayloadBuilder*) clearBody {
- resultPayload.hasBody = NO;
- resultPayload.body = [NSData data];
- return self;
-}
-@end
-
-@interface RMTSimpleRequest ()
-@property RMTPayloadType responseType;
-@property SInt32 responseSize;
-@property (strong) RMTPayload* payload;
-@property BOOL fillUsername;
-@property BOOL fillOauthScope;
-@end
-
-@implementation RMTSimpleRequest
-
-- (BOOL) hasResponseType {
- return !!hasResponseType_;
-}
-- (void) setHasResponseType:(BOOL) _value_ {
- hasResponseType_ = !!_value_;
-}
-@synthesize responseType;
-- (BOOL) hasResponseSize {
- return !!hasResponseSize_;
-}
-- (void) setHasResponseSize:(BOOL) _value_ {
- hasResponseSize_ = !!_value_;
-}
-@synthesize responseSize;
-- (BOOL) hasPayload {
- return !!hasPayload_;
-}
-- (void) setHasPayload:(BOOL) _value_ {
- hasPayload_ = !!_value_;
-}
-@synthesize payload;
-- (BOOL) hasFillUsername {
- return !!hasFillUsername_;
-}
-- (void) setHasFillUsername:(BOOL) _value_ {
- hasFillUsername_ = !!_value_;
-}
-- (BOOL) fillUsername {
- return !!fillUsername_;
-}
-- (void) setFillUsername:(BOOL) _value_ {
- fillUsername_ = !!_value_;
-}
-- (BOOL) hasFillOauthScope {
- return !!hasFillOauthScope_;
-}
-- (void) setHasFillOauthScope:(BOOL) _value_ {
- hasFillOauthScope_ = !!_value_;
-}
-- (BOOL) fillOauthScope {
- return !!fillOauthScope_;
-}
-- (void) setFillOauthScope:(BOOL) _value_ {
- fillOauthScope_ = !!_value_;
-}
-- (instancetype) init {
- if ((self = [super init])) {
- self.responseType = RMTPayloadTypeCompressable;
- self.responseSize = 0;
- self.payload = [RMTPayload defaultInstance];
- self.fillUsername = NO;
- self.fillOauthScope = NO;
- }
- return self;
-}
-static RMTSimpleRequest* defaultRMTSimpleRequestInstance = nil;
-+ (void) initialize {
- if (self == [RMTSimpleRequest class]) {
- defaultRMTSimpleRequestInstance = [[RMTSimpleRequest alloc] init];
- }
-}
-+ (instancetype) defaultInstance {
- return defaultRMTSimpleRequestInstance;
-}
-- (instancetype) defaultInstance {
- return defaultRMTSimpleRequestInstance;
-}
-- (BOOL) isInitialized {
- return YES;
-}
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
- if (self.hasResponseType) {
- [output writeEnum:1 value:self.responseType];
- }
- if (self.hasResponseSize) {
- [output writeInt32:2 value:self.responseSize];
- }
- if (self.hasPayload) {
- [output writeMessage:3 value:self.payload];
- }
- if (self.hasFillUsername) {
- [output writeBool:4 value:self.fillUsername];
- }
- if (self.hasFillOauthScope) {
- [output writeBool:5 value:self.fillOauthScope];
- }
- [self.unknownFields writeToCodedOutputStream:output];
-}
-- (SInt32) serializedSize {
- __block SInt32 size_ = memoizedSerializedSize;
- if (size_ != -1) {
- return size_;
- }
-
- size_ = 0;
- if (self.hasResponseType) {
- size_ += computeEnumSize(1, self.responseType);
- }
- if (self.hasResponseSize) {
- size_ += computeInt32Size(2, self.responseSize);
- }
- if (self.hasPayload) {
- size_ += computeMessageSize(3, self.payload);
- }
- if (self.hasFillUsername) {
- size_ += computeBoolSize(4, self.fillUsername);
- }
- if (self.hasFillOauthScope) {
- size_ += computeBoolSize(5, self.fillOauthScope);
- }
- size_ += self.unknownFields.serializedSize;
- memoizedSerializedSize = size_;
- return size_;
-}
-+ (RMTSimpleRequest*) parseFromData:(NSData*) data {
- return (RMTSimpleRequest*)[[[RMTSimpleRequest builder] mergeFromData:data] build];
-}
-+ (RMTSimpleRequest*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTSimpleRequest*)[[[RMTSimpleRequest builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
-}
-+ (RMTSimpleRequest*) parseFromInputStream:(NSInputStream*) input {
- return (RMTSimpleRequest*)[[[RMTSimpleRequest builder] mergeFromInputStream:input] build];
-}
-+ (RMTSimpleRequest*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTSimpleRequest*)[[[RMTSimpleRequest builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RMTSimpleRequest*) parseFromCodedInputStream:(PBCodedInputStream*) input {
- return (RMTSimpleRequest*)[[[RMTSimpleRequest builder] mergeFromCodedInputStream:input] build];
-}
-+ (RMTSimpleRequest*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTSimpleRequest*)[[[RMTSimpleRequest builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RMTSimpleRequestBuilder*) builder {
- return [[RMTSimpleRequestBuilder alloc] init];
-}
-+ (RMTSimpleRequestBuilder*) builderWithPrototype:(RMTSimpleRequest*) prototype {
- return [[RMTSimpleRequest builder] mergeFrom:prototype];
-}
-- (RMTSimpleRequestBuilder*) builder {
- return [RMTSimpleRequest builder];
-}
-- (RMTSimpleRequestBuilder*) toBuilder {
- return [RMTSimpleRequest builderWithPrototype:self];
-}
-- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
- if (self.hasResponseType) {
- [output appendFormat:@"%@%@: %@\n", indent, @"responseType", NSStringFromRMTPayloadType(self.responseType)];
- }
- if (self.hasResponseSize) {
- [output appendFormat:@"%@%@: %@\n", indent, @"responseSize", [NSNumber numberWithInteger:self.responseSize]];
- }
- if (self.hasPayload) {
- [output appendFormat:@"%@%@ {\n", indent, @"payload"];
- [self.payload writeDescriptionTo:output
- withIndent:[NSString stringWithFormat:@"%@ ", indent]];
- [output appendFormat:@"%@}\n", indent];
- }
- if (self.hasFillUsername) {
- [output appendFormat:@"%@%@: %@\n", indent, @"fillUsername", [NSNumber numberWithBool:self.fillUsername]];
- }
- if (self.hasFillOauthScope) {
- [output appendFormat:@"%@%@: %@\n", indent, @"fillOauthScope", [NSNumber numberWithBool:self.fillOauthScope]];
- }
- [self.unknownFields writeDescriptionTo:output withIndent:indent];
-}
-- (BOOL) isEqual:(id)other {
- if (other == self) {
- return YES;
- }
- if (![other isKindOfClass:[RMTSimpleRequest class]]) {
- return NO;
- }
- RMTSimpleRequest *otherMessage = other;
- return
- self.hasResponseType == otherMessage.hasResponseType &&
- (!self.hasResponseType || self.responseType == otherMessage.responseType) &&
- self.hasResponseSize == otherMessage.hasResponseSize &&
- (!self.hasResponseSize || self.responseSize == otherMessage.responseSize) &&
- self.hasPayload == otherMessage.hasPayload &&
- (!self.hasPayload || [self.payload isEqual:otherMessage.payload]) &&
- self.hasFillUsername == otherMessage.hasFillUsername &&
- (!self.hasFillUsername || self.fillUsername == otherMessage.fillUsername) &&
- self.hasFillOauthScope == otherMessage.hasFillOauthScope &&
- (!self.hasFillOauthScope || self.fillOauthScope == otherMessage.fillOauthScope) &&
- (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
-}
-- (NSUInteger) hash {
- __block NSUInteger hashCode = 7;
- if (self.hasResponseType) {
- hashCode = hashCode * 31 + self.responseType;
- }
- if (self.hasResponseSize) {
- hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.responseSize] hash];
- }
- if (self.hasPayload) {
- hashCode = hashCode * 31 + [self.payload hash];
- }
- if (self.hasFillUsername) {
- hashCode = hashCode * 31 + [[NSNumber numberWithBool:self.fillUsername] hash];
- }
- if (self.hasFillOauthScope) {
- hashCode = hashCode * 31 + [[NSNumber numberWithBool:self.fillOauthScope] hash];
- }
- hashCode = hashCode * 31 + [self.unknownFields hash];
- return hashCode;
-}
-@end
-
-@interface RMTSimpleRequestBuilder()
-@property (strong) RMTSimpleRequest* resultSimpleRequest;
-@end
-
-@implementation RMTSimpleRequestBuilder
-@synthesize resultSimpleRequest;
-- (instancetype) init {
- if ((self = [super init])) {
- self.resultSimpleRequest = [[RMTSimpleRequest alloc] init];
- }
- return self;
-}
-- (PBGeneratedMessage*) internalGetResult {
- return resultSimpleRequest;
-}
-- (RMTSimpleRequestBuilder*) clear {
- self.resultSimpleRequest = [[RMTSimpleRequest alloc] init];
- return self;
-}
-- (RMTSimpleRequestBuilder*) clone {
- return [RMTSimpleRequest builderWithPrototype:resultSimpleRequest];
-}
-- (RMTSimpleRequest*) defaultInstance {
- return [RMTSimpleRequest defaultInstance];
-}
-- (RMTSimpleRequest*) build {
- [self checkInitialized];
- return [self buildPartial];
-}
-- (RMTSimpleRequest*) buildPartial {
- RMTSimpleRequest* returnMe = resultSimpleRequest;
- self.resultSimpleRequest = nil;
- return returnMe;
-}
-- (RMTSimpleRequestBuilder*) mergeFrom:(RMTSimpleRequest*) other {
- if (other == [RMTSimpleRequest defaultInstance]) {
- return self;
- }
- if (other.hasResponseType) {
- [self setResponseType:other.responseType];
- }
- if (other.hasResponseSize) {
- [self setResponseSize:other.responseSize];
- }
- if (other.hasPayload) {
- [self mergePayload:other.payload];
- }
- if (other.hasFillUsername) {
- [self setFillUsername:other.fillUsername];
- }
- if (other.hasFillOauthScope) {
- [self setFillOauthScope:other.fillOauthScope];
- }
- [self mergeUnknownFields:other.unknownFields];
- return self;
-}
-- (RMTSimpleRequestBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
- return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
-}
-- (RMTSimpleRequestBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
- while (YES) {
- SInt32 tag = [input readTag];
- switch (tag) {
- case 0:
- [self setUnknownFields:[unknownFields build]];
- return self;
- default: {
- if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
- [self setUnknownFields:[unknownFields build]];
- return self;
- }
- break;
- }
- case 8: {
- RMTPayloadType value = (RMTPayloadType)[input readEnum];
- if (RMTPayloadTypeIsValidValue(value)) {
- [self setResponseType:value];
- } else {
- [unknownFields mergeVarintField:1 value:value];
- }
- break;
- }
- case 16: {
- [self setResponseSize:[input readInt32]];
- break;
- }
- case 26: {
- RMTPayloadBuilder* subBuilder = [RMTPayload builder];
- if (self.hasPayload) {
- [subBuilder mergeFrom:self.payload];
- }
- [input readMessage:subBuilder extensionRegistry:extensionRegistry];
- [self setPayload:[subBuilder buildPartial]];
- break;
- }
- case 32: {
- [self setFillUsername:[input readBool]];
- break;
- }
- case 40: {
- [self setFillOauthScope:[input readBool]];
- break;
- }
- }
- }
-}
-- (BOOL) hasResponseType {
- return resultSimpleRequest.hasResponseType;
-}
-- (RMTPayloadType) responseType {
- return resultSimpleRequest.responseType;
-}
-- (RMTSimpleRequestBuilder*) setResponseType:(RMTPayloadType) value {
- resultSimpleRequest.hasResponseType = YES;
- resultSimpleRequest.responseType = value;
- return self;
-}
-- (RMTSimpleRequestBuilder*) clearResponseType {
- resultSimpleRequest.hasResponseType = NO;
- resultSimpleRequest.responseType = RMTPayloadTypeCompressable;
- return self;
-}
-- (BOOL) hasResponseSize {
- return resultSimpleRequest.hasResponseSize;
-}
-- (SInt32) responseSize {
- return resultSimpleRequest.responseSize;
-}
-- (RMTSimpleRequestBuilder*) setResponseSize:(SInt32) value {
- resultSimpleRequest.hasResponseSize = YES;
- resultSimpleRequest.responseSize = value;
- return self;
-}
-- (RMTSimpleRequestBuilder*) clearResponseSize {
- resultSimpleRequest.hasResponseSize = NO;
- resultSimpleRequest.responseSize = 0;
- return self;
-}
-- (BOOL) hasPayload {
- return resultSimpleRequest.hasPayload;
-}
-- (RMTPayload*) payload {
- return resultSimpleRequest.payload;
-}
-- (RMTSimpleRequestBuilder*) setPayload:(RMTPayload*) value {
- resultSimpleRequest.hasPayload = YES;
- resultSimpleRequest.payload = value;
- return self;
-}
-- (RMTSimpleRequestBuilder*) setPayloadBuilder:(RMTPayloadBuilder*) builderForValue {
- return [self setPayload:[builderForValue build]];
-}
-- (RMTSimpleRequestBuilder*) mergePayload:(RMTPayload*) value {
- if (resultSimpleRequest.hasPayload &&
- resultSimpleRequest.payload != [RMTPayload defaultInstance]) {
- resultSimpleRequest.payload =
- [[[RMTPayload builderWithPrototype:resultSimpleRequest.payload] mergeFrom:value] buildPartial];
- } else {
- resultSimpleRequest.payload = value;
- }
- resultSimpleRequest.hasPayload = YES;
- return self;
-}
-- (RMTSimpleRequestBuilder*) clearPayload {
- resultSimpleRequest.hasPayload = NO;
- resultSimpleRequest.payload = [RMTPayload defaultInstance];
- return self;
-}
-- (BOOL) hasFillUsername {
- return resultSimpleRequest.hasFillUsername;
-}
-- (BOOL) fillUsername {
- return resultSimpleRequest.fillUsername;
-}
-- (RMTSimpleRequestBuilder*) setFillUsername:(BOOL) value {
- resultSimpleRequest.hasFillUsername = YES;
- resultSimpleRequest.fillUsername = value;
- return self;
-}
-- (RMTSimpleRequestBuilder*) clearFillUsername {
- resultSimpleRequest.hasFillUsername = NO;
- resultSimpleRequest.fillUsername = NO;
- return self;
-}
-- (BOOL) hasFillOauthScope {
- return resultSimpleRequest.hasFillOauthScope;
-}
-- (BOOL) fillOauthScope {
- return resultSimpleRequest.fillOauthScope;
-}
-- (RMTSimpleRequestBuilder*) setFillOauthScope:(BOOL) value {
- resultSimpleRequest.hasFillOauthScope = YES;
- resultSimpleRequest.fillOauthScope = value;
- return self;
-}
-- (RMTSimpleRequestBuilder*) clearFillOauthScope {
- resultSimpleRequest.hasFillOauthScope = NO;
- resultSimpleRequest.fillOauthScope = NO;
- return self;
-}
-@end
-
-@interface RMTSimpleResponse ()
-@property (strong) RMTPayload* payload;
-@property (strong) NSString* username;
-@property (strong) NSString* oauthScope;
-@end
-
-@implementation RMTSimpleResponse
-
-- (BOOL) hasPayload {
- return !!hasPayload_;
-}
-- (void) setHasPayload:(BOOL) _value_ {
- hasPayload_ = !!_value_;
-}
-@synthesize payload;
-- (BOOL) hasUsername {
- return !!hasUsername_;
-}
-- (void) setHasUsername:(BOOL) _value_ {
- hasUsername_ = !!_value_;
-}
-@synthesize username;
-- (BOOL) hasOauthScope {
- return !!hasOauthScope_;
-}
-- (void) setHasOauthScope:(BOOL) _value_ {
- hasOauthScope_ = !!_value_;
-}
-@synthesize oauthScope;
-- (instancetype) init {
- if ((self = [super init])) {
- self.payload = [RMTPayload defaultInstance];
- self.username = @"";
- self.oauthScope = @"";
- }
- return self;
-}
-static RMTSimpleResponse* defaultRMTSimpleResponseInstance = nil;
-+ (void) initialize {
- if (self == [RMTSimpleResponse class]) {
- defaultRMTSimpleResponseInstance = [[RMTSimpleResponse alloc] init];
- }
-}
-+ (instancetype) defaultInstance {
- return defaultRMTSimpleResponseInstance;
-}
-- (instancetype) defaultInstance {
- return defaultRMTSimpleResponseInstance;
-}
-- (BOOL) isInitialized {
- return YES;
-}
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
- if (self.hasPayload) {
- [output writeMessage:1 value:self.payload];
- }
- if (self.hasUsername) {
- [output writeString:2 value:self.username];
- }
- if (self.hasOauthScope) {
- [output writeString:3 value:self.oauthScope];
- }
- [self.unknownFields writeToCodedOutputStream:output];
-}
-- (SInt32) serializedSize {
- __block SInt32 size_ = memoizedSerializedSize;
- if (size_ != -1) {
- return size_;
- }
-
- size_ = 0;
- if (self.hasPayload) {
- size_ += computeMessageSize(1, self.payload);
- }
- if (self.hasUsername) {
- size_ += computeStringSize(2, self.username);
- }
- if (self.hasOauthScope) {
- size_ += computeStringSize(3, self.oauthScope);
- }
- size_ += self.unknownFields.serializedSize;
- memoizedSerializedSize = size_;
- return size_;
-}
-+ (RMTSimpleResponse*) parseFromData:(NSData*) data {
- return (RMTSimpleResponse*)[[[RMTSimpleResponse builder] mergeFromData:data] build];
-}
-+ (RMTSimpleResponse*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTSimpleResponse*)[[[RMTSimpleResponse builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
-}
-+ (RMTSimpleResponse*) parseFromInputStream:(NSInputStream*) input {
- return (RMTSimpleResponse*)[[[RMTSimpleResponse builder] mergeFromInputStream:input] build];
-}
-+ (RMTSimpleResponse*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTSimpleResponse*)[[[RMTSimpleResponse builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RMTSimpleResponse*) parseFromCodedInputStream:(PBCodedInputStream*) input {
- return (RMTSimpleResponse*)[[[RMTSimpleResponse builder] mergeFromCodedInputStream:input] build];
-}
-+ (RMTSimpleResponse*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTSimpleResponse*)[[[RMTSimpleResponse builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RMTSimpleResponseBuilder*) builder {
- return [[RMTSimpleResponseBuilder alloc] init];
-}
-+ (RMTSimpleResponseBuilder*) builderWithPrototype:(RMTSimpleResponse*) prototype {
- return [[RMTSimpleResponse builder] mergeFrom:prototype];
-}
-- (RMTSimpleResponseBuilder*) builder {
- return [RMTSimpleResponse builder];
-}
-- (RMTSimpleResponseBuilder*) toBuilder {
- return [RMTSimpleResponse builderWithPrototype:self];
-}
-- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
- if (self.hasPayload) {
- [output appendFormat:@"%@%@ {\n", indent, @"payload"];
- [self.payload writeDescriptionTo:output
- withIndent:[NSString stringWithFormat:@"%@ ", indent]];
- [output appendFormat:@"%@}\n", indent];
- }
- if (self.hasUsername) {
- [output appendFormat:@"%@%@: %@\n", indent, @"username", self.username];
- }
- if (self.hasOauthScope) {
- [output appendFormat:@"%@%@: %@\n", indent, @"oauthScope", self.oauthScope];
- }
- [self.unknownFields writeDescriptionTo:output withIndent:indent];
-}
-- (BOOL) isEqual:(id)other {
- if (other == self) {
- return YES;
- }
- if (![other isKindOfClass:[RMTSimpleResponse class]]) {
- return NO;
- }
- RMTSimpleResponse *otherMessage = other;
- return
- self.hasPayload == otherMessage.hasPayload &&
- (!self.hasPayload || [self.payload isEqual:otherMessage.payload]) &&
- self.hasUsername == otherMessage.hasUsername &&
- (!self.hasUsername || [self.username isEqual:otherMessage.username]) &&
- self.hasOauthScope == otherMessage.hasOauthScope &&
- (!self.hasOauthScope || [self.oauthScope isEqual:otherMessage.oauthScope]) &&
- (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
-}
-- (NSUInteger) hash {
- __block NSUInteger hashCode = 7;
- if (self.hasPayload) {
- hashCode = hashCode * 31 + [self.payload hash];
- }
- if (self.hasUsername) {
- hashCode = hashCode * 31 + [self.username hash];
- }
- if (self.hasOauthScope) {
- hashCode = hashCode * 31 + [self.oauthScope hash];
- }
- hashCode = hashCode * 31 + [self.unknownFields hash];
- return hashCode;
-}
-@end
-
-@interface RMTSimpleResponseBuilder()
-@property (strong) RMTSimpleResponse* resultSimpleResponse;
-@end
-
-@implementation RMTSimpleResponseBuilder
-@synthesize resultSimpleResponse;
-- (instancetype) init {
- if ((self = [super init])) {
- self.resultSimpleResponse = [[RMTSimpleResponse alloc] init];
- }
- return self;
-}
-- (PBGeneratedMessage*) internalGetResult {
- return resultSimpleResponse;
-}
-- (RMTSimpleResponseBuilder*) clear {
- self.resultSimpleResponse = [[RMTSimpleResponse alloc] init];
- return self;
-}
-- (RMTSimpleResponseBuilder*) clone {
- return [RMTSimpleResponse builderWithPrototype:resultSimpleResponse];
-}
-- (RMTSimpleResponse*) defaultInstance {
- return [RMTSimpleResponse defaultInstance];
-}
-- (RMTSimpleResponse*) build {
- [self checkInitialized];
- return [self buildPartial];
-}
-- (RMTSimpleResponse*) buildPartial {
- RMTSimpleResponse* returnMe = resultSimpleResponse;
- self.resultSimpleResponse = nil;
- return returnMe;
-}
-- (RMTSimpleResponseBuilder*) mergeFrom:(RMTSimpleResponse*) other {
- if (other == [RMTSimpleResponse defaultInstance]) {
- return self;
- }
- if (other.hasPayload) {
- [self mergePayload:other.payload];
- }
- if (other.hasUsername) {
- [self setUsername:other.username];
- }
- if (other.hasOauthScope) {
- [self setOauthScope:other.oauthScope];
- }
- [self mergeUnknownFields:other.unknownFields];
- return self;
-}
-- (RMTSimpleResponseBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
- return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
-}
-- (RMTSimpleResponseBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
- while (YES) {
- SInt32 tag = [input readTag];
- switch (tag) {
- case 0:
- [self setUnknownFields:[unknownFields build]];
- return self;
- default: {
- if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
- [self setUnknownFields:[unknownFields build]];
- return self;
- }
- break;
- }
- case 10: {
- RMTPayloadBuilder* subBuilder = [RMTPayload builder];
- if (self.hasPayload) {
- [subBuilder mergeFrom:self.payload];
- }
- [input readMessage:subBuilder extensionRegistry:extensionRegistry];
- [self setPayload:[subBuilder buildPartial]];
- break;
- }
- case 18: {
- [self setUsername:[input readString]];
- break;
- }
- case 26: {
- [self setOauthScope:[input readString]];
- break;
- }
- }
- }
-}
-- (BOOL) hasPayload {
- return resultSimpleResponse.hasPayload;
-}
-- (RMTPayload*) payload {
- return resultSimpleResponse.payload;
-}
-- (RMTSimpleResponseBuilder*) setPayload:(RMTPayload*) value {
- resultSimpleResponse.hasPayload = YES;
- resultSimpleResponse.payload = value;
- return self;
-}
-- (RMTSimpleResponseBuilder*) setPayloadBuilder:(RMTPayloadBuilder*) builderForValue {
- return [self setPayload:[builderForValue build]];
-}
-- (RMTSimpleResponseBuilder*) mergePayload:(RMTPayload*) value {
- if (resultSimpleResponse.hasPayload &&
- resultSimpleResponse.payload != [RMTPayload defaultInstance]) {
- resultSimpleResponse.payload =
- [[[RMTPayload builderWithPrototype:resultSimpleResponse.payload] mergeFrom:value] buildPartial];
- } else {
- resultSimpleResponse.payload = value;
- }
- resultSimpleResponse.hasPayload = YES;
- return self;
-}
-- (RMTSimpleResponseBuilder*) clearPayload {
- resultSimpleResponse.hasPayload = NO;
- resultSimpleResponse.payload = [RMTPayload defaultInstance];
- return self;
-}
-- (BOOL) hasUsername {
- return resultSimpleResponse.hasUsername;
-}
-- (NSString*) username {
- return resultSimpleResponse.username;
-}
-- (RMTSimpleResponseBuilder*) setUsername:(NSString*) value {
- resultSimpleResponse.hasUsername = YES;
- resultSimpleResponse.username = value;
- return self;
-}
-- (RMTSimpleResponseBuilder*) clearUsername {
- resultSimpleResponse.hasUsername = NO;
- resultSimpleResponse.username = @"";
- return self;
-}
-- (BOOL) hasOauthScope {
- return resultSimpleResponse.hasOauthScope;
-}
-- (NSString*) oauthScope {
- return resultSimpleResponse.oauthScope;
-}
-- (RMTSimpleResponseBuilder*) setOauthScope:(NSString*) value {
- resultSimpleResponse.hasOauthScope = YES;
- resultSimpleResponse.oauthScope = value;
- return self;
-}
-- (RMTSimpleResponseBuilder*) clearOauthScope {
- resultSimpleResponse.hasOauthScope = NO;
- resultSimpleResponse.oauthScope = @"";
- return self;
-}
-@end
-
-@interface RMTStreamingInputCallRequest ()
-@property (strong) RMTPayload* payload;
-@end
-
-@implementation RMTStreamingInputCallRequest
-
-- (BOOL) hasPayload {
- return !!hasPayload_;
-}
-- (void) setHasPayload:(BOOL) _value_ {
- hasPayload_ = !!_value_;
-}
-@synthesize payload;
-- (instancetype) init {
- if ((self = [super init])) {
- self.payload = [RMTPayload defaultInstance];
- }
- return self;
-}
-static RMTStreamingInputCallRequest* defaultRMTStreamingInputCallRequestInstance = nil;
-+ (void) initialize {
- if (self == [RMTStreamingInputCallRequest class]) {
- defaultRMTStreamingInputCallRequestInstance = [[RMTStreamingInputCallRequest alloc] init];
- }
-}
-+ (instancetype) defaultInstance {
- return defaultRMTStreamingInputCallRequestInstance;
-}
-- (instancetype) defaultInstance {
- return defaultRMTStreamingInputCallRequestInstance;
-}
-- (BOOL) isInitialized {
- return YES;
-}
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
- if (self.hasPayload) {
- [output writeMessage:1 value:self.payload];
- }
- [self.unknownFields writeToCodedOutputStream:output];
-}
-- (SInt32) serializedSize {
- __block SInt32 size_ = memoizedSerializedSize;
- if (size_ != -1) {
- return size_;
- }
-
- size_ = 0;
- if (self.hasPayload) {
- size_ += computeMessageSize(1, self.payload);
- }
- size_ += self.unknownFields.serializedSize;
- memoizedSerializedSize = size_;
- return size_;
-}
-+ (RMTStreamingInputCallRequest*) parseFromData:(NSData*) data {
- return (RMTStreamingInputCallRequest*)[[[RMTStreamingInputCallRequest builder] mergeFromData:data] build];
-}
-+ (RMTStreamingInputCallRequest*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTStreamingInputCallRequest*)[[[RMTStreamingInputCallRequest builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
-}
-+ (RMTStreamingInputCallRequest*) parseFromInputStream:(NSInputStream*) input {
- return (RMTStreamingInputCallRequest*)[[[RMTStreamingInputCallRequest builder] mergeFromInputStream:input] build];
-}
-+ (RMTStreamingInputCallRequest*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTStreamingInputCallRequest*)[[[RMTStreamingInputCallRequest builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RMTStreamingInputCallRequest*) parseFromCodedInputStream:(PBCodedInputStream*) input {
- return (RMTStreamingInputCallRequest*)[[[RMTStreamingInputCallRequest builder] mergeFromCodedInputStream:input] build];
-}
-+ (RMTStreamingInputCallRequest*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTStreamingInputCallRequest*)[[[RMTStreamingInputCallRequest builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RMTStreamingInputCallRequestBuilder*) builder {
- return [[RMTStreamingInputCallRequestBuilder alloc] init];
-}
-+ (RMTStreamingInputCallRequestBuilder*) builderWithPrototype:(RMTStreamingInputCallRequest*) prototype {
- return [[RMTStreamingInputCallRequest builder] mergeFrom:prototype];
-}
-- (RMTStreamingInputCallRequestBuilder*) builder {
- return [RMTStreamingInputCallRequest builder];
-}
-- (RMTStreamingInputCallRequestBuilder*) toBuilder {
- return [RMTStreamingInputCallRequest builderWithPrototype:self];
-}
-- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
- if (self.hasPayload) {
- [output appendFormat:@"%@%@ {\n", indent, @"payload"];
- [self.payload writeDescriptionTo:output
- withIndent:[NSString stringWithFormat:@"%@ ", indent]];
- [output appendFormat:@"%@}\n", indent];
- }
- [self.unknownFields writeDescriptionTo:output withIndent:indent];
-}
-- (BOOL) isEqual:(id)other {
- if (other == self) {
- return YES;
- }
- if (![other isKindOfClass:[RMTStreamingInputCallRequest class]]) {
- return NO;
- }
- RMTStreamingInputCallRequest *otherMessage = other;
- return
- self.hasPayload == otherMessage.hasPayload &&
- (!self.hasPayload || [self.payload isEqual:otherMessage.payload]) &&
- (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
-}
-- (NSUInteger) hash {
- __block NSUInteger hashCode = 7;
- if (self.hasPayload) {
- hashCode = hashCode * 31 + [self.payload hash];
- }
- hashCode = hashCode * 31 + [self.unknownFields hash];
- return hashCode;
-}
-@end
-
-@interface RMTStreamingInputCallRequestBuilder()
-@property (strong) RMTStreamingInputCallRequest* resultStreamingInputCallRequest;
-@end
-
-@implementation RMTStreamingInputCallRequestBuilder
-@synthesize resultStreamingInputCallRequest;
-- (instancetype) init {
- if ((self = [super init])) {
- self.resultStreamingInputCallRequest = [[RMTStreamingInputCallRequest alloc] init];
- }
- return self;
-}
-- (PBGeneratedMessage*) internalGetResult {
- return resultStreamingInputCallRequest;
-}
-- (RMTStreamingInputCallRequestBuilder*) clear {
- self.resultStreamingInputCallRequest = [[RMTStreamingInputCallRequest alloc] init];
- return self;
-}
-- (RMTStreamingInputCallRequestBuilder*) clone {
- return [RMTStreamingInputCallRequest builderWithPrototype:resultStreamingInputCallRequest];
-}
-- (RMTStreamingInputCallRequest*) defaultInstance {
- return [RMTStreamingInputCallRequest defaultInstance];
-}
-- (RMTStreamingInputCallRequest*) build {
- [self checkInitialized];
- return [self buildPartial];
-}
-- (RMTStreamingInputCallRequest*) buildPartial {
- RMTStreamingInputCallRequest* returnMe = resultStreamingInputCallRequest;
- self.resultStreamingInputCallRequest = nil;
- return returnMe;
-}
-- (RMTStreamingInputCallRequestBuilder*) mergeFrom:(RMTStreamingInputCallRequest*) other {
- if (other == [RMTStreamingInputCallRequest defaultInstance]) {
- return self;
- }
- if (other.hasPayload) {
- [self mergePayload:other.payload];
- }
- [self mergeUnknownFields:other.unknownFields];
- return self;
-}
-- (RMTStreamingInputCallRequestBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
- return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
-}
-- (RMTStreamingInputCallRequestBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
- while (YES) {
- SInt32 tag = [input readTag];
- switch (tag) {
- case 0:
- [self setUnknownFields:[unknownFields build]];
- return self;
- default: {
- if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
- [self setUnknownFields:[unknownFields build]];
- return self;
- }
- break;
- }
- case 10: {
- RMTPayloadBuilder* subBuilder = [RMTPayload builder];
- if (self.hasPayload) {
- [subBuilder mergeFrom:self.payload];
- }
- [input readMessage:subBuilder extensionRegistry:extensionRegistry];
- [self setPayload:[subBuilder buildPartial]];
- break;
- }
- }
- }
-}
-- (BOOL) hasPayload {
- return resultStreamingInputCallRequest.hasPayload;
-}
-- (RMTPayload*) payload {
- return resultStreamingInputCallRequest.payload;
-}
-- (RMTStreamingInputCallRequestBuilder*) setPayload:(RMTPayload*) value {
- resultStreamingInputCallRequest.hasPayload = YES;
- resultStreamingInputCallRequest.payload = value;
- return self;
-}
-- (RMTStreamingInputCallRequestBuilder*) setPayloadBuilder:(RMTPayloadBuilder*) builderForValue {
- return [self setPayload:[builderForValue build]];
-}
-- (RMTStreamingInputCallRequestBuilder*) mergePayload:(RMTPayload*) value {
- if (resultStreamingInputCallRequest.hasPayload &&
- resultStreamingInputCallRequest.payload != [RMTPayload defaultInstance]) {
- resultStreamingInputCallRequest.payload =
- [[[RMTPayload builderWithPrototype:resultStreamingInputCallRequest.payload] mergeFrom:value] buildPartial];
- } else {
- resultStreamingInputCallRequest.payload = value;
- }
- resultStreamingInputCallRequest.hasPayload = YES;
- return self;
-}
-- (RMTStreamingInputCallRequestBuilder*) clearPayload {
- resultStreamingInputCallRequest.hasPayload = NO;
- resultStreamingInputCallRequest.payload = [RMTPayload defaultInstance];
- return self;
-}
-@end
-
-@interface RMTStreamingInputCallResponse ()
-@property SInt32 aggregatedPayloadSize;
-@end
-
-@implementation RMTStreamingInputCallResponse
-
-- (BOOL) hasAggregatedPayloadSize {
- return !!hasAggregatedPayloadSize_;
-}
-- (void) setHasAggregatedPayloadSize:(BOOL) _value_ {
- hasAggregatedPayloadSize_ = !!_value_;
-}
-@synthesize aggregatedPayloadSize;
-- (instancetype) init {
- if ((self = [super init])) {
- self.aggregatedPayloadSize = 0;
- }
- return self;
-}
-static RMTStreamingInputCallResponse* defaultRMTStreamingInputCallResponseInstance = nil;
-+ (void) initialize {
- if (self == [RMTStreamingInputCallResponse class]) {
- defaultRMTStreamingInputCallResponseInstance = [[RMTStreamingInputCallResponse alloc] init];
- }
-}
-+ (instancetype) defaultInstance {
- return defaultRMTStreamingInputCallResponseInstance;
-}
-- (instancetype) defaultInstance {
- return defaultRMTStreamingInputCallResponseInstance;
-}
-- (BOOL) isInitialized {
- return YES;
-}
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
- if (self.hasAggregatedPayloadSize) {
- [output writeInt32:1 value:self.aggregatedPayloadSize];
- }
- [self.unknownFields writeToCodedOutputStream:output];
-}
-- (SInt32) serializedSize {
- __block SInt32 size_ = memoizedSerializedSize;
- if (size_ != -1) {
- return size_;
- }
-
- size_ = 0;
- if (self.hasAggregatedPayloadSize) {
- size_ += computeInt32Size(1, self.aggregatedPayloadSize);
- }
- size_ += self.unknownFields.serializedSize;
- memoizedSerializedSize = size_;
- return size_;
-}
-+ (RMTStreamingInputCallResponse*) parseFromData:(NSData*) data {
- return (RMTStreamingInputCallResponse*)[[[RMTStreamingInputCallResponse builder] mergeFromData:data] build];
-}
-+ (RMTStreamingInputCallResponse*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTStreamingInputCallResponse*)[[[RMTStreamingInputCallResponse builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
-}
-+ (RMTStreamingInputCallResponse*) parseFromInputStream:(NSInputStream*) input {
- return (RMTStreamingInputCallResponse*)[[[RMTStreamingInputCallResponse builder] mergeFromInputStream:input] build];
-}
-+ (RMTStreamingInputCallResponse*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTStreamingInputCallResponse*)[[[RMTStreamingInputCallResponse builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RMTStreamingInputCallResponse*) parseFromCodedInputStream:(PBCodedInputStream*) input {
- return (RMTStreamingInputCallResponse*)[[[RMTStreamingInputCallResponse builder] mergeFromCodedInputStream:input] build];
-}
-+ (RMTStreamingInputCallResponse*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTStreamingInputCallResponse*)[[[RMTStreamingInputCallResponse builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RMTStreamingInputCallResponseBuilder*) builder {
- return [[RMTStreamingInputCallResponseBuilder alloc] init];
-}
-+ (RMTStreamingInputCallResponseBuilder*) builderWithPrototype:(RMTStreamingInputCallResponse*) prototype {
- return [[RMTStreamingInputCallResponse builder] mergeFrom:prototype];
-}
-- (RMTStreamingInputCallResponseBuilder*) builder {
- return [RMTStreamingInputCallResponse builder];
-}
-- (RMTStreamingInputCallResponseBuilder*) toBuilder {
- return [RMTStreamingInputCallResponse builderWithPrototype:self];
-}
-- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
- if (self.hasAggregatedPayloadSize) {
- [output appendFormat:@"%@%@: %@\n", indent, @"aggregatedPayloadSize", [NSNumber numberWithInteger:self.aggregatedPayloadSize]];
- }
- [self.unknownFields writeDescriptionTo:output withIndent:indent];
-}
-- (BOOL) isEqual:(id)other {
- if (other == self) {
- return YES;
- }
- if (![other isKindOfClass:[RMTStreamingInputCallResponse class]]) {
- return NO;
- }
- RMTStreamingInputCallResponse *otherMessage = other;
- return
- self.hasAggregatedPayloadSize == otherMessage.hasAggregatedPayloadSize &&
- (!self.hasAggregatedPayloadSize || self.aggregatedPayloadSize == otherMessage.aggregatedPayloadSize) &&
- (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
-}
-- (NSUInteger) hash {
- __block NSUInteger hashCode = 7;
- if (self.hasAggregatedPayloadSize) {
- hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.aggregatedPayloadSize] hash];
- }
- hashCode = hashCode * 31 + [self.unknownFields hash];
- return hashCode;
-}
-@end
-
-@interface RMTStreamingInputCallResponseBuilder()
-@property (strong) RMTStreamingInputCallResponse* resultStreamingInputCallResponse;
-@end
-
-@implementation RMTStreamingInputCallResponseBuilder
-@synthesize resultStreamingInputCallResponse;
-- (instancetype) init {
- if ((self = [super init])) {
- self.resultStreamingInputCallResponse = [[RMTStreamingInputCallResponse alloc] init];
- }
- return self;
-}
-- (PBGeneratedMessage*) internalGetResult {
- return resultStreamingInputCallResponse;
-}
-- (RMTStreamingInputCallResponseBuilder*) clear {
- self.resultStreamingInputCallResponse = [[RMTStreamingInputCallResponse alloc] init];
- return self;
-}
-- (RMTStreamingInputCallResponseBuilder*) clone {
- return [RMTStreamingInputCallResponse builderWithPrototype:resultStreamingInputCallResponse];
-}
-- (RMTStreamingInputCallResponse*) defaultInstance {
- return [RMTStreamingInputCallResponse defaultInstance];
-}
-- (RMTStreamingInputCallResponse*) build {
- [self checkInitialized];
- return [self buildPartial];
-}
-- (RMTStreamingInputCallResponse*) buildPartial {
- RMTStreamingInputCallResponse* returnMe = resultStreamingInputCallResponse;
- self.resultStreamingInputCallResponse = nil;
- return returnMe;
-}
-- (RMTStreamingInputCallResponseBuilder*) mergeFrom:(RMTStreamingInputCallResponse*) other {
- if (other == [RMTStreamingInputCallResponse defaultInstance]) {
- return self;
- }
- if (other.hasAggregatedPayloadSize) {
- [self setAggregatedPayloadSize:other.aggregatedPayloadSize];
- }
- [self mergeUnknownFields:other.unknownFields];
- return self;
-}
-- (RMTStreamingInputCallResponseBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
- return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
-}
-- (RMTStreamingInputCallResponseBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
- while (YES) {
- SInt32 tag = [input readTag];
- switch (tag) {
- case 0:
- [self setUnknownFields:[unknownFields build]];
- return self;
- default: {
- if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
- [self setUnknownFields:[unknownFields build]];
- return self;
- }
- break;
- }
- case 8: {
- [self setAggregatedPayloadSize:[input readInt32]];
- break;
- }
- }
- }
-}
-- (BOOL) hasAggregatedPayloadSize {
- return resultStreamingInputCallResponse.hasAggregatedPayloadSize;
-}
-- (SInt32) aggregatedPayloadSize {
- return resultStreamingInputCallResponse.aggregatedPayloadSize;
-}
-- (RMTStreamingInputCallResponseBuilder*) setAggregatedPayloadSize:(SInt32) value {
- resultStreamingInputCallResponse.hasAggregatedPayloadSize = YES;
- resultStreamingInputCallResponse.aggregatedPayloadSize = value;
- return self;
-}
-- (RMTStreamingInputCallResponseBuilder*) clearAggregatedPayloadSize {
- resultStreamingInputCallResponse.hasAggregatedPayloadSize = NO;
- resultStreamingInputCallResponse.aggregatedPayloadSize = 0;
- return self;
-}
-@end
-
-@interface RMTResponseParameters ()
-@property SInt32 size;
-@property SInt32 intervalUs;
-@end
-
-@implementation RMTResponseParameters
-
-- (BOOL) hasSize {
- return !!hasSize_;
-}
-- (void) setHasSize:(BOOL) _value_ {
- hasSize_ = !!_value_;
-}
-@synthesize size;
-- (BOOL) hasIntervalUs {
- return !!hasIntervalUs_;
-}
-- (void) setHasIntervalUs:(BOOL) _value_ {
- hasIntervalUs_ = !!_value_;
-}
-@synthesize intervalUs;
-- (instancetype) init {
- if ((self = [super init])) {
- self.size = 0;
- self.intervalUs = 0;
- }
- return self;
-}
-static RMTResponseParameters* defaultRMTResponseParametersInstance = nil;
-+ (void) initialize {
- if (self == [RMTResponseParameters class]) {
- defaultRMTResponseParametersInstance = [[RMTResponseParameters alloc] init];
- }
-}
-+ (instancetype) defaultInstance {
- return defaultRMTResponseParametersInstance;
-}
-- (instancetype) defaultInstance {
- return defaultRMTResponseParametersInstance;
-}
-- (BOOL) isInitialized {
- return YES;
-}
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
- if (self.hasSize) {
- [output writeInt32:1 value:self.size];
- }
- if (self.hasIntervalUs) {
- [output writeInt32:2 value:self.intervalUs];
- }
- [self.unknownFields writeToCodedOutputStream:output];
-}
-- (SInt32) serializedSize {
- __block SInt32 size_ = memoizedSerializedSize;
- if (size_ != -1) {
- return size_;
- }
-
- size_ = 0;
- if (self.hasSize) {
- size_ += computeInt32Size(1, self.size);
- }
- if (self.hasIntervalUs) {
- size_ += computeInt32Size(2, self.intervalUs);
- }
- size_ += self.unknownFields.serializedSize;
- memoizedSerializedSize = size_;
- return size_;
-}
-+ (RMTResponseParameters*) parseFromData:(NSData*) data {
- return (RMTResponseParameters*)[[[RMTResponseParameters builder] mergeFromData:data] build];
-}
-+ (RMTResponseParameters*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTResponseParameters*)[[[RMTResponseParameters builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
-}
-+ (RMTResponseParameters*) parseFromInputStream:(NSInputStream*) input {
- return (RMTResponseParameters*)[[[RMTResponseParameters builder] mergeFromInputStream:input] build];
-}
-+ (RMTResponseParameters*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTResponseParameters*)[[[RMTResponseParameters builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RMTResponseParameters*) parseFromCodedInputStream:(PBCodedInputStream*) input {
- return (RMTResponseParameters*)[[[RMTResponseParameters builder] mergeFromCodedInputStream:input] build];
-}
-+ (RMTResponseParameters*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTResponseParameters*)[[[RMTResponseParameters builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RMTResponseParametersBuilder*) builder {
- return [[RMTResponseParametersBuilder alloc] init];
-}
-+ (RMTResponseParametersBuilder*) builderWithPrototype:(RMTResponseParameters*) prototype {
- return [[RMTResponseParameters builder] mergeFrom:prototype];
-}
-- (RMTResponseParametersBuilder*) builder {
- return [RMTResponseParameters builder];
-}
-- (RMTResponseParametersBuilder*) toBuilder {
- return [RMTResponseParameters builderWithPrototype:self];
-}
-- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
- if (self.hasSize) {
- [output appendFormat:@"%@%@: %@\n", indent, @"size", [NSNumber numberWithInteger:self.size]];
- }
- if (self.hasIntervalUs) {
- [output appendFormat:@"%@%@: %@\n", indent, @"intervalUs", [NSNumber numberWithInteger:self.intervalUs]];
- }
- [self.unknownFields writeDescriptionTo:output withIndent:indent];
-}
-- (BOOL) isEqual:(id)other {
- if (other == self) {
- return YES;
- }
- if (![other isKindOfClass:[RMTResponseParameters class]]) {
- return NO;
- }
- RMTResponseParameters *otherMessage = other;
- return
- self.hasSize == otherMessage.hasSize &&
- (!self.hasSize || self.size == otherMessage.size) &&
- self.hasIntervalUs == otherMessage.hasIntervalUs &&
- (!self.hasIntervalUs || self.intervalUs == otherMessage.intervalUs) &&
- (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
-}
-- (NSUInteger) hash {
- __block NSUInteger hashCode = 7;
- if (self.hasSize) {
- hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.size] hash];
- }
- if (self.hasIntervalUs) {
- hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.intervalUs] hash];
- }
- hashCode = hashCode * 31 + [self.unknownFields hash];
- return hashCode;
-}
-@end
-
-@interface RMTResponseParametersBuilder()
-@property (strong) RMTResponseParameters* resultResponseParameters;
-@end
-
-@implementation RMTResponseParametersBuilder
-@synthesize resultResponseParameters;
-- (instancetype) init {
- if ((self = [super init])) {
- self.resultResponseParameters = [[RMTResponseParameters alloc] init];
- }
- return self;
-}
-- (PBGeneratedMessage*) internalGetResult {
- return resultResponseParameters;
-}
-- (RMTResponseParametersBuilder*) clear {
- self.resultResponseParameters = [[RMTResponseParameters alloc] init];
- return self;
-}
-- (RMTResponseParametersBuilder*) clone {
- return [RMTResponseParameters builderWithPrototype:resultResponseParameters];
-}
-- (RMTResponseParameters*) defaultInstance {
- return [RMTResponseParameters defaultInstance];
-}
-- (RMTResponseParameters*) build {
- [self checkInitialized];
- return [self buildPartial];
-}
-- (RMTResponseParameters*) buildPartial {
- RMTResponseParameters* returnMe = resultResponseParameters;
- self.resultResponseParameters = nil;
- return returnMe;
-}
-- (RMTResponseParametersBuilder*) mergeFrom:(RMTResponseParameters*) other {
- if (other == [RMTResponseParameters defaultInstance]) {
- return self;
- }
- if (other.hasSize) {
- [self setSize:other.size];
- }
- if (other.hasIntervalUs) {
- [self setIntervalUs:other.intervalUs];
- }
- [self mergeUnknownFields:other.unknownFields];
- return self;
-}
-- (RMTResponseParametersBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
- return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
-}
-- (RMTResponseParametersBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
- while (YES) {
- SInt32 tag = [input readTag];
- switch (tag) {
- case 0:
- [self setUnknownFields:[unknownFields build]];
- return self;
- default: {
- if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
- [self setUnknownFields:[unknownFields build]];
- return self;
- }
- break;
- }
- case 8: {
- [self setSize:[input readInt32]];
- break;
- }
- case 16: {
- [self setIntervalUs:[input readInt32]];
- break;
- }
- }
- }
-}
-- (BOOL) hasSize {
- return resultResponseParameters.hasSize;
-}
-- (SInt32) size {
- return resultResponseParameters.size;
-}
-- (RMTResponseParametersBuilder*) setSize:(SInt32) value {
- resultResponseParameters.hasSize = YES;
- resultResponseParameters.size = value;
- return self;
-}
-- (RMTResponseParametersBuilder*) clearSize {
- resultResponseParameters.hasSize = NO;
- resultResponseParameters.size = 0;
- return self;
-}
-- (BOOL) hasIntervalUs {
- return resultResponseParameters.hasIntervalUs;
-}
-- (SInt32) intervalUs {
- return resultResponseParameters.intervalUs;
-}
-- (RMTResponseParametersBuilder*) setIntervalUs:(SInt32) value {
- resultResponseParameters.hasIntervalUs = YES;
- resultResponseParameters.intervalUs = value;
- return self;
-}
-- (RMTResponseParametersBuilder*) clearIntervalUs {
- resultResponseParameters.hasIntervalUs = NO;
- resultResponseParameters.intervalUs = 0;
- return self;
-}
-@end
-
-@interface RMTStreamingOutputCallRequest ()
-@property RMTPayloadType responseType;
-@property (strong) NSMutableArray * responseParametersArray;
-@property (strong) RMTPayload* payload;
-@end
-
-@implementation RMTStreamingOutputCallRequest
-
-- (BOOL) hasResponseType {
- return !!hasResponseType_;
-}
-- (void) setHasResponseType:(BOOL) _value_ {
- hasResponseType_ = !!_value_;
-}
-@synthesize responseType;
-@synthesize responseParametersArray;
-@dynamic responseParameters;
-- (BOOL) hasPayload {
- return !!hasPayload_;
-}
-- (void) setHasPayload:(BOOL) _value_ {
- hasPayload_ = !!_value_;
-}
-@synthesize payload;
-- (instancetype) init {
- if ((self = [super init])) {
- self.responseType = RMTPayloadTypeCompressable;
- self.payload = [RMTPayload defaultInstance];
- }
- return self;
-}
-static RMTStreamingOutputCallRequest* defaultRMTStreamingOutputCallRequestInstance = nil;
-+ (void) initialize {
- if (self == [RMTStreamingOutputCallRequest class]) {
- defaultRMTStreamingOutputCallRequestInstance = [[RMTStreamingOutputCallRequest alloc] init];
- }
-}
-+ (instancetype) defaultInstance {
- return defaultRMTStreamingOutputCallRequestInstance;
-}
-- (instancetype) defaultInstance {
- return defaultRMTStreamingOutputCallRequestInstance;
-}
-- (NSArray *)responseParameters {
- return responseParametersArray;
-}
-- (RMTResponseParameters*)responseParametersAtIndex:(NSUInteger)index {
- return [responseParametersArray objectAtIndex:index];
-}
-- (BOOL) isInitialized {
- return YES;
-}
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
- if (self.hasResponseType) {
- [output writeEnum:1 value:self.responseType];
- }
- [self.responseParametersArray enumerateObjectsUsingBlock:^(RMTResponseParameters *element, NSUInteger idx, BOOL *stop) {
- [output writeMessage:2 value:element];
- }];
- if (self.hasPayload) {
- [output writeMessage:3 value:self.payload];
- }
- [self.unknownFields writeToCodedOutputStream:output];
-}
-- (SInt32) serializedSize {
- __block SInt32 size_ = memoizedSerializedSize;
- if (size_ != -1) {
- return size_;
- }
-
- size_ = 0;
- if (self.hasResponseType) {
- size_ += computeEnumSize(1, self.responseType);
- }
- [self.responseParametersArray enumerateObjectsUsingBlock:^(RMTResponseParameters *element, NSUInteger idx, BOOL *stop) {
- size_ += computeMessageSize(2, element);
- }];
- if (self.hasPayload) {
- size_ += computeMessageSize(3, self.payload);
- }
- size_ += self.unknownFields.serializedSize;
- memoizedSerializedSize = size_;
- return size_;
-}
-+ (RMTStreamingOutputCallRequest*) parseFromData:(NSData*) data {
- return (RMTStreamingOutputCallRequest*)[[[RMTStreamingOutputCallRequest builder] mergeFromData:data] build];
-}
-+ (RMTStreamingOutputCallRequest*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTStreamingOutputCallRequest*)[[[RMTStreamingOutputCallRequest builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
-}
-+ (RMTStreamingOutputCallRequest*) parseFromInputStream:(NSInputStream*) input {
- return (RMTStreamingOutputCallRequest*)[[[RMTStreamingOutputCallRequest builder] mergeFromInputStream:input] build];
-}
-+ (RMTStreamingOutputCallRequest*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTStreamingOutputCallRequest*)[[[RMTStreamingOutputCallRequest builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RMTStreamingOutputCallRequest*) parseFromCodedInputStream:(PBCodedInputStream*) input {
- return (RMTStreamingOutputCallRequest*)[[[RMTStreamingOutputCallRequest builder] mergeFromCodedInputStream:input] build];
-}
-+ (RMTStreamingOutputCallRequest*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTStreamingOutputCallRequest*)[[[RMTStreamingOutputCallRequest builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RMTStreamingOutputCallRequestBuilder*) builder {
- return [[RMTStreamingOutputCallRequestBuilder alloc] init];
-}
-+ (RMTStreamingOutputCallRequestBuilder*) builderWithPrototype:(RMTStreamingOutputCallRequest*) prototype {
- return [[RMTStreamingOutputCallRequest builder] mergeFrom:prototype];
-}
-- (RMTStreamingOutputCallRequestBuilder*) builder {
- return [RMTStreamingOutputCallRequest builder];
-}
-- (RMTStreamingOutputCallRequestBuilder*) toBuilder {
- return [RMTStreamingOutputCallRequest builderWithPrototype:self];
-}
-- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
- if (self.hasResponseType) {
- [output appendFormat:@"%@%@: %@\n", indent, @"responseType", NSStringFromRMTPayloadType(self.responseType)];
- }
- [self.responseParametersArray enumerateObjectsUsingBlock:^(RMTResponseParameters *element, NSUInteger idx, BOOL *stop) {
- [output appendFormat:@"%@%@ {\n", indent, @"responseParameters"];
- [element writeDescriptionTo:output
- withIndent:[NSString stringWithFormat:@"%@ ", indent]];
- [output appendFormat:@"%@}\n", indent];
- }];
- if (self.hasPayload) {
- [output appendFormat:@"%@%@ {\n", indent, @"payload"];
- [self.payload writeDescriptionTo:output
- withIndent:[NSString stringWithFormat:@"%@ ", indent]];
- [output appendFormat:@"%@}\n", indent];
- }
- [self.unknownFields writeDescriptionTo:output withIndent:indent];
-}
-- (BOOL) isEqual:(id)other {
- if (other == self) {
- return YES;
- }
- if (![other isKindOfClass:[RMTStreamingOutputCallRequest class]]) {
- return NO;
- }
- RMTStreamingOutputCallRequest *otherMessage = other;
- return
- self.hasResponseType == otherMessage.hasResponseType &&
- (!self.hasResponseType || self.responseType == otherMessage.responseType) &&
- [self.responseParametersArray isEqualToArray:otherMessage.responseParametersArray] &&
- self.hasPayload == otherMessage.hasPayload &&
- (!self.hasPayload || [self.payload isEqual:otherMessage.payload]) &&
- (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
-}
-- (NSUInteger) hash {
- __block NSUInteger hashCode = 7;
- if (self.hasResponseType) {
- hashCode = hashCode * 31 + self.responseType;
- }
- [self.responseParametersArray enumerateObjectsUsingBlock:^(RMTResponseParameters *element, NSUInteger idx, BOOL *stop) {
- hashCode = hashCode * 31 + [element hash];
- }];
- if (self.hasPayload) {
- hashCode = hashCode * 31 + [self.payload hash];
- }
- hashCode = hashCode * 31 + [self.unknownFields hash];
- return hashCode;
-}
-@end
-
-@interface RMTStreamingOutputCallRequestBuilder()
-@property (strong) RMTStreamingOutputCallRequest* resultStreamingOutputCallRequest;
-@end
-
-@implementation RMTStreamingOutputCallRequestBuilder
-@synthesize resultStreamingOutputCallRequest;
-- (instancetype) init {
- if ((self = [super init])) {
- self.resultStreamingOutputCallRequest = [[RMTStreamingOutputCallRequest alloc] init];
- }
- return self;
-}
-- (PBGeneratedMessage*) internalGetResult {
- return resultStreamingOutputCallRequest;
-}
-- (RMTStreamingOutputCallRequestBuilder*) clear {
- self.resultStreamingOutputCallRequest = [[RMTStreamingOutputCallRequest alloc] init];
- return self;
-}
-- (RMTStreamingOutputCallRequestBuilder*) clone {
- return [RMTStreamingOutputCallRequest builderWithPrototype:resultStreamingOutputCallRequest];
-}
-- (RMTStreamingOutputCallRequest*) defaultInstance {
- return [RMTStreamingOutputCallRequest defaultInstance];
-}
-- (RMTStreamingOutputCallRequest*) build {
- [self checkInitialized];
- return [self buildPartial];
-}
-- (RMTStreamingOutputCallRequest*) buildPartial {
- RMTStreamingOutputCallRequest* returnMe = resultStreamingOutputCallRequest;
- self.resultStreamingOutputCallRequest = nil;
- return returnMe;
-}
-- (RMTStreamingOutputCallRequestBuilder*) mergeFrom:(RMTStreamingOutputCallRequest*) other {
- if (other == [RMTStreamingOutputCallRequest defaultInstance]) {
- return self;
- }
- if (other.hasResponseType) {
- [self setResponseType:other.responseType];
- }
- if (other.responseParametersArray.count > 0) {
- if (resultStreamingOutputCallRequest.responseParametersArray == nil) {
- resultStreamingOutputCallRequest.responseParametersArray = [[NSMutableArray alloc] initWithArray:other.responseParametersArray];
- } else {
- [resultStreamingOutputCallRequest.responseParametersArray addObjectsFromArray:other.responseParametersArray];
- }
- }
- if (other.hasPayload) {
- [self mergePayload:other.payload];
- }
- [self mergeUnknownFields:other.unknownFields];
- return self;
-}
-- (RMTStreamingOutputCallRequestBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
- return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
-}
-- (RMTStreamingOutputCallRequestBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
- while (YES) {
- SInt32 tag = [input readTag];
- switch (tag) {
- case 0:
- [self setUnknownFields:[unknownFields build]];
- return self;
- default: {
- if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
- [self setUnknownFields:[unknownFields build]];
- return self;
- }
- break;
- }
- case 8: {
- RMTPayloadType value = (RMTPayloadType)[input readEnum];
- if (RMTPayloadTypeIsValidValue(value)) {
- [self setResponseType:value];
- } else {
- [unknownFields mergeVarintField:1 value:value];
- }
- break;
- }
- case 18: {
- RMTResponseParametersBuilder* subBuilder = [RMTResponseParameters builder];
- [input readMessage:subBuilder extensionRegistry:extensionRegistry];
- [self addResponseParameters:[subBuilder buildPartial]];
- break;
- }
- case 26: {
- RMTPayloadBuilder* subBuilder = [RMTPayload builder];
- if (self.hasPayload) {
- [subBuilder mergeFrom:self.payload];
- }
- [input readMessage:subBuilder extensionRegistry:extensionRegistry];
- [self setPayload:[subBuilder buildPartial]];
- break;
- }
- }
- }
-}
-- (BOOL) hasResponseType {
- return resultStreamingOutputCallRequest.hasResponseType;
-}
-- (RMTPayloadType) responseType {
- return resultStreamingOutputCallRequest.responseType;
-}
-- (RMTStreamingOutputCallRequestBuilder*) setResponseType:(RMTPayloadType) value {
- resultStreamingOutputCallRequest.hasResponseType = YES;
- resultStreamingOutputCallRequest.responseType = value;
- return self;
-}
-- (RMTStreamingOutputCallRequestBuilder*) clearResponseType {
- resultStreamingOutputCallRequest.hasResponseType = NO;
- resultStreamingOutputCallRequest.responseType = RMTPayloadTypeCompressable;
- return self;
-}
-- (NSMutableArray *)responseParameters {
- return resultStreamingOutputCallRequest.responseParametersArray;
-}
-- (RMTResponseParameters*)responseParametersAtIndex:(NSUInteger)index {
- return [resultStreamingOutputCallRequest responseParametersAtIndex:index];
-}
-- (RMTStreamingOutputCallRequestBuilder *)addResponseParameters:(RMTResponseParameters*)value {
- if (resultStreamingOutputCallRequest.responseParametersArray == nil) {
- resultStreamingOutputCallRequest.responseParametersArray = [[NSMutableArray alloc]init];
- }
- [resultStreamingOutputCallRequest.responseParametersArray addObject:value];
- return self;
-}
-- (RMTStreamingOutputCallRequestBuilder *)setResponseParametersArray:(NSArray *)array {
- resultStreamingOutputCallRequest.responseParametersArray = [[NSMutableArray alloc]initWithArray:array];
- return self;
-}
-- (RMTStreamingOutputCallRequestBuilder *)clearResponseParameters {
- resultStreamingOutputCallRequest.responseParametersArray = nil;
- return self;
-}
-- (BOOL) hasPayload {
- return resultStreamingOutputCallRequest.hasPayload;
-}
-- (RMTPayload*) payload {
- return resultStreamingOutputCallRequest.payload;
-}
-- (RMTStreamingOutputCallRequestBuilder*) setPayload:(RMTPayload*) value {
- resultStreamingOutputCallRequest.hasPayload = YES;
- resultStreamingOutputCallRequest.payload = value;
- return self;
-}
-- (RMTStreamingOutputCallRequestBuilder*) setPayloadBuilder:(RMTPayloadBuilder*) builderForValue {
- return [self setPayload:[builderForValue build]];
-}
-- (RMTStreamingOutputCallRequestBuilder*) mergePayload:(RMTPayload*) value {
- if (resultStreamingOutputCallRequest.hasPayload &&
- resultStreamingOutputCallRequest.payload != [RMTPayload defaultInstance]) {
- resultStreamingOutputCallRequest.payload =
- [[[RMTPayload builderWithPrototype:resultStreamingOutputCallRequest.payload] mergeFrom:value] buildPartial];
- } else {
- resultStreamingOutputCallRequest.payload = value;
- }
- resultStreamingOutputCallRequest.hasPayload = YES;
- return self;
-}
-- (RMTStreamingOutputCallRequestBuilder*) clearPayload {
- resultStreamingOutputCallRequest.hasPayload = NO;
- resultStreamingOutputCallRequest.payload = [RMTPayload defaultInstance];
- return self;
-}
-@end
-
-@interface RMTStreamingOutputCallResponse ()
-@property (strong) RMTPayload* payload;
-@end
-
-@implementation RMTStreamingOutputCallResponse
-
-- (BOOL) hasPayload {
- return !!hasPayload_;
-}
-- (void) setHasPayload:(BOOL) _value_ {
- hasPayload_ = !!_value_;
-}
-@synthesize payload;
-- (instancetype) init {
- if ((self = [super init])) {
- self.payload = [RMTPayload defaultInstance];
- }
- return self;
-}
-static RMTStreamingOutputCallResponse* defaultRMTStreamingOutputCallResponseInstance = nil;
-+ (void) initialize {
- if (self == [RMTStreamingOutputCallResponse class]) {
- defaultRMTStreamingOutputCallResponseInstance = [[RMTStreamingOutputCallResponse alloc] init];
- }
-}
-+ (instancetype) defaultInstance {
- return defaultRMTStreamingOutputCallResponseInstance;
-}
-- (instancetype) defaultInstance {
- return defaultRMTStreamingOutputCallResponseInstance;
-}
-- (BOOL) isInitialized {
- return YES;
-}
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
- if (self.hasPayload) {
- [output writeMessage:1 value:self.payload];
- }
- [self.unknownFields writeToCodedOutputStream:output];
-}
-- (SInt32) serializedSize {
- __block SInt32 size_ = memoizedSerializedSize;
- if (size_ != -1) {
- return size_;
- }
-
- size_ = 0;
- if (self.hasPayload) {
- size_ += computeMessageSize(1, self.payload);
- }
- size_ += self.unknownFields.serializedSize;
- memoizedSerializedSize = size_;
- return size_;
-}
-+ (RMTStreamingOutputCallResponse*) parseFromData:(NSData*) data {
- return (RMTStreamingOutputCallResponse*)[[[RMTStreamingOutputCallResponse builder] mergeFromData:data] build];
-}
-+ (RMTStreamingOutputCallResponse*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTStreamingOutputCallResponse*)[[[RMTStreamingOutputCallResponse builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
-}
-+ (RMTStreamingOutputCallResponse*) parseFromInputStream:(NSInputStream*) input {
- return (RMTStreamingOutputCallResponse*)[[[RMTStreamingOutputCallResponse builder] mergeFromInputStream:input] build];
-}
-+ (RMTStreamingOutputCallResponse*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTStreamingOutputCallResponse*)[[[RMTStreamingOutputCallResponse builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RMTStreamingOutputCallResponse*) parseFromCodedInputStream:(PBCodedInputStream*) input {
- return (RMTStreamingOutputCallResponse*)[[[RMTStreamingOutputCallResponse builder] mergeFromCodedInputStream:input] build];
-}
-+ (RMTStreamingOutputCallResponse*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RMTStreamingOutputCallResponse*)[[[RMTStreamingOutputCallResponse builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RMTStreamingOutputCallResponseBuilder*) builder {
- return [[RMTStreamingOutputCallResponseBuilder alloc] init];
-}
-+ (RMTStreamingOutputCallResponseBuilder*) builderWithPrototype:(RMTStreamingOutputCallResponse*) prototype {
- return [[RMTStreamingOutputCallResponse builder] mergeFrom:prototype];
-}
-- (RMTStreamingOutputCallResponseBuilder*) builder {
- return [RMTStreamingOutputCallResponse builder];
-}
-- (RMTStreamingOutputCallResponseBuilder*) toBuilder {
- return [RMTStreamingOutputCallResponse builderWithPrototype:self];
-}
-- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
- if (self.hasPayload) {
- [output appendFormat:@"%@%@ {\n", indent, @"payload"];
- [self.payload writeDescriptionTo:output
- withIndent:[NSString stringWithFormat:@"%@ ", indent]];
- [output appendFormat:@"%@}\n", indent];
- }
- [self.unknownFields writeDescriptionTo:output withIndent:indent];
-}
-- (BOOL) isEqual:(id)other {
- if (other == self) {
- return YES;
- }
- if (![other isKindOfClass:[RMTStreamingOutputCallResponse class]]) {
- return NO;
- }
- RMTStreamingOutputCallResponse *otherMessage = other;
- return
- self.hasPayload == otherMessage.hasPayload &&
- (!self.hasPayload || [self.payload isEqual:otherMessage.payload]) &&
- (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
-}
-- (NSUInteger) hash {
- __block NSUInteger hashCode = 7;
- if (self.hasPayload) {
- hashCode = hashCode * 31 + [self.payload hash];
- }
- hashCode = hashCode * 31 + [self.unknownFields hash];
- return hashCode;
-}
-@end
-
-@interface RMTStreamingOutputCallResponseBuilder()
-@property (strong) RMTStreamingOutputCallResponse* resultStreamingOutputCallResponse;
-@end
-
-@implementation RMTStreamingOutputCallResponseBuilder
-@synthesize resultStreamingOutputCallResponse;
-- (instancetype) init {
- if ((self = [super init])) {
- self.resultStreamingOutputCallResponse = [[RMTStreamingOutputCallResponse alloc] init];
- }
- return self;
-}
-- (PBGeneratedMessage*) internalGetResult {
- return resultStreamingOutputCallResponse;
-}
-- (RMTStreamingOutputCallResponseBuilder*) clear {
- self.resultStreamingOutputCallResponse = [[RMTStreamingOutputCallResponse alloc] init];
- return self;
-}
-- (RMTStreamingOutputCallResponseBuilder*) clone {
- return [RMTStreamingOutputCallResponse builderWithPrototype:resultStreamingOutputCallResponse];
-}
-- (RMTStreamingOutputCallResponse*) defaultInstance {
- return [RMTStreamingOutputCallResponse defaultInstance];
-}
-- (RMTStreamingOutputCallResponse*) build {
- [self checkInitialized];
- return [self buildPartial];
-}
-- (RMTStreamingOutputCallResponse*) buildPartial {
- RMTStreamingOutputCallResponse* returnMe = resultStreamingOutputCallResponse;
- self.resultStreamingOutputCallResponse = nil;
- return returnMe;
-}
-- (RMTStreamingOutputCallResponseBuilder*) mergeFrom:(RMTStreamingOutputCallResponse*) other {
- if (other == [RMTStreamingOutputCallResponse defaultInstance]) {
- return self;
- }
- if (other.hasPayload) {
- [self mergePayload:other.payload];
- }
- [self mergeUnknownFields:other.unknownFields];
- return self;
-}
-- (RMTStreamingOutputCallResponseBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
- return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
-}
-- (RMTStreamingOutputCallResponseBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
- while (YES) {
- SInt32 tag = [input readTag];
- switch (tag) {
- case 0:
- [self setUnknownFields:[unknownFields build]];
- return self;
- default: {
- if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
- [self setUnknownFields:[unknownFields build]];
- return self;
- }
- break;
- }
- case 10: {
- RMTPayloadBuilder* subBuilder = [RMTPayload builder];
- if (self.hasPayload) {
- [subBuilder mergeFrom:self.payload];
- }
- [input readMessage:subBuilder extensionRegistry:extensionRegistry];
- [self setPayload:[subBuilder buildPartial]];
- break;
- }
- }
- }
-}
-- (BOOL) hasPayload {
- return resultStreamingOutputCallResponse.hasPayload;
-}
-- (RMTPayload*) payload {
- return resultStreamingOutputCallResponse.payload;
-}
-- (RMTStreamingOutputCallResponseBuilder*) setPayload:(RMTPayload*) value {
- resultStreamingOutputCallResponse.hasPayload = YES;
- resultStreamingOutputCallResponse.payload = value;
- return self;
-}
-- (RMTStreamingOutputCallResponseBuilder*) setPayloadBuilder:(RMTPayloadBuilder*) builderForValue {
- return [self setPayload:[builderForValue build]];
-}
-- (RMTStreamingOutputCallResponseBuilder*) mergePayload:(RMTPayload*) value {
- if (resultStreamingOutputCallResponse.hasPayload &&
- resultStreamingOutputCallResponse.payload != [RMTPayload defaultInstance]) {
- resultStreamingOutputCallResponse.payload =
- [[[RMTPayload builderWithPrototype:resultStreamingOutputCallResponse.payload] mergeFrom:value] buildPartial];
- } else {
- resultStreamingOutputCallResponse.payload = value;
- }
- resultStreamingOutputCallResponse.hasPayload = YES;
- return self;
-}
-- (RMTStreamingOutputCallResponseBuilder*) clearPayload {
- resultStreamingOutputCallResponse.hasPayload = NO;
- resultStreamingOutputCallResponse.payload = [RMTPayload defaultInstance];
- return self;
-}
-@end
-
-
-// @@protoc_insertion_point(global_scope)
diff --git a/src/objective-c/examples/Sample/RemoteTestClient/Messages.pbobjc.h b/src/objective-c/examples/Sample/RemoteTestClient/Messages.pbobjc.h
new file mode 100644
index 0000000000..5f32314175
--- /dev/null
+++ b/src/objective-c/examples/Sample/RemoteTestClient/Messages.pbobjc.h
@@ -0,0 +1,221 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: messages.proto
+
+#import "GPBProtocolBuffers.h"
+
+#if GOOGLE_PROTOBUF_OBJC_GEN_VERSION != 30000
+#error This file was generated by a different version of protoc-gen-objc which is incompatible with your Protocol Buffer sources.
+#endif
+
+CF_EXTERN_C_BEGIN
+
+@class RMTPayload;
+@class RMTResponseParameters;
+@class RMTSimpleRequest;
+@class RMTSimpleResponse;
+@class RMTStreamingInputCallRequest;
+@class RMTStreamingInputCallResponse;
+@class RMTStreamingOutputCallRequest;
+@class RMTStreamingOutputCallResponse;
+
+#pragma mark - Enum RMTPayloadType
+
+// The type of payload that should be returned.
+typedef GPB_ENUM(RMTPayloadType) {
+ RMTPayloadType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
+ // Compressable text format.
+ RMTPayloadType_Compressable = 0,
+
+ // Uncompressable binary format.
+ RMTPayloadType_Uncompressable = 1,
+
+ // Randomly chosen from all other formats defined in this enum.
+ RMTPayloadType_Random = 2,
+};
+
+GPBEnumDescriptor *RMTPayloadType_EnumDescriptor(void);
+
+BOOL RMTPayloadType_IsValidValue(int32_t value);
+
+
+#pragma mark - RMTMessagesRoot
+
+@interface RMTMessagesRoot : GPBRootObject
+@end
+
+#pragma mark - RMTPayload
+
+typedef GPB_ENUM(RMTPayload_FieldNumber) {
+ RMTPayload_FieldNumber_Type = 1,
+ RMTPayload_FieldNumber_Body = 2,
+};
+
+// A block of data, to simply increase gRPC message size.
+@interface RMTPayload : GPBMessage
+
+// The type of data in body.
+@property(nonatomic, readwrite) RMTPayloadType type;
+
+// Primary contents of payload.
+@property(nonatomic, readwrite, copy) NSData *body;
+
+@end
+
+int32_t RMTPayload_Type_RawValue(RMTPayload *message);
+void SetRMTPayload_Type_RawValue(RMTPayload *message, int32_t value);
+
+#pragma mark - RMTSimpleRequest
+
+typedef GPB_ENUM(RMTSimpleRequest_FieldNumber) {
+ RMTSimpleRequest_FieldNumber_ResponseType = 1,
+ RMTSimpleRequest_FieldNumber_ResponseSize = 2,
+ RMTSimpleRequest_FieldNumber_Payload = 3,
+ RMTSimpleRequest_FieldNumber_FillUsername = 4,
+ RMTSimpleRequest_FieldNumber_FillOauthScope = 5,
+};
+
+// Unary request.
+@interface RMTSimpleRequest : GPBMessage
+
+// Desired payload type in the response from the server.
+// If response_type is RANDOM, server randomly chooses one from other formats.
+@property(nonatomic, readwrite) RMTPayloadType responseType;
+
+// Desired payload size in the response from the server.
+// If response_type is COMPRESSABLE, this denotes the size before compression.
+@property(nonatomic, readwrite) int32_t responseSize;
+
+// Optional input payload sent along with the request.
+@property(nonatomic, readwrite) BOOL hasPayload;
+@property(nonatomic, readwrite, strong) RMTPayload *payload;
+
+// Whether SimpleResponse should include username.
+@property(nonatomic, readwrite) BOOL fillUsername;
+
+// Whether SimpleResponse should include OAuth scope.
+@property(nonatomic, readwrite) BOOL fillOauthScope;
+
+@end
+
+int32_t RMTSimpleRequest_ResponseType_RawValue(RMTSimpleRequest *message);
+void SetRMTSimpleRequest_ResponseType_RawValue(RMTSimpleRequest *message, int32_t value);
+
+#pragma mark - RMTSimpleResponse
+
+typedef GPB_ENUM(RMTSimpleResponse_FieldNumber) {
+ RMTSimpleResponse_FieldNumber_Payload = 1,
+ RMTSimpleResponse_FieldNumber_Username = 2,
+ RMTSimpleResponse_FieldNumber_OauthScope = 3,
+};
+
+// Unary response, as configured by the request.
+@interface RMTSimpleResponse : GPBMessage
+
+// Payload to increase message size.
+@property(nonatomic, readwrite) BOOL hasPayload;
+@property(nonatomic, readwrite, strong) RMTPayload *payload;
+
+// The user the request came from, for verifying authentication was
+// successful when the client expected it.
+@property(nonatomic, readwrite, copy) NSString *username;
+
+// OAuth scope.
+@property(nonatomic, readwrite, copy) NSString *oauthScope;
+
+@end
+
+#pragma mark - RMTStreamingInputCallRequest
+
+typedef GPB_ENUM(RMTStreamingInputCallRequest_FieldNumber) {
+ RMTStreamingInputCallRequest_FieldNumber_Payload = 1,
+};
+
+// Client-streaming request.
+@interface RMTStreamingInputCallRequest : GPBMessage
+
+// Optional input payload sent along with the request.
+@property(nonatomic, readwrite) BOOL hasPayload;
+@property(nonatomic, readwrite, strong) RMTPayload *payload;
+
+@end
+
+#pragma mark - RMTStreamingInputCallResponse
+
+typedef GPB_ENUM(RMTStreamingInputCallResponse_FieldNumber) {
+ RMTStreamingInputCallResponse_FieldNumber_AggregatedPayloadSize = 1,
+};
+
+// Client-streaming response.
+@interface RMTStreamingInputCallResponse : GPBMessage
+
+// Aggregated size of payloads received from the client.
+@property(nonatomic, readwrite) int32_t aggregatedPayloadSize;
+
+@end
+
+#pragma mark - RMTResponseParameters
+
+typedef GPB_ENUM(RMTResponseParameters_FieldNumber) {
+ RMTResponseParameters_FieldNumber_Size = 1,
+ RMTResponseParameters_FieldNumber_IntervalUs = 2,
+};
+
+// Configuration for a particular response.
+@interface RMTResponseParameters : GPBMessage
+
+// Desired payload sizes in responses from the server.
+// If response_type is COMPRESSABLE, this denotes the size before compression.
+@property(nonatomic, readwrite) int32_t size;
+
+// Desired interval between consecutive responses in the response stream in
+// microseconds.
+@property(nonatomic, readwrite) int32_t intervalUs;
+
+@end
+
+#pragma mark - RMTStreamingOutputCallRequest
+
+typedef GPB_ENUM(RMTStreamingOutputCallRequest_FieldNumber) {
+ RMTStreamingOutputCallRequest_FieldNumber_ResponseType = 1,
+ RMTStreamingOutputCallRequest_FieldNumber_ResponseParametersArray = 2,
+ RMTStreamingOutputCallRequest_FieldNumber_Payload = 3,
+};
+
+// Server-streaming request.
+@interface RMTStreamingOutputCallRequest : GPBMessage
+
+// Desired payload type in the response from the server.
+// If response_type is RANDOM, the payload from each response in the stream
+// might be of different types. This is to simulate a mixed type of payload
+// stream.
+@property(nonatomic, readwrite) RMTPayloadType responseType;
+
+// Configuration for each expected response message.
+// |responseParametersArray| contains |RMTResponseParameters|
+@property(nonatomic, readwrite, strong) NSMutableArray *responseParametersArray;
+
+// Optional input payload sent along with the request.
+@property(nonatomic, readwrite) BOOL hasPayload;
+@property(nonatomic, readwrite, strong) RMTPayload *payload;
+
+@end
+
+int32_t RMTStreamingOutputCallRequest_ResponseType_RawValue(RMTStreamingOutputCallRequest *message);
+void SetRMTStreamingOutputCallRequest_ResponseType_RawValue(RMTStreamingOutputCallRequest *message, int32_t value);
+
+#pragma mark - RMTStreamingOutputCallResponse
+
+typedef GPB_ENUM(RMTStreamingOutputCallResponse_FieldNumber) {
+ RMTStreamingOutputCallResponse_FieldNumber_Payload = 1,
+};
+
+// Server-streaming response, as configured by the request and parameters.
+@interface RMTStreamingOutputCallResponse : GPBMessage
+
+// Payload to increase response size.
+@property(nonatomic, readwrite) BOOL hasPayload;
+@property(nonatomic, readwrite, strong) RMTPayload *payload;
+
+@end
+
+CF_EXTERN_C_END
diff --git a/src/objective-c/examples/Sample/RemoteTestClient/Messages.pbobjc.m b/src/objective-c/examples/Sample/RemoteTestClient/Messages.pbobjc.m
new file mode 100644
index 0000000000..98eb1dc87c
--- /dev/null
+++ b/src/objective-c/examples/Sample/RemoteTestClient/Messages.pbobjc.m
@@ -0,0 +1,603 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: messages.proto
+
+#import "GPBProtocolBuffers_RuntimeSupport.h"
+
+#import "Messages.pbobjc.h"
+
+#pragma mark - RMTMessagesRoot
+
+@implementation RMTMessagesRoot
+
+@end
+
+static GPBFileDescriptor *RMTMessagesRoot_FileDescriptor(void) {
+ // This is called by +initialize so there is no need to worry
+ // about thread safety of the singleton.
+ static GPBFileDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ descriptor = [[GPBFileDescriptor alloc] initWithPackage:@"grpc.testing"
+ syntax:GPBFileSyntaxProto3];
+ }
+ return descriptor;
+}
+
+#pragma mark - Enum RMTPayloadType
+
+GPBEnumDescriptor *RMTPayloadType_EnumDescriptor(void) {
+ static GPBEnumDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageEnumValueDescription values[] = {
+ { .name = "Compressable", .number = RMTPayloadType_Compressable },
+ { .name = "Uncompressable", .number = RMTPayloadType_Uncompressable },
+ { .name = "Random", .number = RMTPayloadType_Random },
+ };
+ descriptor = [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(RMTPayloadType)
+ values:values
+ valueCount:sizeof(values) / sizeof(GPBMessageEnumValueDescription)
+ enumVerifier:RMTPayloadType_IsValidValue];
+ }
+ return descriptor;
+}
+
+BOOL RMTPayloadType_IsValidValue(int32_t value__) {
+ switch (value__) {
+ case RMTPayloadType_Compressable:
+ case RMTPayloadType_Uncompressable:
+ case RMTPayloadType_Random:
+ return YES;
+ default:
+ return NO;
+ }
+}
+
+#pragma mark - RMTPayload
+
+@implementation RMTPayload
+
+@dynamic type;
+@dynamic body;
+
+typedef struct RMTPayload_Storage {
+ uint32_t _has_storage_[1];
+ RMTPayloadType type;
+ NSData *body;
+} RMTPayload_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "type",
+ .number = RMTPayload_FieldNumber_Type,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional | GPBFieldHasEnumDescriptor,
+ .type = GPBTypeEnum,
+ .offset = offsetof(RMTPayload_Storage, type),
+ .defaultValue.valueEnum = RMTPayloadType_Compressable,
+ .typeSpecific.enumDescFunc = RMTPayloadType_EnumDescriptor,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "body",
+ .number = RMTPayload_FieldNumber_Body,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeData,
+ .offset = offsetof(RMTPayload_Storage, body),
+ .defaultValue.valueData = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[RMTPayload class]
+ rootClass:[RMTMessagesRoot class]
+ file:RMTMessagesRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(RMTPayload_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+int32_t RMTPayload_Type_RawValue(RMTPayload *message) {
+ GPBDescriptor *descriptor = [RMTPayload descriptor];
+ GPBFieldDescriptor *field = [descriptor fieldWithNumber:RMTPayload_FieldNumber_Type];
+ return GPBGetInt32IvarWithField(message, field);
+}
+
+void SetRMTPayload_Type_RawValue(RMTPayload *message, int32_t value) {
+ GPBDescriptor *descriptor = [RMTPayload descriptor];
+ GPBFieldDescriptor *field = [descriptor fieldWithNumber:RMTPayload_FieldNumber_Type];
+ GPBSetInt32IvarWithFieldInternal(message, field, value, descriptor.file.syntax);
+}
+
+#pragma mark - RMTSimpleRequest
+
+@implementation RMTSimpleRequest
+
+@dynamic responseType;
+@dynamic responseSize;
+@dynamic hasPayload, payload;
+@dynamic fillUsername;
+@dynamic fillOauthScope;
+
+typedef struct RMTSimpleRequest_Storage {
+ uint32_t _has_storage_[1];
+ BOOL fillUsername;
+ BOOL fillOauthScope;
+ RMTPayloadType responseType;
+ int32_t responseSize;
+ RMTPayload *payload;
+} RMTSimpleRequest_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "responseType",
+ .number = RMTSimpleRequest_FieldNumber_ResponseType,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional | GPBFieldHasEnumDescriptor,
+ .type = GPBTypeEnum,
+ .offset = offsetof(RMTSimpleRequest_Storage, responseType),
+ .defaultValue.valueEnum = RMTPayloadType_Compressable,
+ .typeSpecific.enumDescFunc = RMTPayloadType_EnumDescriptor,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "responseSize",
+ .number = RMTSimpleRequest_FieldNumber_ResponseSize,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt32,
+ .offset = offsetof(RMTSimpleRequest_Storage, responseSize),
+ .defaultValue.valueInt32 = 0,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "payload",
+ .number = RMTSimpleRequest_FieldNumber_Payload,
+ .hasIndex = 2,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeMessage,
+ .offset = offsetof(RMTSimpleRequest_Storage, payload),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(RMTPayload),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "fillUsername",
+ .number = RMTSimpleRequest_FieldNumber_FillUsername,
+ .hasIndex = 3,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeBool,
+ .offset = offsetof(RMTSimpleRequest_Storage, fillUsername),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "fillOauthScope",
+ .number = RMTSimpleRequest_FieldNumber_FillOauthScope,
+ .hasIndex = 4,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeBool,
+ .offset = offsetof(RMTSimpleRequest_Storage, fillOauthScope),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[RMTSimpleRequest class]
+ rootClass:[RMTMessagesRoot class]
+ file:RMTMessagesRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(RMTSimpleRequest_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+int32_t RMTSimpleRequest_ResponseType_RawValue(RMTSimpleRequest *message) {
+ GPBDescriptor *descriptor = [RMTSimpleRequest descriptor];
+ GPBFieldDescriptor *field = [descriptor fieldWithNumber:RMTSimpleRequest_FieldNumber_ResponseType];
+ return GPBGetInt32IvarWithField(message, field);
+}
+
+void SetRMTSimpleRequest_ResponseType_RawValue(RMTSimpleRequest *message, int32_t value) {
+ GPBDescriptor *descriptor = [RMTSimpleRequest descriptor];
+ GPBFieldDescriptor *field = [descriptor fieldWithNumber:RMTSimpleRequest_FieldNumber_ResponseType];
+ GPBSetInt32IvarWithFieldInternal(message, field, value, descriptor.file.syntax);
+}
+
+#pragma mark - RMTSimpleResponse
+
+@implementation RMTSimpleResponse
+
+@dynamic hasPayload, payload;
+@dynamic username;
+@dynamic oauthScope;
+
+typedef struct RMTSimpleResponse_Storage {
+ uint32_t _has_storage_[1];
+ RMTPayload *payload;
+ NSString *username;
+ NSString *oauthScope;
+} RMTSimpleResponse_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "payload",
+ .number = RMTSimpleResponse_FieldNumber_Payload,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeMessage,
+ .offset = offsetof(RMTSimpleResponse_Storage, payload),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(RMTPayload),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "username",
+ .number = RMTSimpleResponse_FieldNumber_Username,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(RMTSimpleResponse_Storage, username),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "oauthScope",
+ .number = RMTSimpleResponse_FieldNumber_OauthScope,
+ .hasIndex = 2,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(RMTSimpleResponse_Storage, oauthScope),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[RMTSimpleResponse class]
+ rootClass:[RMTMessagesRoot class]
+ file:RMTMessagesRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(RMTSimpleResponse_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - RMTStreamingInputCallRequest
+
+@implementation RMTStreamingInputCallRequest
+
+@dynamic hasPayload, payload;
+
+typedef struct RMTStreamingInputCallRequest_Storage {
+ uint32_t _has_storage_[1];
+ RMTPayload *payload;
+} RMTStreamingInputCallRequest_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "payload",
+ .number = RMTStreamingInputCallRequest_FieldNumber_Payload,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeMessage,
+ .offset = offsetof(RMTStreamingInputCallRequest_Storage, payload),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(RMTPayload),
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[RMTStreamingInputCallRequest class]
+ rootClass:[RMTMessagesRoot class]
+ file:RMTMessagesRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(RMTStreamingInputCallRequest_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - RMTStreamingInputCallResponse
+
+@implementation RMTStreamingInputCallResponse
+
+@dynamic aggregatedPayloadSize;
+
+typedef struct RMTStreamingInputCallResponse_Storage {
+ uint32_t _has_storage_[1];
+ int32_t aggregatedPayloadSize;
+} RMTStreamingInputCallResponse_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "aggregatedPayloadSize",
+ .number = RMTStreamingInputCallResponse_FieldNumber_AggregatedPayloadSize,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt32,
+ .offset = offsetof(RMTStreamingInputCallResponse_Storage, aggregatedPayloadSize),
+ .defaultValue.valueInt32 = 0,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[RMTStreamingInputCallResponse class]
+ rootClass:[RMTMessagesRoot class]
+ file:RMTMessagesRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(RMTStreamingInputCallResponse_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - RMTResponseParameters
+
+@implementation RMTResponseParameters
+
+@dynamic size;
+@dynamic intervalUs;
+
+typedef struct RMTResponseParameters_Storage {
+ uint32_t _has_storage_[1];
+ int32_t size;
+ int32_t intervalUs;
+} RMTResponseParameters_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "size",
+ .number = RMTResponseParameters_FieldNumber_Size,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt32,
+ .offset = offsetof(RMTResponseParameters_Storage, size),
+ .defaultValue.valueInt32 = 0,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "intervalUs",
+ .number = RMTResponseParameters_FieldNumber_IntervalUs,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt32,
+ .offset = offsetof(RMTResponseParameters_Storage, intervalUs),
+ .defaultValue.valueInt32 = 0,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[RMTResponseParameters class]
+ rootClass:[RMTMessagesRoot class]
+ file:RMTMessagesRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(RMTResponseParameters_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - RMTStreamingOutputCallRequest
+
+@implementation RMTStreamingOutputCallRequest
+
+@dynamic responseType;
+@dynamic responseParametersArray;
+@dynamic hasPayload, payload;
+
+typedef struct RMTStreamingOutputCallRequest_Storage {
+ uint32_t _has_storage_[1];
+ RMTPayloadType responseType;
+ NSMutableArray *responseParametersArray;
+ RMTPayload *payload;
+} RMTStreamingOutputCallRequest_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "responseType",
+ .number = RMTStreamingOutputCallRequest_FieldNumber_ResponseType,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional | GPBFieldHasEnumDescriptor,
+ .type = GPBTypeEnum,
+ .offset = offsetof(RMTStreamingOutputCallRequest_Storage, responseType),
+ .defaultValue.valueEnum = RMTPayloadType_Compressable,
+ .typeSpecific.enumDescFunc = RMTPayloadType_EnumDescriptor,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "responseParametersArray",
+ .number = RMTStreamingOutputCallRequest_FieldNumber_ResponseParametersArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(RMTStreamingOutputCallRequest_Storage, responseParametersArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(RMTResponseParameters),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "payload",
+ .number = RMTStreamingOutputCallRequest_FieldNumber_Payload,
+ .hasIndex = 2,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeMessage,
+ .offset = offsetof(RMTStreamingOutputCallRequest_Storage, payload),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(RMTPayload),
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[RMTStreamingOutputCallRequest class]
+ rootClass:[RMTMessagesRoot class]
+ file:RMTMessagesRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(RMTStreamingOutputCallRequest_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+int32_t RMTStreamingOutputCallRequest_ResponseType_RawValue(RMTStreamingOutputCallRequest *message) {
+ GPBDescriptor *descriptor = [RMTStreamingOutputCallRequest descriptor];
+ GPBFieldDescriptor *field = [descriptor fieldWithNumber:RMTStreamingOutputCallRequest_FieldNumber_ResponseType];
+ return GPBGetInt32IvarWithField(message, field);
+}
+
+void SetRMTStreamingOutputCallRequest_ResponseType_RawValue(RMTStreamingOutputCallRequest *message, int32_t value) {
+ GPBDescriptor *descriptor = [RMTStreamingOutputCallRequest descriptor];
+ GPBFieldDescriptor *field = [descriptor fieldWithNumber:RMTStreamingOutputCallRequest_FieldNumber_ResponseType];
+ GPBSetInt32IvarWithFieldInternal(message, field, value, descriptor.file.syntax);
+}
+
+#pragma mark - RMTStreamingOutputCallResponse
+
+@implementation RMTStreamingOutputCallResponse
+
+@dynamic hasPayload, payload;
+
+typedef struct RMTStreamingOutputCallResponse_Storage {
+ uint32_t _has_storage_[1];
+ RMTPayload *payload;
+} RMTStreamingOutputCallResponse_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "payload",
+ .number = RMTStreamingOutputCallResponse_FieldNumber_Payload,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeMessage,
+ .offset = offsetof(RMTStreamingOutputCallResponse_Storage, payload),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(RMTPayload),
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[RMTStreamingOutputCallResponse class]
+ rootClass:[RMTMessagesRoot class]
+ file:RMTMessagesRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(RMTStreamingOutputCallResponse_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
diff --git a/src/objective-c/examples/Sample/RemoteTestClient/RemoteTest.podspec b/src/objective-c/examples/Sample/RemoteTestClient/RemoteTest.podspec
index 7b025ce252..36c2b509e8 100644
--- a/src/objective-c/examples/Sample/RemoteTestClient/RemoteTest.podspec
+++ b/src/objective-c/examples/Sample/RemoteTestClient/RemoteTest.podspec
@@ -6,13 +6,19 @@ Pod::Spec.new do |s|
s.license = 'New BSD'
s.authors = { 'Jorge Canizales' => 'jcanizales@google.com' }
- s.source_files = '*.pb.{h,m}'
- s.public_header_files = '*.pb.h'
-
- s.platform = :ios
s.ios.deployment_target = '6.0'
- s.requires_arc = true
+ s.osx.deployment_target = '10.8'
+
+ s.subspec 'Messages' do |ms|
+ ms.source_files = '*.pbobjc.{h,m}'
+ ms.requires_arc = false
+ ms.dependency 'Protobuf', '~> 3.0'
+ end
- s.dependency 'ProtocolBuffers', '~> 1.9'
- s.dependency 'gRPC', '~> 0.0'
+ s.subspec 'Services' do |ss|
+ ss.source_files = '*.pbrpc.{h,m}'
+ ss.requires_arc = true
+ ss.dependency 'gRPC', '~> 0.0'
+ ss.dependency 'RemoteTest/Messages'
+ end
end
diff --git a/src/objective-c/examples/Sample/RemoteTestClient/Test.pb.h b/src/objective-c/examples/Sample/RemoteTestClient/Test.pb.h
deleted file mode 100644
index b6111b15b8..0000000000
--- a/src/objective-c/examples/Sample/RemoteTestClient/Test.pb.h
+++ /dev/null
@@ -1,167 +0,0 @@
-// Generated by the protocol buffer compiler. DO NOT EDIT!
-
-#import <ProtocolBuffers/ProtocolBuffers.h>
-
-#import "Empty.pb.h"
-#import "Messages.pb.h"
-#import <gRPC/ProtoService.h>
-// @@protoc_insertion_point(imports)
-
-@class ObjectiveCFileOptions;
-@class ObjectiveCFileOptionsBuilder;
-@class PBDescriptorProto;
-@class PBDescriptorProtoBuilder;
-@class PBDescriptorProtoExtensionRange;
-@class PBDescriptorProtoExtensionRangeBuilder;
-@class PBEnumDescriptorProto;
-@class PBEnumDescriptorProtoBuilder;
-@class PBEnumOptions;
-@class PBEnumOptionsBuilder;
-@class PBEnumValueDescriptorProto;
-@class PBEnumValueDescriptorProtoBuilder;
-@class PBEnumValueOptions;
-@class PBEnumValueOptionsBuilder;
-@class PBFieldDescriptorProto;
-@class PBFieldDescriptorProtoBuilder;
-@class PBFieldOptions;
-@class PBFieldOptionsBuilder;
-@class PBFileDescriptorProto;
-@class PBFileDescriptorProtoBuilder;
-@class PBFileDescriptorSet;
-@class PBFileDescriptorSetBuilder;
-@class PBFileOptions;
-@class PBFileOptionsBuilder;
-@class PBMessageOptions;
-@class PBMessageOptionsBuilder;
-@class PBMethodDescriptorProto;
-@class PBMethodDescriptorProtoBuilder;
-@class PBMethodOptions;
-@class PBMethodOptionsBuilder;
-@class PBOneofDescriptorProto;
-@class PBOneofDescriptorProtoBuilder;
-@class PBServiceDescriptorProto;
-@class PBServiceDescriptorProtoBuilder;
-@class PBServiceOptions;
-@class PBServiceOptionsBuilder;
-@class PBSourceCodeInfo;
-@class PBSourceCodeInfoBuilder;
-@class PBSourceCodeInfoLocation;
-@class PBSourceCodeInfoLocationBuilder;
-@class PBUninterpretedOption;
-@class PBUninterpretedOptionBuilder;
-@class PBUninterpretedOptionNamePart;
-@class PBUninterpretedOptionNamePartBuilder;
-@class RMTEmpty;
-@class RMTEmptyBuilder;
-@class RMTPayload;
-@class RMTPayloadBuilder;
-@class RMTResponseParameters;
-@class RMTResponseParametersBuilder;
-@class RMTSimpleRequest;
-@class RMTSimpleRequestBuilder;
-@class RMTSimpleResponse;
-@class RMTSimpleResponseBuilder;
-@class RMTStreamingInputCallRequest;
-@class RMTStreamingInputCallRequestBuilder;
-@class RMTStreamingInputCallResponse;
-@class RMTStreamingInputCallResponseBuilder;
-@class RMTStreamingOutputCallRequest;
-@class RMTStreamingOutputCallRequestBuilder;
-@class RMTStreamingOutputCallResponse;
-@class RMTStreamingOutputCallResponseBuilder;
-
-
-
-@interface RMTTestRoot : NSObject {
-}
-+ (PBExtensionRegistry*) extensionRegistry;
-+ (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry;
-@end
-
-
-
-@protocol GRXWriteable;
-@protocol GRXWriter;
-
-@protocol RMTTestService <NSObject>
-
-#pragma mark EmptyCall(grpc.testing.Empty) returns (grpc.testing.Empty)
-
-// One empty request followed by one empty response.
-- (void)emptyCallWithRequest:(RMTEmpty *)request
- handler:(void(^)(RMTEmpty *response, NSError *error))handler;
-
-// Returns a not-yet-started RPC object.
-- (ProtoRPC *)RPCToEmptyCallWithRequest:(RMTEmpty *)request
- handler:(void(^)(RMTEmpty *response, NSError *error))handler;
-
-
-#pragma mark UnaryCall(SimpleRequest) returns (SimpleResponse)
-
-// One request followed by one response.
-- (void)unaryCallWithRequest:(RMTSimpleRequest *)request
- handler:(void(^)(RMTSimpleResponse *response, NSError *error))handler;
-
-// Returns a not-yet-started RPC object.
-- (ProtoRPC *)RPCToUnaryCallWithRequest:(RMTSimpleRequest *)request
- handler:(void(^)(RMTSimpleResponse *response, NSError *error))handler;
-
-
-#pragma mark StreamingOutputCall(StreamingOutputCallRequest) returns (stream StreamingOutputCallResponse)
-
-// One request followed by a sequence of responses (streamed download).
-// The server returns the payload with client desired type and sizes.
-- (void)streamingOutputCallWithRequest:(RMTStreamingOutputCallRequest *)request
- handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler;
-
-// Returns a not-yet-started RPC object.
-- (ProtoRPC *)RPCToStreamingOutputCallWithRequest:(RMTStreamingOutputCallRequest *)request
- handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler;
-
-
-#pragma mark StreamingInputCall(stream StreamingInputCallRequest) returns (StreamingInputCallResponse)
-
-// A sequence of requests followed by one response (streamed upload).
-// The server returns the aggregated size of client payload as the result.
-- (void)streamingInputCallWithRequestsWriter:(id<GRXWriter>)request
- handler:(void(^)(RMTStreamingInputCallResponse *response, NSError *error))handler;
-
-// Returns a not-yet-started RPC object.
-- (ProtoRPC *)RPCToStreamingInputCallWithRequestsWriter:(id<GRXWriter>)request
- handler:(void(^)(RMTStreamingInputCallResponse *response, NSError *error))handler;
-
-
-#pragma mark FullDuplexCall(stream StreamingOutputCallRequest) returns (stream StreamingOutputCallResponse)
-
-// A sequence of requests with each request served by the server immediately.
-// As one request could lead to multiple responses, this interface
-// demonstrates the idea of full duplexing.
-- (void)fullDuplexCallWithRequestsWriter:(id<GRXWriter>)request
- handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler;
-
-// Returns a not-yet-started RPC object.
-- (ProtoRPC *)RPCToFullDuplexCallWithRequestsWriter:(id<GRXWriter>)request
- handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler;
-
-
-#pragma mark HalfDuplexCall(stream StreamingOutputCallRequest) returns (stream StreamingOutputCallResponse)
-
-// A sequence of requests followed by a sequence of responses.
-// The server buffers all the client requests and then serves them in order. A
-// stream of responses are returned to the client when the server starts with
-// first request.
-- (void)halfDuplexCallWithRequestsWriter:(id<GRXWriter>)request
- handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler;
-
-// Returns a not-yet-started RPC object.
-- (ProtoRPC *)RPCToHalfDuplexCallWithRequestsWriter:(id<GRXWriter>)request
- handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler;
-
-@end
-
-// Basic service implementation, over gRPC, that only does marshalling and parsing.
-@interface RMTTestService : ProtoService<RMTTestService>
-- (instancetype)initWithHost:(NSString *)host NS_DESIGNATED_INITIALIZER;
-@end
-
-// @@protoc_insertion_point(global_scope)
diff --git a/src/objective-c/examples/Sample/RemoteTestClient/Test.pb.m b/src/objective-c/examples/Sample/RemoteTestClient/Test.pb.m
deleted file mode 100644
index 31a3ba3a61..0000000000
--- a/src/objective-c/examples/Sample/RemoteTestClient/Test.pb.m
+++ /dev/null
@@ -1,163 +0,0 @@
-// Generated by the protocol buffer compiler. DO NOT EDIT!
-
-#import "Test.pb.h"
-
-#import <gRPC/GRXWriteable.h>
-#import <gRPC/GRXWriter+Immediate.h>
-#import <gRPC/ProtoRPC.h>
-// @@protoc_insertion_point(imports)
-
-@implementation RMTTestRoot
-static PBExtensionRegistry* extensionRegistry = nil;
-+ (PBExtensionRegistry*) extensionRegistry {
- return extensionRegistry;
-}
-
-+ (void) initialize {
- if (self == [RMTTestRoot class]) {
- PBMutableExtensionRegistry* registry = [PBMutableExtensionRegistry registry];
- [self registerAllExtensions:registry];
- [RMTEmptyRoot registerAllExtensions:registry];
- [RMTMessagesRoot registerAllExtensions:registry];
- [ObjectivecDescriptorRoot registerAllExtensions:registry];
- extensionRegistry = registry;
- }
-}
-+ (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry {
-}
-@end
-
-
-static NSString *const kPackageName = @"grpc.testing";
-static NSString *const kServiceName = @"TestService";
-
-@implementation RMTTestService
-
-// Designated initializer
-- (instancetype)initWithHost:(NSString *)host {
- return (self = [super initWithHost:host packageName:kPackageName serviceName:kServiceName]);
-}
-
-- (instancetype)initWithHost:(NSString *)host
- packageName:(NSString *)packageName
- serviceName:(NSString *)serviceName {
- return [self initWithHost:host];
-}
-
-#pragma mark EmptyCall(grpc.testing.Empty) returns (grpc.testing.Empty)
-
-// One empty request followed by one empty response.
-- (void)emptyCallWithRequest:(RMTEmpty *)request
- handler:(void(^)(RMTEmpty *response, NSError *error))handler {
- [[self RPCToEmptyCallWithRequest:request handler:handler] start];
-}
-
-// Returns a not-yet-started RPC object.
-- (ProtoRPC *)RPCToEmptyCallWithRequest:(RMTEmpty *)request
- handler:(void(^)(RMTEmpty *response, NSError *error))handler {
- return [self RPCToMethod:@"EmptyCall"
- requestsWriter:[GRXWriter writerWithValue:request]
- responseClass:[RMTEmpty class]
- responsesWriteable:[GRXWriteable writeableWithSingleValueHandler:handler]];
-}
-
-
-#pragma mark UnaryCall(SimpleRequest) returns (SimpleResponse)
-
-// One request followed by one response.
-- (void)unaryCallWithRequest:(RMTSimpleRequest *)request
- handler:(void(^)(RMTSimpleResponse *response, NSError *error))handler {
- [[self RPCToUnaryCallWithRequest:request handler:handler] start];
-}
-
-// Returns a not-yet-started RPC object.
-- (ProtoRPC *)RPCToUnaryCallWithRequest:(RMTSimpleRequest *)request
- handler:(void(^)(RMTSimpleResponse *response, NSError *error))handler {
- return [self RPCToMethod:@"UnaryCall"
- requestsWriter:[GRXWriter writerWithValue:request]
- responseClass:[RMTSimpleResponse class]
- responsesWriteable:[GRXWriteable writeableWithSingleValueHandler:handler]];
-}
-
-
-#pragma mark StreamingOutputCall(StreamingOutputCallRequest) returns (stream StreamingOutputCallResponse)
-
-// One request followed by a sequence of responses (streamed download).
-// The server returns the payload with client desired type and sizes.
-- (void)streamingOutputCallWithRequest:(RMTStreamingOutputCallRequest *)request
- handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler {
- [[self RPCToStreamingOutputCallWithRequest:request handler:handler] start];
-}
-
-// Returns a not-yet-started RPC object.
-- (ProtoRPC *)RPCToStreamingOutputCallWithRequest:(RMTStreamingOutputCallRequest *)request
- handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler {
- return [self RPCToMethod:@"StreamingOutputCall"
- requestsWriter:[GRXWriter writerWithValue:request]
- responseClass:[RMTStreamingOutputCallResponse class]
- responsesWriteable:[GRXWriteable writeableWithStreamHandler:handler]];
-}
-
-
-#pragma mark StreamingInputCall(stream StreamingInputCallRequest) returns (StreamingInputCallResponse)
-
-// A sequence of requests followed by one response (streamed upload).
-// The server returns the aggregated size of client payload as the result.
-- (void)streamingInputCallWithRequestsWriter:(id<GRXWriter>)requestsWriter
- handler:(void(^)(RMTStreamingInputCallResponse *response, NSError *error))handler {
- [[self RPCToStreamingInputCallWithRequestsWriter:requestsWriter handler:handler] start];
-}
-
-// Returns a not-yet-started RPC object.
-- (ProtoRPC *)RPCToStreamingInputCallWithRequestsWriter:(id<GRXWriter>)requestsWriter
- handler:(void(^)(RMTStreamingInputCallResponse *response, NSError *error))handler {
- return [self RPCToMethod:@"StreamingInputCall"
- requestsWriter:requestsWriter
- responseClass:[RMTStreamingInputCallResponse class]
- responsesWriteable:[GRXWriteable writeableWithSingleValueHandler:handler]];
-}
-
-
-#pragma mark FullDuplexCall(stream StreamingOutputCallRequest) returns (stream StreamingOutputCallResponse)
-
-// A sequence of requests with each request served by the server immediately.
-// As one request could lead to multiple responses, this interface
-// demonstrates the idea of full duplexing.
-- (void)fullDuplexCallWithRequestsWriter:(id<GRXWriter>)requestsWriter
- handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler {
- [[self RPCToFullDuplexCallWithRequestsWriter:requestsWriter handler:handler] start];
-}
-
-// Returns a not-yet-started RPC object.
-- (ProtoRPC *)RPCToFullDuplexCallWithRequestsWriter:(id<GRXWriter>)requestsWriter
- handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler {
- return [self RPCToMethod:@"FullDuplexCall"
- requestsWriter:requestsWriter
- responseClass:[RMTStreamingOutputCallResponse class]
- responsesWriteable:[GRXWriteable writeableWithStreamHandler:handler]];
-}
-
-
-#pragma mark HalfDuplexCall(stream StreamingOutputCallRequest) returns (stream StreamingOutputCallResponse)
-
-// A sequence of requests followed by a sequence of responses.
-// The server buffers all the client requests and then serves them in order. A
-// stream of responses are returned to the client when the server starts with
-// first request.
-- (void)halfDuplexCallWithRequestsWriter:(id<GRXWriter>)requestsWriter
- handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler {
- [[self RPCToHalfDuplexCallWithRequestsWriter:requestsWriter handler:handler] start];
-}
-
-// Returns a not-yet-started RPC object.
-- (ProtoRPC *)RPCToHalfDuplexCallWithRequestsWriter:(id<GRXWriter>)requestsWriter
- handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler {
- return [self RPCToMethod:@"HalfDuplexCall"
- requestsWriter:requestsWriter
- responseClass:[RMTStreamingOutputCallResponse class]
- responsesWriteable:[GRXWriteable writeableWithStreamHandler:handler]];
-}
-
-@end
-
-// @@protoc_insertion_point(global_scope)
diff --git a/src/objective-c/examples/Sample/RemoteTestClient/Test.pbobjc.h b/src/objective-c/examples/Sample/RemoteTestClient/Test.pbobjc.h
new file mode 100644
index 0000000000..aaa0b6ce2d
--- /dev/null
+++ b/src/objective-c/examples/Sample/RemoteTestClient/Test.pbobjc.h
@@ -0,0 +1,12 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: test.proto
+
+#import "GPBProtocolBuffers.h"
+
+#if GOOGLE_PROTOBUF_OBJC_GEN_VERSION != 30000
+#error This file was generated by a different version of protoc-gen-objc which is incompatible with your Protocol Buffer sources.
+#endif
+
+CF_EXTERN_C_BEGIN
+
+CF_EXTERN_C_END
diff --git a/src/objective-c/examples/Sample/RemoteTestClient/Test.pbobjc.m b/src/objective-c/examples/Sample/RemoteTestClient/Test.pbobjc.m
new file mode 100644
index 0000000000..08562b828a
--- /dev/null
+++ b/src/objective-c/examples/Sample/RemoteTestClient/Test.pbobjc.m
@@ -0,0 +1,9 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: test.proto
+
+// File empty because all messages, extensions and enum have been filtered.
+
+
+// Dummy symbol that will be stripped but will avoid linker warnings about
+// no symbols in the .o form compiling this file.
+static int RMTTestRoot_dummy __attribute__((unused,used)) = 0;
diff --git a/src/objective-c/examples/Sample/RemoteTestClient/Test.pbrpc.h b/src/objective-c/examples/Sample/RemoteTestClient/Test.pbrpc.h
new file mode 100644
index 0000000000..f799c4fc92
--- /dev/null
+++ b/src/objective-c/examples/Sample/RemoteTestClient/Test.pbrpc.h
@@ -0,0 +1,59 @@
+#import "Test.pbobjc.h"
+#import <gRPC/ProtoService.h>
+
+#import "Empty.pbobjc.h"
+#import "Messages.pbobjc.h"
+
+@protocol GRXWriteable;
+@protocol GRXWriter;
+
+@protocol RMTTestService <NSObject>
+
+#pragma mark EmptyCall(Empty) returns (Empty)
+
+- (void)emptyCallWithRequest:(RMTEmpty *)request handler:(void(^)(RMTEmpty *response, NSError *error))handler;
+
+- (ProtoRPC *)RPCToEmptyCallWithRequest:(RMTEmpty *)request handler:(void(^)(RMTEmpty *response, NSError *error))handler;
+
+
+#pragma mark UnaryCall(SimpleRequest) returns (SimpleResponse)
+
+- (void)unaryCallWithRequest:(RMTSimpleRequest *)request handler:(void(^)(RMTSimpleResponse *response, NSError *error))handler;
+
+- (ProtoRPC *)RPCToUnaryCallWithRequest:(RMTSimpleRequest *)request handler:(void(^)(RMTSimpleResponse *response, NSError *error))handler;
+
+
+#pragma mark StreamingOutputCall(StreamingOutputCallRequest) returns (stream StreamingOutputCallResponse)
+
+- (void)streamingOutputCallWithRequest:(RMTStreamingOutputCallRequest *)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler;
+
+- (ProtoRPC *)RPCToStreamingOutputCallWithRequest:(RMTStreamingOutputCallRequest *)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler;
+
+
+#pragma mark StreamingInputCall(stream StreamingInputCallRequest) returns (StreamingInputCallResponse)
+
+- (void)streamingInputCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(RMTStreamingInputCallResponse *response, NSError *error))handler;
+
+- (ProtoRPC *)RPCToStreamingInputCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(RMTStreamingInputCallResponse *response, NSError *error))handler;
+
+
+#pragma mark FullDuplexCall(stream StreamingOutputCallRequest) returns (stream StreamingOutputCallResponse)
+
+- (void)fullDuplexCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler;
+
+- (ProtoRPC *)RPCToFullDuplexCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler;
+
+
+#pragma mark HalfDuplexCall(stream StreamingOutputCallRequest) returns (stream StreamingOutputCallResponse)
+
+- (void)halfDuplexCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler;
+
+- (ProtoRPC *)RPCToHalfDuplexCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler;
+
+
+@end
+
+// Basic service implementation, over gRPC, that only does marshalling and parsing.
+@interface RMTTestService : ProtoService<RMTTestService>
+- (instancetype)initWithHost:(NSString *)host NS_DESIGNATED_INITIALIZER;
+@end
diff --git a/src/objective-c/examples/Sample/RemoteTestClient/Test.pbrpc.m b/src/objective-c/examples/Sample/RemoteTestClient/Test.pbrpc.m
new file mode 100644
index 0000000000..faba07769e
--- /dev/null
+++ b/src/objective-c/examples/Sample/RemoteTestClient/Test.pbrpc.m
@@ -0,0 +1,96 @@
+#import "Test.pbrpc.h"
+#import <gRPC/GRXWriteable.h>
+#import <gRPC/GRXWriter+Immediate.h>
+#import <gRPC/ProtoRPC.h>
+
+static NSString *const kPackageName = @"grpc.testing";
+static NSString *const kServiceName = @"TestService";
+
+@implementation RMTTestService
+
+// Designated initializer
+- (instancetype)initWithHost:(NSString *)host {
+ return (self = [super initWithHost:host packageName:kPackageName serviceName:kServiceName]);
+}
+
+// Override superclass initializer to disallow different package and service names.
+- (instancetype)initWithHost:(NSString *)host
+ packageName:(NSString *)packageName
+ serviceName:(NSString *)serviceName {
+ return [self initWithHost:host];
+}
+
+
+#pragma mark EmptyCall(Empty) returns (Empty)
+
+- (void)emptyCallWithRequest:(RMTEmpty *)request handler:(void(^)(RMTEmpty *response, NSError *error))handler{
+ [[self RPCToEmptyCallWithRequest:request handler:handler] start];
+}
+// Returns a not-yet-started RPC object.
+- (ProtoRPC *)RPCToEmptyCallWithRequest:(RMTEmpty *)request handler:(void(^)(RMTEmpty *response, NSError *error))handler{
+ return [self RPCToMethod:@"EmptyCall"
+ requestsWriter:[GRXWriter writerWithValue:request]
+ responseClass:[RMTEmpty class]
+ responsesWriteable:[GRXWriteable writeableWithSingleValueHandler:handler]];
+}
+#pragma mark UnaryCall(SimpleRequest) returns (SimpleResponse)
+
+- (void)unaryCallWithRequest:(RMTSimpleRequest *)request handler:(void(^)(RMTSimpleResponse *response, NSError *error))handler{
+ [[self RPCToUnaryCallWithRequest:request handler:handler] start];
+}
+// Returns a not-yet-started RPC object.
+- (ProtoRPC *)RPCToUnaryCallWithRequest:(RMTSimpleRequest *)request handler:(void(^)(RMTSimpleResponse *response, NSError *error))handler{
+ return [self RPCToMethod:@"UnaryCall"
+ requestsWriter:[GRXWriter writerWithValue:request]
+ responseClass:[RMTSimpleResponse class]
+ responsesWriteable:[GRXWriteable writeableWithSingleValueHandler:handler]];
+}
+#pragma mark StreamingOutputCall(StreamingOutputCallRequest) returns (stream StreamingOutputCallResponse)
+
+- (void)streamingOutputCallWithRequest:(RMTStreamingOutputCallRequest *)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler{
+ [[self RPCToStreamingOutputCallWithRequest:request handler:handler] start];
+}
+// Returns a not-yet-started RPC object.
+- (ProtoRPC *)RPCToStreamingOutputCallWithRequest:(RMTStreamingOutputCallRequest *)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler{
+ return [self RPCToMethod:@"StreamingOutputCall"
+ requestsWriter:[GRXWriter writerWithValue:request]
+ responseClass:[RMTStreamingOutputCallResponse class]
+ responsesWriteable:[GRXWriteable writeableWithStreamHandler:handler]];
+}
+#pragma mark StreamingInputCall(stream StreamingInputCallRequest) returns (StreamingInputCallResponse)
+
+- (void)streamingInputCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(RMTStreamingInputCallResponse *response, NSError *error))handler{
+ [[self RPCToStreamingInputCallWithRequestsWriter:request handler:handler] start];
+}
+// Returns a not-yet-started RPC object.
+- (ProtoRPC *)RPCToStreamingInputCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(RMTStreamingInputCallResponse *response, NSError *error))handler{
+ return [self RPCToMethod:@"StreamingInputCall"
+ requestsWriter:request
+ responseClass:[RMTStreamingInputCallResponse class]
+ responsesWriteable:[GRXWriteable writeableWithSingleValueHandler:handler]];
+}
+#pragma mark FullDuplexCall(stream StreamingOutputCallRequest) returns (stream StreamingOutputCallResponse)
+
+- (void)fullDuplexCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler{
+ [[self RPCToFullDuplexCallWithRequestsWriter:request handler:handler] start];
+}
+// Returns a not-yet-started RPC object.
+- (ProtoRPC *)RPCToFullDuplexCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler{
+ return [self RPCToMethod:@"FullDuplexCall"
+ requestsWriter:request
+ responseClass:[RMTStreamingOutputCallResponse class]
+ responsesWriteable:[GRXWriteable writeableWithStreamHandler:handler]];
+}
+#pragma mark HalfDuplexCall(stream StreamingOutputCallRequest) returns (stream StreamingOutputCallResponse)
+
+- (void)halfDuplexCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler{
+ [[self RPCToHalfDuplexCallWithRequestsWriter:request handler:handler] start];
+}
+// Returns a not-yet-started RPC object.
+- (ProtoRPC *)RPCToHalfDuplexCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler{
+ return [self RPCToMethod:@"HalfDuplexCall"
+ requestsWriter:request
+ responseClass:[RMTStreamingOutputCallResponse class]
+ responsesWriteable:[GRXWriteable writeableWithStreamHandler:handler]];
+}
+@end
diff --git a/src/objective-c/examples/Sample/RemoteTestClient/empty.proto b/src/objective-c/examples/Sample/RemoteTestClient/empty.proto
index 3b626ab131..a678048289 100644
--- a/src/objective-c/examples/Sample/RemoteTestClient/empty.proto
+++ b/src/objective-c/examples/Sample/RemoteTestClient/empty.proto
@@ -27,13 +27,11 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-syntax = "proto2";
-
-import "google/protobuf/objectivec-descriptor.proto";
+syntax = "proto3";
package grpc.testing;
-option (google.protobuf.objectivec_file_options).class_prefix = "RMT";
+option objc_class_prefix = "RMT";
// An empty message that you can re-use to avoid defining duplicated empty
// messages in your project. A typical example is to use it as argument or the
diff --git a/src/objective-c/examples/Sample/RemoteTestClient/messages.proto b/src/objective-c/examples/Sample/RemoteTestClient/messages.proto
index ab8577401f..85d93c2ff9 100644
--- a/src/objective-c/examples/Sample/RemoteTestClient/messages.proto
+++ b/src/objective-c/examples/Sample/RemoteTestClient/messages.proto
@@ -29,13 +29,11 @@
// Message definitions to be used by integration test service definitions.
-syntax = "proto2";
-
-import "google/protobuf/objectivec-descriptor.proto";
+syntax = "proto3";
package grpc.testing;
-option (google.protobuf.objectivec_file_options).class_prefix = "RMT";
+option objc_class_prefix = "RMT";
// The type of payload that should be returned.
enum PayloadType {
@@ -52,46 +50,46 @@ enum PayloadType {
// A block of data, to simply increase gRPC message size.
message Payload {
// The type of data in body.
- optional PayloadType type = 1;
+ PayloadType type = 1;
// Primary contents of payload.
- optional bytes body = 2;
+ bytes body = 2;
}
// Unary request.
message SimpleRequest {
// Desired payload type in the response from the server.
// If response_type is RANDOM, server randomly chooses one from other formats.
- optional PayloadType response_type = 1;
+ PayloadType response_type = 1;
// Desired payload size in the response from the server.
// If response_type is COMPRESSABLE, this denotes the size before compression.
- optional int32 response_size = 2;
+ int32 response_size = 2;
// Optional input payload sent along with the request.
- optional Payload payload = 3;
+ Payload payload = 3;
// Whether SimpleResponse should include username.
- optional bool fill_username = 4;
+ bool fill_username = 4;
// Whether SimpleResponse should include OAuth scope.
- optional bool fill_oauth_scope = 5;
+ bool fill_oauth_scope = 5;
}
// Unary response, as configured by the request.
message SimpleResponse {
// Payload to increase message size.
- optional Payload payload = 1;
+ Payload payload = 1;
// The user the request came from, for verifying authentication was
// successful when the client expected it.
- optional string username = 2;
+ string username = 2;
// OAuth scope.
- optional string oauth_scope = 3;
+ string oauth_scope = 3;
}
// Client-streaming request.
message StreamingInputCallRequest {
// Optional input payload sent along with the request.
- optional Payload payload = 1;
+ Payload payload = 1;
// Not expecting any payload from the response.
}
@@ -99,18 +97,18 @@ message StreamingInputCallRequest {
// Client-streaming response.
message StreamingInputCallResponse {
// Aggregated size of payloads received from the client.
- optional int32 aggregated_payload_size = 1;
+ int32 aggregated_payload_size = 1;
}
// Configuration for a particular response.
message ResponseParameters {
// Desired payload sizes in responses from the server.
// If response_type is COMPRESSABLE, this denotes the size before compression.
- optional int32 size = 1;
+ int32 size = 1;
// Desired interval between consecutive responses in the response stream in
// microseconds.
- optional int32 interval_us = 2;
+ int32 interval_us = 2;
}
// Server-streaming request.
@@ -119,17 +117,17 @@ message StreamingOutputCallRequest {
// If response_type is RANDOM, the payload from each response in the stream
// might be of different types. This is to simulate a mixed type of payload
// stream.
- optional PayloadType response_type = 1;
+ PayloadType response_type = 1;
// Configuration for each expected response message.
repeated ResponseParameters response_parameters = 2;
// Optional input payload sent along with the request.
- optional Payload payload = 3;
+ Payload payload = 3;
}
// Server-streaming response, as configured by the request and parameters.
message StreamingOutputCallResponse {
// Payload to increase response size.
- optional Payload payload = 1;
+ Payload payload = 1;
}
diff --git a/src/objective-c/examples/Sample/RemoteTestClient/test.proto b/src/objective-c/examples/Sample/RemoteTestClient/test.proto
index 4b08220599..2f5a5489b3 100644
--- a/src/objective-c/examples/Sample/RemoteTestClient/test.proto
+++ b/src/objective-c/examples/Sample/RemoteTestClient/test.proto
@@ -29,15 +29,14 @@
// An integration test service that covers all the method signature permutations
// of unary/streaming requests/responses.
-syntax = "proto2";
+syntax = "proto3";
import "empty.proto";
import "messages.proto";
-import "google/protobuf/objectivec-descriptor.proto";
package grpc.testing;
-option (google.protobuf.objectivec_file_options).class_prefix = "RMT";
+option objc_class_prefix = "RMT";
// A simple service to test the various types of RPCs and experiment with
// performance with various types of payload.
@@ -51,24 +50,24 @@ service TestService {
// One request followed by a sequence of responses (streamed download).
// The server returns the payload with client desired type and sizes.
-// rpc StreamingOutputCall(StreamingOutputCallRequest)
-// returns (stream StreamingOutputCallResponse);
+ rpc StreamingOutputCall(StreamingOutputCallRequest)
+ returns (stream StreamingOutputCallResponse);
// A sequence of requests followed by one response (streamed upload).
// The server returns the aggregated size of client payload as the result.
-// rpc StreamingInputCall(stream StreamingInputCallRequest)
-// returns (StreamingInputCallResponse);
+ rpc StreamingInputCall(stream StreamingInputCallRequest)
+ returns (StreamingInputCallResponse);
// A sequence of requests with each request served by the server immediately.
// As one request could lead to multiple responses, this interface
// demonstrates the idea of full duplexing.
-// rpc FullDuplexCall(stream StreamingOutputCallRequest)
-// returns (stream StreamingOutputCallResponse);
+ rpc FullDuplexCall(stream StreamingOutputCallRequest)
+ returns (stream StreamingOutputCallResponse);
// A sequence of requests followed by a sequence of responses.
// The server buffers all the client requests and then serves them in order. A
// stream of responses are returned to the client when the server starts with
// first request.
-// rpc HalfDuplexCall(stream StreamingOutputCallRequest)
-// returns (stream StreamingOutputCallResponse);
+ rpc HalfDuplexCall(stream StreamingOutputCallRequest)
+ returns (stream StreamingOutputCallResponse);
}
diff --git a/src/objective-c/examples/Sample/RouteGuideClient/RouteGuide.pbobjc.h b/src/objective-c/examples/Sample/RouteGuideClient/RouteGuide.pbobjc.h
new file mode 100644
index 0000000000..6efaec7f02
--- /dev/null
+++ b/src/objective-c/examples/Sample/RouteGuideClient/RouteGuide.pbobjc.h
@@ -0,0 +1,134 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: route_guide.proto
+
+#import "GPBProtocolBuffers.h"
+
+#if GOOGLE_PROTOBUF_OBJC_GEN_VERSION != 30000
+#error This file was generated by a different version of protoc-gen-objc which is incompatible with your Protocol Buffer sources.
+#endif
+
+CF_EXTERN_C_BEGIN
+
+@class RGDFeature;
+@class RGDPoint;
+@class RGDRectangle;
+@class RGDRouteNote;
+@class RGDRouteSummary;
+
+
+#pragma mark - RGDRouteGuideRoot
+
+@interface RGDRouteGuideRoot : GPBRootObject
+@end
+
+#pragma mark - RGDPoint
+
+typedef GPB_ENUM(RGDPoint_FieldNumber) {
+ RGDPoint_FieldNumber_Latitude = 1,
+ RGDPoint_FieldNumber_Longitude = 2,
+};
+
+// Points are represented as latitude-longitude pairs in the E7 representation
+// (degrees multiplied by 10**7 and rounded to the nearest integer).
+// Latitudes should be in the range +/- 90 degrees and longitude should be in
+// the range +/- 180 degrees (inclusive).
+@interface RGDPoint : GPBMessage
+
+@property(nonatomic, readwrite) int32_t latitude;
+
+@property(nonatomic, readwrite) int32_t longitude;
+
+@end
+
+#pragma mark - RGDRectangle
+
+typedef GPB_ENUM(RGDRectangle_FieldNumber) {
+ RGDRectangle_FieldNumber_Lo = 1,
+ RGDRectangle_FieldNumber_Hi = 2,
+};
+
+// A latitude-longitude rectangle, represented as two diagonally opposite
+// points "lo" and "hi".
+@interface RGDRectangle : GPBMessage
+
+// One corner of the rectangle.
+@property(nonatomic, readwrite) BOOL hasLo;
+@property(nonatomic, readwrite, strong) RGDPoint *lo;
+
+// The other corner of the rectangle.
+@property(nonatomic, readwrite) BOOL hasHi;
+@property(nonatomic, readwrite, strong) RGDPoint *hi;
+
+@end
+
+#pragma mark - RGDFeature
+
+typedef GPB_ENUM(RGDFeature_FieldNumber) {
+ RGDFeature_FieldNumber_Name = 1,
+ RGDFeature_FieldNumber_Location = 2,
+};
+
+// A feature names something at a given point.
+//
+// If a feature could not be named, the name is empty.
+@interface RGDFeature : GPBMessage
+
+// The name of the feature.
+@property(nonatomic, readwrite, copy) NSString *name;
+
+// The point where the feature is detected.
+@property(nonatomic, readwrite) BOOL hasLocation;
+@property(nonatomic, readwrite, strong) RGDPoint *location;
+
+@end
+
+#pragma mark - RGDRouteNote
+
+typedef GPB_ENUM(RGDRouteNote_FieldNumber) {
+ RGDRouteNote_FieldNumber_Location = 1,
+ RGDRouteNote_FieldNumber_Message = 2,
+};
+
+// A RouteNote is a message sent while at a given point.
+@interface RGDRouteNote : GPBMessage
+
+// The location from which the message is sent.
+@property(nonatomic, readwrite) BOOL hasLocation;
+@property(nonatomic, readwrite, strong) RGDPoint *location;
+
+// The message to be sent.
+@property(nonatomic, readwrite, copy) NSString *message;
+
+@end
+
+#pragma mark - RGDRouteSummary
+
+typedef GPB_ENUM(RGDRouteSummary_FieldNumber) {
+ RGDRouteSummary_FieldNumber_PointCount = 1,
+ RGDRouteSummary_FieldNumber_FeatureCount = 2,
+ RGDRouteSummary_FieldNumber_Distance = 3,
+ RGDRouteSummary_FieldNumber_ElapsedTime = 4,
+};
+
+// A RouteSummary is received in response to a RecordRoute rpc.
+//
+// It contains the number of individual points received, the number of
+// detected features, and the total distance covered as the cumulative sum of
+// the distance between each point.
+@interface RGDRouteSummary : GPBMessage
+
+// The number of points received.
+@property(nonatomic, readwrite) int32_t pointCount;
+
+// The number of known features passed while traversing the route.
+@property(nonatomic, readwrite) int32_t featureCount;
+
+// The distance covered in metres.
+@property(nonatomic, readwrite) int32_t distance;
+
+// The duration of the traversal in seconds.
+@property(nonatomic, readwrite) int32_t elapsedTime;
+
+@end
+
+CF_EXTERN_C_END
diff --git a/src/objective-c/examples/Sample/RouteGuideClient/RouteGuide.pbobjc.m b/src/objective-c/examples/Sample/RouteGuideClient/RouteGuide.pbobjc.m
new file mode 100644
index 0000000000..16f291a61c
--- /dev/null
+++ b/src/objective-c/examples/Sample/RouteGuideClient/RouteGuide.pbobjc.m
@@ -0,0 +1,355 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: route_guide.proto
+
+#import "GPBProtocolBuffers_RuntimeSupport.h"
+
+#import "RouteGuide.pbobjc.h"
+
+#pragma mark - RGDRouteGuideRoot
+
+@implementation RGDRouteGuideRoot
+
+@end
+
+static GPBFileDescriptor *RGDRouteGuideRoot_FileDescriptor(void) {
+ // This is called by +initialize so there is no need to worry
+ // about thread safety of the singleton.
+ static GPBFileDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ descriptor = [[GPBFileDescriptor alloc] initWithPackage:@"grpc.example.routeguide"
+ syntax:GPBFileSyntaxProto3];
+ }
+ return descriptor;
+}
+
+#pragma mark - RGDPoint
+
+@implementation RGDPoint
+
+@dynamic latitude;
+@dynamic longitude;
+
+typedef struct RGDPoint_Storage {
+ uint32_t _has_storage_[1];
+ int32_t latitude;
+ int32_t longitude;
+} RGDPoint_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "latitude",
+ .number = RGDPoint_FieldNumber_Latitude,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt32,
+ .offset = offsetof(RGDPoint_Storage, latitude),
+ .defaultValue.valueInt32 = 0,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "longitude",
+ .number = RGDPoint_FieldNumber_Longitude,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt32,
+ .offset = offsetof(RGDPoint_Storage, longitude),
+ .defaultValue.valueInt32 = 0,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[RGDPoint class]
+ rootClass:[RGDRouteGuideRoot class]
+ file:RGDRouteGuideRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(RGDPoint_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - RGDRectangle
+
+@implementation RGDRectangle
+
+@dynamic hasLo, lo;
+@dynamic hasHi, hi;
+
+typedef struct RGDRectangle_Storage {
+ uint32_t _has_storage_[1];
+ RGDPoint *lo;
+ RGDPoint *hi;
+} RGDRectangle_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "lo",
+ .number = RGDRectangle_FieldNumber_Lo,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeMessage,
+ .offset = offsetof(RGDRectangle_Storage, lo),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(RGDPoint),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "hi",
+ .number = RGDRectangle_FieldNumber_Hi,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeMessage,
+ .offset = offsetof(RGDRectangle_Storage, hi),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(RGDPoint),
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[RGDRectangle class]
+ rootClass:[RGDRouteGuideRoot class]
+ file:RGDRouteGuideRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(RGDRectangle_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - RGDFeature
+
+@implementation RGDFeature
+
+@dynamic name;
+@dynamic hasLocation, location;
+
+typedef struct RGDFeature_Storage {
+ uint32_t _has_storage_[1];
+ NSString *name;
+ RGDPoint *location;
+} RGDFeature_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "name",
+ .number = RGDFeature_FieldNumber_Name,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(RGDFeature_Storage, name),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "location",
+ .number = RGDFeature_FieldNumber_Location,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeMessage,
+ .offset = offsetof(RGDFeature_Storage, location),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(RGDPoint),
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[RGDFeature class]
+ rootClass:[RGDRouteGuideRoot class]
+ file:RGDRouteGuideRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(RGDFeature_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - RGDRouteNote
+
+@implementation RGDRouteNote
+
+@dynamic hasLocation, location;
+@dynamic message;
+
+typedef struct RGDRouteNote_Storage {
+ uint32_t _has_storage_[1];
+ RGDPoint *location;
+ NSString *message;
+} RGDRouteNote_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "location",
+ .number = RGDRouteNote_FieldNumber_Location,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeMessage,
+ .offset = offsetof(RGDRouteNote_Storage, location),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(RGDPoint),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "message",
+ .number = RGDRouteNote_FieldNumber_Message,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(RGDRouteNote_Storage, message),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[RGDRouteNote class]
+ rootClass:[RGDRouteGuideRoot class]
+ file:RGDRouteGuideRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(RGDRouteNote_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - RGDRouteSummary
+
+@implementation RGDRouteSummary
+
+@dynamic pointCount;
+@dynamic featureCount;
+@dynamic distance;
+@dynamic elapsedTime;
+
+typedef struct RGDRouteSummary_Storage {
+ uint32_t _has_storage_[1];
+ int32_t pointCount;
+ int32_t featureCount;
+ int32_t distance;
+ int32_t elapsedTime;
+} RGDRouteSummary_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "pointCount",
+ .number = RGDRouteSummary_FieldNumber_PointCount,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt32,
+ .offset = offsetof(RGDRouteSummary_Storage, pointCount),
+ .defaultValue.valueInt32 = 0,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "featureCount",
+ .number = RGDRouteSummary_FieldNumber_FeatureCount,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt32,
+ .offset = offsetof(RGDRouteSummary_Storage, featureCount),
+ .defaultValue.valueInt32 = 0,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "distance",
+ .number = RGDRouteSummary_FieldNumber_Distance,
+ .hasIndex = 2,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt32,
+ .offset = offsetof(RGDRouteSummary_Storage, distance),
+ .defaultValue.valueInt32 = 0,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "elapsedTime",
+ .number = RGDRouteSummary_FieldNumber_ElapsedTime,
+ .hasIndex = 3,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt32,
+ .offset = offsetof(RGDRouteSummary_Storage, elapsedTime),
+ .defaultValue.valueInt32 = 0,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[RGDRouteSummary class]
+ rootClass:[RGDRouteGuideRoot class]
+ file:RGDRouteGuideRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(RGDRouteSummary_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
diff --git a/src/objective-c/examples/Sample/RouteGuideClient/RouteGuide.pbrpc.h b/src/objective-c/examples/Sample/RouteGuideClient/RouteGuide.pbrpc.h
new file mode 100644
index 0000000000..9e60865d98
--- /dev/null
+++ b/src/objective-c/examples/Sample/RouteGuideClient/RouteGuide.pbrpc.h
@@ -0,0 +1,43 @@
+#import "RouteGuide.pbobjc.h"
+#import <gRPC/ProtoService.h>
+
+
+@protocol GRXWriteable;
+@protocol GRXWriter;
+
+@protocol RGDRouteGuide <NSObject>
+
+#pragma mark GetFeature(Point) returns (Feature)
+
+- (void)getFeatureWithRequest:(RGDPoint *)request handler:(void(^)(RGDFeature *response, NSError *error))handler;
+
+- (ProtoRPC *)RPCToGetFeatureWithRequest:(RGDPoint *)request handler:(void(^)(RGDFeature *response, NSError *error))handler;
+
+
+#pragma mark ListFeatures(Rectangle) returns (stream Feature)
+
+- (void)listFeaturesWithRequest:(RGDRectangle *)request handler:(void(^)(BOOL done, RGDFeature *response, NSError *error))handler;
+
+- (ProtoRPC *)RPCToListFeaturesWithRequest:(RGDRectangle *)request handler:(void(^)(BOOL done, RGDFeature *response, NSError *error))handler;
+
+
+#pragma mark RecordRoute(stream Point) returns (RouteSummary)
+
+- (void)recordRouteWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(RGDRouteSummary *response, NSError *error))handler;
+
+- (ProtoRPC *)RPCToRecordRouteWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(RGDRouteSummary *response, NSError *error))handler;
+
+
+#pragma mark RouteChat(stream RouteNote) returns (stream RouteNote)
+
+- (void)routeChatWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RGDRouteNote *response, NSError *error))handler;
+
+- (ProtoRPC *)RPCToRouteChatWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RGDRouteNote *response, NSError *error))handler;
+
+
+@end
+
+// Basic service implementation, over gRPC, that only does marshalling and parsing.
+@interface RGDRouteGuide : ProtoService<RGDRouteGuide>
+- (instancetype)initWithHost:(NSString *)host NS_DESIGNATED_INITIALIZER;
+@end
diff --git a/src/objective-c/examples/Sample/RouteGuideClient/RouteGuide.pbrpc.m b/src/objective-c/examples/Sample/RouteGuideClient/RouteGuide.pbrpc.m
new file mode 100644
index 0000000000..2ca3dc6768
--- /dev/null
+++ b/src/objective-c/examples/Sample/RouteGuideClient/RouteGuide.pbrpc.m
@@ -0,0 +1,72 @@
+#import "RouteGuide.pbrpc.h"
+#import <gRPC/GRXWriteable.h>
+#import <gRPC/GRXWriter+Immediate.h>
+#import <gRPC/ProtoRPC.h>
+
+static NSString *const kPackageName = @"grpc.example.routeguide";
+static NSString *const kServiceName = @"RouteGuide";
+
+@implementation RGDRouteGuide
+
+// Designated initializer
+- (instancetype)initWithHost:(NSString *)host {
+ return (self = [super initWithHost:host packageName:kPackageName serviceName:kServiceName]);
+}
+
+// Override superclass initializer to disallow different package and service names.
+- (instancetype)initWithHost:(NSString *)host
+ packageName:(NSString *)packageName
+ serviceName:(NSString *)serviceName {
+ return [self initWithHost:host];
+}
+
+
+#pragma mark GetFeature(Point) returns (Feature)
+
+- (void)getFeatureWithRequest:(RGDPoint *)request handler:(void(^)(RGDFeature *response, NSError *error))handler{
+ [[self RPCToGetFeatureWithRequest:request handler:handler] start];
+}
+// Returns a not-yet-started RPC object.
+- (ProtoRPC *)RPCToGetFeatureWithRequest:(RGDPoint *)request handler:(void(^)(RGDFeature *response, NSError *error))handler{
+ return [self RPCToMethod:@"GetFeature"
+ requestsWriter:[GRXWriter writerWithValue:request]
+ responseClass:[RGDFeature class]
+ responsesWriteable:[GRXWriteable writeableWithSingleValueHandler:handler]];
+}
+#pragma mark ListFeatures(Rectangle) returns (stream Feature)
+
+- (void)listFeaturesWithRequest:(RGDRectangle *)request handler:(void(^)(BOOL done, RGDFeature *response, NSError *error))handler{
+ [[self RPCToListFeaturesWithRequest:request handler:handler] start];
+}
+// Returns a not-yet-started RPC object.
+- (ProtoRPC *)RPCToListFeaturesWithRequest:(RGDRectangle *)request handler:(void(^)(BOOL done, RGDFeature *response, NSError *error))handler{
+ return [self RPCToMethod:@"ListFeatures"
+ requestsWriter:[GRXWriter writerWithValue:request]
+ responseClass:[RGDFeature class]
+ responsesWriteable:[GRXWriteable writeableWithStreamHandler:handler]];
+}
+#pragma mark RecordRoute(stream Point) returns (RouteSummary)
+
+- (void)recordRouteWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(RGDRouteSummary *response, NSError *error))handler{
+ [[self RPCToRecordRouteWithRequestsWriter:request handler:handler] start];
+}
+// Returns a not-yet-started RPC object.
+- (ProtoRPC *)RPCToRecordRouteWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(RGDRouteSummary *response, NSError *error))handler{
+ return [self RPCToMethod:@"RecordRoute"
+ requestsWriter:request
+ responseClass:[RGDRouteSummary class]
+ responsesWriteable:[GRXWriteable writeableWithSingleValueHandler:handler]];
+}
+#pragma mark RouteChat(stream RouteNote) returns (stream RouteNote)
+
+- (void)routeChatWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RGDRouteNote *response, NSError *error))handler{
+ [[self RPCToRouteChatWithRequestsWriter:request handler:handler] start];
+}
+// Returns a not-yet-started RPC object.
+- (ProtoRPC *)RPCToRouteChatWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RGDRouteNote *response, NSError *error))handler{
+ return [self RPCToMethod:@"RouteChat"
+ requestsWriter:request
+ responseClass:[RGDRouteNote class]
+ responsesWriteable:[GRXWriteable writeableWithStreamHandler:handler]];
+}
+@end
diff --git a/src/objective-c/examples/Sample/RouteGuideClient/Route_guide.pb.h b/src/objective-c/examples/Sample/RouteGuideClient/Route_guide.pb.h
deleted file mode 100644
index 194bfc5f2a..0000000000
--- a/src/objective-c/examples/Sample/RouteGuideClient/Route_guide.pb.h
+++ /dev/null
@@ -1,387 +0,0 @@
-// Generated by the protocol buffer compiler. DO NOT EDIT!
-
-#import <ProtocolBuffers/ProtocolBuffers.h>
-
-// @@protoc_insertion_point(imports)
-
-@class ObjectiveCFileOptions;
-@class ObjectiveCFileOptionsBuilder;
-@class PBDescriptorProto;
-@class PBDescriptorProtoBuilder;
-@class PBDescriptorProtoExtensionRange;
-@class PBDescriptorProtoExtensionRangeBuilder;
-@class PBEnumDescriptorProto;
-@class PBEnumDescriptorProtoBuilder;
-@class PBEnumOptions;
-@class PBEnumOptionsBuilder;
-@class PBEnumValueDescriptorProto;
-@class PBEnumValueDescriptorProtoBuilder;
-@class PBEnumValueOptions;
-@class PBEnumValueOptionsBuilder;
-@class PBFieldDescriptorProto;
-@class PBFieldDescriptorProtoBuilder;
-@class PBFieldOptions;
-@class PBFieldOptionsBuilder;
-@class PBFileDescriptorProto;
-@class PBFileDescriptorProtoBuilder;
-@class PBFileDescriptorSet;
-@class PBFileDescriptorSetBuilder;
-@class PBFileOptions;
-@class PBFileOptionsBuilder;
-@class PBMessageOptions;
-@class PBMessageOptionsBuilder;
-@class PBMethodDescriptorProto;
-@class PBMethodDescriptorProtoBuilder;
-@class PBMethodOptions;
-@class PBMethodOptionsBuilder;
-@class PBOneofDescriptorProto;
-@class PBOneofDescriptorProtoBuilder;
-@class PBServiceDescriptorProto;
-@class PBServiceDescriptorProtoBuilder;
-@class PBServiceOptions;
-@class PBServiceOptionsBuilder;
-@class PBSourceCodeInfo;
-@class PBSourceCodeInfoBuilder;
-@class PBSourceCodeInfoLocation;
-@class PBSourceCodeInfoLocationBuilder;
-@class PBUninterpretedOption;
-@class PBUninterpretedOptionBuilder;
-@class PBUninterpretedOptionNamePart;
-@class PBUninterpretedOptionNamePartBuilder;
-@class RGDFeature;
-@class RGDFeatureBuilder;
-@class RGDPoint;
-@class RGDPointBuilder;
-@class RGDRectangle;
-@class RGDRectangleBuilder;
-@class RGDRouteNote;
-@class RGDRouteNoteBuilder;
-@class RGDRouteSummary;
-@class RGDRouteSummaryBuilder;
-
-
-
-@interface RGDRouteGuideRoot : NSObject {
-}
-+ (PBExtensionRegistry*) extensionRegistry;
-+ (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry;
-@end
-
-@interface RGDPoint : PBGeneratedMessage<GeneratedMessageProtocol> {
-@private
- BOOL hasLatitude_:1;
- BOOL hasLongitude_:1;
- SInt32 latitude;
- SInt32 longitude;
-}
-- (BOOL) hasLatitude;
-- (BOOL) hasLongitude;
-@property (readonly) SInt32 latitude;
-@property (readonly) SInt32 longitude;
-
-+ (instancetype) defaultInstance;
-- (instancetype) defaultInstance;
-
-- (BOOL) isInitialized;
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output;
-- (RGDPointBuilder*) builder;
-+ (RGDPointBuilder*) builder;
-+ (RGDPointBuilder*) builderWithPrototype:(RGDPoint*) prototype;
-- (RGDPointBuilder*) toBuilder;
-
-+ (RGDPoint*) parseFromData:(NSData*) data;
-+ (RGDPoint*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RGDPoint*) parseFromInputStream:(NSInputStream*) input;
-+ (RGDPoint*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RGDPoint*) parseFromCodedInputStream:(PBCodedInputStream*) input;
-+ (RGDPoint*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-@end
-
-@interface RGDPointBuilder : PBGeneratedMessageBuilder {
-@private
- RGDPoint* resultPoint;
-}
-
-- (RGDPoint*) defaultInstance;
-
-- (RGDPointBuilder*) clear;
-- (RGDPointBuilder*) clone;
-
-- (RGDPoint*) build;
-- (RGDPoint*) buildPartial;
-
-- (RGDPointBuilder*) mergeFrom:(RGDPoint*) other;
-- (RGDPointBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input;
-- (RGDPointBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-
-- (BOOL) hasLatitude;
-- (SInt32) latitude;
-- (RGDPointBuilder*) setLatitude:(SInt32) value;
-- (RGDPointBuilder*) clearLatitude;
-
-- (BOOL) hasLongitude;
-- (SInt32) longitude;
-- (RGDPointBuilder*) setLongitude:(SInt32) value;
-- (RGDPointBuilder*) clearLongitude;
-@end
-
-@interface RGDRectangle : PBGeneratedMessage<GeneratedMessageProtocol> {
-@private
- BOOL hasLo_:1;
- BOOL hasHi_:1;
- RGDPoint* lo;
- RGDPoint* hi;
-}
-- (BOOL) hasLo;
-- (BOOL) hasHi;
-@property (readonly, strong) RGDPoint* lo;
-@property (readonly, strong) RGDPoint* hi;
-
-+ (instancetype) defaultInstance;
-- (instancetype) defaultInstance;
-
-- (BOOL) isInitialized;
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output;
-- (RGDRectangleBuilder*) builder;
-+ (RGDRectangleBuilder*) builder;
-+ (RGDRectangleBuilder*) builderWithPrototype:(RGDRectangle*) prototype;
-- (RGDRectangleBuilder*) toBuilder;
-
-+ (RGDRectangle*) parseFromData:(NSData*) data;
-+ (RGDRectangle*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RGDRectangle*) parseFromInputStream:(NSInputStream*) input;
-+ (RGDRectangle*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RGDRectangle*) parseFromCodedInputStream:(PBCodedInputStream*) input;
-+ (RGDRectangle*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-@end
-
-@interface RGDRectangleBuilder : PBGeneratedMessageBuilder {
-@private
- RGDRectangle* resultRectangle;
-}
-
-- (RGDRectangle*) defaultInstance;
-
-- (RGDRectangleBuilder*) clear;
-- (RGDRectangleBuilder*) clone;
-
-- (RGDRectangle*) build;
-- (RGDRectangle*) buildPartial;
-
-- (RGDRectangleBuilder*) mergeFrom:(RGDRectangle*) other;
-- (RGDRectangleBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input;
-- (RGDRectangleBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-
-- (BOOL) hasLo;
-- (RGDPoint*) lo;
-- (RGDRectangleBuilder*) setLo:(RGDPoint*) value;
-- (RGDRectangleBuilder*) setLoBuilder:(RGDPointBuilder*) builderForValue;
-- (RGDRectangleBuilder*) mergeLo:(RGDPoint*) value;
-- (RGDRectangleBuilder*) clearLo;
-
-- (BOOL) hasHi;
-- (RGDPoint*) hi;
-- (RGDRectangleBuilder*) setHi:(RGDPoint*) value;
-- (RGDRectangleBuilder*) setHiBuilder:(RGDPointBuilder*) builderForValue;
-- (RGDRectangleBuilder*) mergeHi:(RGDPoint*) value;
-- (RGDRectangleBuilder*) clearHi;
-@end
-
-@interface RGDFeature : PBGeneratedMessage<GeneratedMessageProtocol> {
-@private
- BOOL hasName_:1;
- BOOL hasLocation_:1;
- NSString* name;
- RGDPoint* location;
-}
-- (BOOL) hasName;
-- (BOOL) hasLocation;
-@property (readonly, strong) NSString* name;
-@property (readonly, strong) RGDPoint* location;
-
-+ (instancetype) defaultInstance;
-- (instancetype) defaultInstance;
-
-- (BOOL) isInitialized;
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output;
-- (RGDFeatureBuilder*) builder;
-+ (RGDFeatureBuilder*) builder;
-+ (RGDFeatureBuilder*) builderWithPrototype:(RGDFeature*) prototype;
-- (RGDFeatureBuilder*) toBuilder;
-
-+ (RGDFeature*) parseFromData:(NSData*) data;
-+ (RGDFeature*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RGDFeature*) parseFromInputStream:(NSInputStream*) input;
-+ (RGDFeature*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RGDFeature*) parseFromCodedInputStream:(PBCodedInputStream*) input;
-+ (RGDFeature*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-@end
-
-@interface RGDFeatureBuilder : PBGeneratedMessageBuilder {
-@private
- RGDFeature* resultFeature;
-}
-
-- (RGDFeature*) defaultInstance;
-
-- (RGDFeatureBuilder*) clear;
-- (RGDFeatureBuilder*) clone;
-
-- (RGDFeature*) build;
-- (RGDFeature*) buildPartial;
-
-- (RGDFeatureBuilder*) mergeFrom:(RGDFeature*) other;
-- (RGDFeatureBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input;
-- (RGDFeatureBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-
-- (BOOL) hasName;
-- (NSString*) name;
-- (RGDFeatureBuilder*) setName:(NSString*) value;
-- (RGDFeatureBuilder*) clearName;
-
-- (BOOL) hasLocation;
-- (RGDPoint*) location;
-- (RGDFeatureBuilder*) setLocation:(RGDPoint*) value;
-- (RGDFeatureBuilder*) setLocationBuilder:(RGDPointBuilder*) builderForValue;
-- (RGDFeatureBuilder*) mergeLocation:(RGDPoint*) value;
-- (RGDFeatureBuilder*) clearLocation;
-@end
-
-@interface RGDRouteNote : PBGeneratedMessage<GeneratedMessageProtocol> {
-@private
- BOOL hasMessage_:1;
- BOOL hasLocation_:1;
- NSString* message;
- RGDPoint* location;
-}
-- (BOOL) hasLocation;
-- (BOOL) hasMessage;
-@property (readonly, strong) RGDPoint* location;
-@property (readonly, strong) NSString* message;
-
-+ (instancetype) defaultInstance;
-- (instancetype) defaultInstance;
-
-- (BOOL) isInitialized;
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output;
-- (RGDRouteNoteBuilder*) builder;
-+ (RGDRouteNoteBuilder*) builder;
-+ (RGDRouteNoteBuilder*) builderWithPrototype:(RGDRouteNote*) prototype;
-- (RGDRouteNoteBuilder*) toBuilder;
-
-+ (RGDRouteNote*) parseFromData:(NSData*) data;
-+ (RGDRouteNote*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RGDRouteNote*) parseFromInputStream:(NSInputStream*) input;
-+ (RGDRouteNote*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RGDRouteNote*) parseFromCodedInputStream:(PBCodedInputStream*) input;
-+ (RGDRouteNote*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-@end
-
-@interface RGDRouteNoteBuilder : PBGeneratedMessageBuilder {
-@private
- RGDRouteNote* resultRouteNote;
-}
-
-- (RGDRouteNote*) defaultInstance;
-
-- (RGDRouteNoteBuilder*) clear;
-- (RGDRouteNoteBuilder*) clone;
-
-- (RGDRouteNote*) build;
-- (RGDRouteNote*) buildPartial;
-
-- (RGDRouteNoteBuilder*) mergeFrom:(RGDRouteNote*) other;
-- (RGDRouteNoteBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input;
-- (RGDRouteNoteBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-
-- (BOOL) hasLocation;
-- (RGDPoint*) location;
-- (RGDRouteNoteBuilder*) setLocation:(RGDPoint*) value;
-- (RGDRouteNoteBuilder*) setLocationBuilder:(RGDPointBuilder*) builderForValue;
-- (RGDRouteNoteBuilder*) mergeLocation:(RGDPoint*) value;
-- (RGDRouteNoteBuilder*) clearLocation;
-
-- (BOOL) hasMessage;
-- (NSString*) message;
-- (RGDRouteNoteBuilder*) setMessage:(NSString*) value;
-- (RGDRouteNoteBuilder*) clearMessage;
-@end
-
-@interface RGDRouteSummary : PBGeneratedMessage<GeneratedMessageProtocol> {
-@private
- BOOL hasPointCount_:1;
- BOOL hasFeatureCount_:1;
- BOOL hasDistance_:1;
- BOOL hasElapsedTime_:1;
- SInt32 pointCount;
- SInt32 featureCount;
- SInt32 distance;
- SInt32 elapsedTime;
-}
-- (BOOL) hasPointCount;
-- (BOOL) hasFeatureCount;
-- (BOOL) hasDistance;
-- (BOOL) hasElapsedTime;
-@property (readonly) SInt32 pointCount;
-@property (readonly) SInt32 featureCount;
-@property (readonly) SInt32 distance;
-@property (readonly) SInt32 elapsedTime;
-
-+ (instancetype) defaultInstance;
-- (instancetype) defaultInstance;
-
-- (BOOL) isInitialized;
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output;
-- (RGDRouteSummaryBuilder*) builder;
-+ (RGDRouteSummaryBuilder*) builder;
-+ (RGDRouteSummaryBuilder*) builderWithPrototype:(RGDRouteSummary*) prototype;
-- (RGDRouteSummaryBuilder*) toBuilder;
-
-+ (RGDRouteSummary*) parseFromData:(NSData*) data;
-+ (RGDRouteSummary*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RGDRouteSummary*) parseFromInputStream:(NSInputStream*) input;
-+ (RGDRouteSummary*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-+ (RGDRouteSummary*) parseFromCodedInputStream:(PBCodedInputStream*) input;
-+ (RGDRouteSummary*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-@end
-
-@interface RGDRouteSummaryBuilder : PBGeneratedMessageBuilder {
-@private
- RGDRouteSummary* resultRouteSummary;
-}
-
-- (RGDRouteSummary*) defaultInstance;
-
-- (RGDRouteSummaryBuilder*) clear;
-- (RGDRouteSummaryBuilder*) clone;
-
-- (RGDRouteSummary*) build;
-- (RGDRouteSummary*) buildPartial;
-
-- (RGDRouteSummaryBuilder*) mergeFrom:(RGDRouteSummary*) other;
-- (RGDRouteSummaryBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input;
-- (RGDRouteSummaryBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
-
-- (BOOL) hasPointCount;
-- (SInt32) pointCount;
-- (RGDRouteSummaryBuilder*) setPointCount:(SInt32) value;
-- (RGDRouteSummaryBuilder*) clearPointCount;
-
-- (BOOL) hasFeatureCount;
-- (SInt32) featureCount;
-- (RGDRouteSummaryBuilder*) setFeatureCount:(SInt32) value;
-- (RGDRouteSummaryBuilder*) clearFeatureCount;
-
-- (BOOL) hasDistance;
-- (SInt32) distance;
-- (RGDRouteSummaryBuilder*) setDistance:(SInt32) value;
-- (RGDRouteSummaryBuilder*) clearDistance;
-
-- (BOOL) hasElapsedTime;
-- (SInt32) elapsedTime;
-- (RGDRouteSummaryBuilder*) setElapsedTime:(SInt32) value;
-- (RGDRouteSummaryBuilder*) clearElapsedTime;
-@end
-
-
-// @@protoc_insertion_point(global_scope)
diff --git a/src/objective-c/examples/Sample/RouteGuideClient/Route_guide.pb.m b/src/objective-c/examples/Sample/RouteGuideClient/Route_guide.pb.m
deleted file mode 100644
index 63cdd00206..0000000000
--- a/src/objective-c/examples/Sample/RouteGuideClient/Route_guide.pb.m
+++ /dev/null
@@ -1,1435 +0,0 @@
-// Generated by the protocol buffer compiler. DO NOT EDIT!
-
-#import "Route_guide.pb.h"
-// @@protoc_insertion_point(imports)
-
-@implementation RGDRouteGuideRoot
-static PBExtensionRegistry* extensionRegistry = nil;
-+ (PBExtensionRegistry*) extensionRegistry {
- return extensionRegistry;
-}
-
-+ (void) initialize {
- if (self == [RGDRouteGuideRoot class]) {
- PBMutableExtensionRegistry* registry = [PBMutableExtensionRegistry registry];
- [self registerAllExtensions:registry];
- [ObjectivecDescriptorRoot registerAllExtensions:registry];
- extensionRegistry = registry;
- }
-}
-+ (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry {
-}
-@end
-
-@interface RGDPoint ()
-@property SInt32 latitude;
-@property SInt32 longitude;
-@end
-
-@implementation RGDPoint
-
-- (BOOL) hasLatitude {
- return !!hasLatitude_;
-}
-- (void) setHasLatitude:(BOOL) _value_ {
- hasLatitude_ = !!_value_;
-}
-@synthesize latitude;
-- (BOOL) hasLongitude {
- return !!hasLongitude_;
-}
-- (void) setHasLongitude:(BOOL) _value_ {
- hasLongitude_ = !!_value_;
-}
-@synthesize longitude;
-- (instancetype) init {
- if ((self = [super init])) {
- self.latitude = 0;
- self.longitude = 0;
- }
- return self;
-}
-static RGDPoint* defaultRGDPointInstance = nil;
-+ (void) initialize {
- if (self == [RGDPoint class]) {
- defaultRGDPointInstance = [[RGDPoint alloc] init];
- }
-}
-+ (instancetype) defaultInstance {
- return defaultRGDPointInstance;
-}
-- (instancetype) defaultInstance {
- return defaultRGDPointInstance;
-}
-- (BOOL) isInitialized {
- return YES;
-}
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
- if (self.hasLatitude) {
- [output writeInt32:1 value:self.latitude];
- }
- if (self.hasLongitude) {
- [output writeInt32:2 value:self.longitude];
- }
- [self.unknownFields writeToCodedOutputStream:output];
-}
-- (SInt32) serializedSize {
- __block SInt32 size_ = memoizedSerializedSize;
- if (size_ != -1) {
- return size_;
- }
-
- size_ = 0;
- if (self.hasLatitude) {
- size_ += computeInt32Size(1, self.latitude);
- }
- if (self.hasLongitude) {
- size_ += computeInt32Size(2, self.longitude);
- }
- size_ += self.unknownFields.serializedSize;
- memoizedSerializedSize = size_;
- return size_;
-}
-+ (RGDPoint*) parseFromData:(NSData*) data {
- return (RGDPoint*)[[[RGDPoint builder] mergeFromData:data] build];
-}
-+ (RGDPoint*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RGDPoint*)[[[RGDPoint builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
-}
-+ (RGDPoint*) parseFromInputStream:(NSInputStream*) input {
- return (RGDPoint*)[[[RGDPoint builder] mergeFromInputStream:input] build];
-}
-+ (RGDPoint*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RGDPoint*)[[[RGDPoint builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RGDPoint*) parseFromCodedInputStream:(PBCodedInputStream*) input {
- return (RGDPoint*)[[[RGDPoint builder] mergeFromCodedInputStream:input] build];
-}
-+ (RGDPoint*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RGDPoint*)[[[RGDPoint builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RGDPointBuilder*) builder {
- return [[RGDPointBuilder alloc] init];
-}
-+ (RGDPointBuilder*) builderWithPrototype:(RGDPoint*) prototype {
- return [[RGDPoint builder] mergeFrom:prototype];
-}
-- (RGDPointBuilder*) builder {
- return [RGDPoint builder];
-}
-- (RGDPointBuilder*) toBuilder {
- return [RGDPoint builderWithPrototype:self];
-}
-- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
- if (self.hasLatitude) {
- [output appendFormat:@"%@%@: %@\n", indent, @"latitude", [NSNumber numberWithInteger:self.latitude]];
- }
- if (self.hasLongitude) {
- [output appendFormat:@"%@%@: %@\n", indent, @"longitude", [NSNumber numberWithInteger:self.longitude]];
- }
- [self.unknownFields writeDescriptionTo:output withIndent:indent];
-}
-- (BOOL) isEqual:(id)other {
- if (other == self) {
- return YES;
- }
- if (![other isKindOfClass:[RGDPoint class]]) {
- return NO;
- }
- RGDPoint *otherMessage = other;
- return
- self.hasLatitude == otherMessage.hasLatitude &&
- (!self.hasLatitude || self.latitude == otherMessage.latitude) &&
- self.hasLongitude == otherMessage.hasLongitude &&
- (!self.hasLongitude || self.longitude == otherMessage.longitude) &&
- (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
-}
-- (NSUInteger) hash {
- __block NSUInteger hashCode = 7;
- if (self.hasLatitude) {
- hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.latitude] hash];
- }
- if (self.hasLongitude) {
- hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.longitude] hash];
- }
- hashCode = hashCode * 31 + [self.unknownFields hash];
- return hashCode;
-}
-@end
-
-@interface RGDPointBuilder()
-@property (strong) RGDPoint* resultPoint;
-@end
-
-@implementation RGDPointBuilder
-@synthesize resultPoint;
-- (instancetype) init {
- if ((self = [super init])) {
- self.resultPoint = [[RGDPoint alloc] init];
- }
- return self;
-}
-- (PBGeneratedMessage*) internalGetResult {
- return resultPoint;
-}
-- (RGDPointBuilder*) clear {
- self.resultPoint = [[RGDPoint alloc] init];
- return self;
-}
-- (RGDPointBuilder*) clone {
- return [RGDPoint builderWithPrototype:resultPoint];
-}
-- (RGDPoint*) defaultInstance {
- return [RGDPoint defaultInstance];
-}
-- (RGDPoint*) build {
- [self checkInitialized];
- return [self buildPartial];
-}
-- (RGDPoint*) buildPartial {
- RGDPoint* returnMe = resultPoint;
- self.resultPoint = nil;
- return returnMe;
-}
-- (RGDPointBuilder*) mergeFrom:(RGDPoint*) other {
- if (other == [RGDPoint defaultInstance]) {
- return self;
- }
- if (other.hasLatitude) {
- [self setLatitude:other.latitude];
- }
- if (other.hasLongitude) {
- [self setLongitude:other.longitude];
- }
- [self mergeUnknownFields:other.unknownFields];
- return self;
-}
-- (RGDPointBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
- return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
-}
-- (RGDPointBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
- while (YES) {
- SInt32 tag = [input readTag];
- switch (tag) {
- case 0:
- [self setUnknownFields:[unknownFields build]];
- return self;
- default: {
- if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
- [self setUnknownFields:[unknownFields build]];
- return self;
- }
- break;
- }
- case 8: {
- [self setLatitude:[input readInt32]];
- break;
- }
- case 16: {
- [self setLongitude:[input readInt32]];
- break;
- }
- }
- }
-}
-- (BOOL) hasLatitude {
- return resultPoint.hasLatitude;
-}
-- (SInt32) latitude {
- return resultPoint.latitude;
-}
-- (RGDPointBuilder*) setLatitude:(SInt32) value {
- resultPoint.hasLatitude = YES;
- resultPoint.latitude = value;
- return self;
-}
-- (RGDPointBuilder*) clearLatitude {
- resultPoint.hasLatitude = NO;
- resultPoint.latitude = 0;
- return self;
-}
-- (BOOL) hasLongitude {
- return resultPoint.hasLongitude;
-}
-- (SInt32) longitude {
- return resultPoint.longitude;
-}
-- (RGDPointBuilder*) setLongitude:(SInt32) value {
- resultPoint.hasLongitude = YES;
- resultPoint.longitude = value;
- return self;
-}
-- (RGDPointBuilder*) clearLongitude {
- resultPoint.hasLongitude = NO;
- resultPoint.longitude = 0;
- return self;
-}
-@end
-
-@interface RGDRectangle ()
-@property (strong) RGDPoint* lo;
-@property (strong) RGDPoint* hi;
-@end
-
-@implementation RGDRectangle
-
-- (BOOL) hasLo {
- return !!hasLo_;
-}
-- (void) setHasLo:(BOOL) _value_ {
- hasLo_ = !!_value_;
-}
-@synthesize lo;
-- (BOOL) hasHi {
- return !!hasHi_;
-}
-- (void) setHasHi:(BOOL) _value_ {
- hasHi_ = !!_value_;
-}
-@synthesize hi;
-- (instancetype) init {
- if ((self = [super init])) {
- self.lo = [RGDPoint defaultInstance];
- self.hi = [RGDPoint defaultInstance];
- }
- return self;
-}
-static RGDRectangle* defaultRGDRectangleInstance = nil;
-+ (void) initialize {
- if (self == [RGDRectangle class]) {
- defaultRGDRectangleInstance = [[RGDRectangle alloc] init];
- }
-}
-+ (instancetype) defaultInstance {
- return defaultRGDRectangleInstance;
-}
-- (instancetype) defaultInstance {
- return defaultRGDRectangleInstance;
-}
-- (BOOL) isInitialized {
- return YES;
-}
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
- if (self.hasLo) {
- [output writeMessage:1 value:self.lo];
- }
- if (self.hasHi) {
- [output writeMessage:2 value:self.hi];
- }
- [self.unknownFields writeToCodedOutputStream:output];
-}
-- (SInt32) serializedSize {
- __block SInt32 size_ = memoizedSerializedSize;
- if (size_ != -1) {
- return size_;
- }
-
- size_ = 0;
- if (self.hasLo) {
- size_ += computeMessageSize(1, self.lo);
- }
- if (self.hasHi) {
- size_ += computeMessageSize(2, self.hi);
- }
- size_ += self.unknownFields.serializedSize;
- memoizedSerializedSize = size_;
- return size_;
-}
-+ (RGDRectangle*) parseFromData:(NSData*) data {
- return (RGDRectangle*)[[[RGDRectangle builder] mergeFromData:data] build];
-}
-+ (RGDRectangle*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RGDRectangle*)[[[RGDRectangle builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
-}
-+ (RGDRectangle*) parseFromInputStream:(NSInputStream*) input {
- return (RGDRectangle*)[[[RGDRectangle builder] mergeFromInputStream:input] build];
-}
-+ (RGDRectangle*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RGDRectangle*)[[[RGDRectangle builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RGDRectangle*) parseFromCodedInputStream:(PBCodedInputStream*) input {
- return (RGDRectangle*)[[[RGDRectangle builder] mergeFromCodedInputStream:input] build];
-}
-+ (RGDRectangle*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RGDRectangle*)[[[RGDRectangle builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RGDRectangleBuilder*) builder {
- return [[RGDRectangleBuilder alloc] init];
-}
-+ (RGDRectangleBuilder*) builderWithPrototype:(RGDRectangle*) prototype {
- return [[RGDRectangle builder] mergeFrom:prototype];
-}
-- (RGDRectangleBuilder*) builder {
- return [RGDRectangle builder];
-}
-- (RGDRectangleBuilder*) toBuilder {
- return [RGDRectangle builderWithPrototype:self];
-}
-- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
- if (self.hasLo) {
- [output appendFormat:@"%@%@ {\n", indent, @"lo"];
- [self.lo writeDescriptionTo:output
- withIndent:[NSString stringWithFormat:@"%@ ", indent]];
- [output appendFormat:@"%@}\n", indent];
- }
- if (self.hasHi) {
- [output appendFormat:@"%@%@ {\n", indent, @"hi"];
- [self.hi writeDescriptionTo:output
- withIndent:[NSString stringWithFormat:@"%@ ", indent]];
- [output appendFormat:@"%@}\n", indent];
- }
- [self.unknownFields writeDescriptionTo:output withIndent:indent];
-}
-- (BOOL) isEqual:(id)other {
- if (other == self) {
- return YES;
- }
- if (![other isKindOfClass:[RGDRectangle class]]) {
- return NO;
- }
- RGDRectangle *otherMessage = other;
- return
- self.hasLo == otherMessage.hasLo &&
- (!self.hasLo || [self.lo isEqual:otherMessage.lo]) &&
- self.hasHi == otherMessage.hasHi &&
- (!self.hasHi || [self.hi isEqual:otherMessage.hi]) &&
- (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
-}
-- (NSUInteger) hash {
- __block NSUInteger hashCode = 7;
- if (self.hasLo) {
- hashCode = hashCode * 31 + [self.lo hash];
- }
- if (self.hasHi) {
- hashCode = hashCode * 31 + [self.hi hash];
- }
- hashCode = hashCode * 31 + [self.unknownFields hash];
- return hashCode;
-}
-@end
-
-@interface RGDRectangleBuilder()
-@property (strong) RGDRectangle* resultRectangle;
-@end
-
-@implementation RGDRectangleBuilder
-@synthesize resultRectangle;
-- (instancetype) init {
- if ((self = [super init])) {
- self.resultRectangle = [[RGDRectangle alloc] init];
- }
- return self;
-}
-- (PBGeneratedMessage*) internalGetResult {
- return resultRectangle;
-}
-- (RGDRectangleBuilder*) clear {
- self.resultRectangle = [[RGDRectangle alloc] init];
- return self;
-}
-- (RGDRectangleBuilder*) clone {
- return [RGDRectangle builderWithPrototype:resultRectangle];
-}
-- (RGDRectangle*) defaultInstance {
- return [RGDRectangle defaultInstance];
-}
-- (RGDRectangle*) build {
- [self checkInitialized];
- return [self buildPartial];
-}
-- (RGDRectangle*) buildPartial {
- RGDRectangle* returnMe = resultRectangle;
- self.resultRectangle = nil;
- return returnMe;
-}
-- (RGDRectangleBuilder*) mergeFrom:(RGDRectangle*) other {
- if (other == [RGDRectangle defaultInstance]) {
- return self;
- }
- if (other.hasLo) {
- [self mergeLo:other.lo];
- }
- if (other.hasHi) {
- [self mergeHi:other.hi];
- }
- [self mergeUnknownFields:other.unknownFields];
- return self;
-}
-- (RGDRectangleBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
- return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
-}
-- (RGDRectangleBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
- while (YES) {
- SInt32 tag = [input readTag];
- switch (tag) {
- case 0:
- [self setUnknownFields:[unknownFields build]];
- return self;
- default: {
- if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
- [self setUnknownFields:[unknownFields build]];
- return self;
- }
- break;
- }
- case 10: {
- RGDPointBuilder* subBuilder = [RGDPoint builder];
- if (self.hasLo) {
- [subBuilder mergeFrom:self.lo];
- }
- [input readMessage:subBuilder extensionRegistry:extensionRegistry];
- [self setLo:[subBuilder buildPartial]];
- break;
- }
- case 18: {
- RGDPointBuilder* subBuilder = [RGDPoint builder];
- if (self.hasHi) {
- [subBuilder mergeFrom:self.hi];
- }
- [input readMessage:subBuilder extensionRegistry:extensionRegistry];
- [self setHi:[subBuilder buildPartial]];
- break;
- }
- }
- }
-}
-- (BOOL) hasLo {
- return resultRectangle.hasLo;
-}
-- (RGDPoint*) lo {
- return resultRectangle.lo;
-}
-- (RGDRectangleBuilder*) setLo:(RGDPoint*) value {
- resultRectangle.hasLo = YES;
- resultRectangle.lo = value;
- return self;
-}
-- (RGDRectangleBuilder*) setLoBuilder:(RGDPointBuilder*) builderForValue {
- return [self setLo:[builderForValue build]];
-}
-- (RGDRectangleBuilder*) mergeLo:(RGDPoint*) value {
- if (resultRectangle.hasLo &&
- resultRectangle.lo != [RGDPoint defaultInstance]) {
- resultRectangle.lo =
- [[[RGDPoint builderWithPrototype:resultRectangle.lo] mergeFrom:value] buildPartial];
- } else {
- resultRectangle.lo = value;
- }
- resultRectangle.hasLo = YES;
- return self;
-}
-- (RGDRectangleBuilder*) clearLo {
- resultRectangle.hasLo = NO;
- resultRectangle.lo = [RGDPoint defaultInstance];
- return self;
-}
-- (BOOL) hasHi {
- return resultRectangle.hasHi;
-}
-- (RGDPoint*) hi {
- return resultRectangle.hi;
-}
-- (RGDRectangleBuilder*) setHi:(RGDPoint*) value {
- resultRectangle.hasHi = YES;
- resultRectangle.hi = value;
- return self;
-}
-- (RGDRectangleBuilder*) setHiBuilder:(RGDPointBuilder*) builderForValue {
- return [self setHi:[builderForValue build]];
-}
-- (RGDRectangleBuilder*) mergeHi:(RGDPoint*) value {
- if (resultRectangle.hasHi &&
- resultRectangle.hi != [RGDPoint defaultInstance]) {
- resultRectangle.hi =
- [[[RGDPoint builderWithPrototype:resultRectangle.hi] mergeFrom:value] buildPartial];
- } else {
- resultRectangle.hi = value;
- }
- resultRectangle.hasHi = YES;
- return self;
-}
-- (RGDRectangleBuilder*) clearHi {
- resultRectangle.hasHi = NO;
- resultRectangle.hi = [RGDPoint defaultInstance];
- return self;
-}
-@end
-
-@interface RGDFeature ()
-@property (strong) NSString* name;
-@property (strong) RGDPoint* location;
-@end
-
-@implementation RGDFeature
-
-- (BOOL) hasName {
- return !!hasName_;
-}
-- (void) setHasName:(BOOL) _value_ {
- hasName_ = !!_value_;
-}
-@synthesize name;
-- (BOOL) hasLocation {
- return !!hasLocation_;
-}
-- (void) setHasLocation:(BOOL) _value_ {
- hasLocation_ = !!_value_;
-}
-@synthesize location;
-- (instancetype) init {
- if ((self = [super init])) {
- self.name = @"";
- self.location = [RGDPoint defaultInstance];
- }
- return self;
-}
-static RGDFeature* defaultRGDFeatureInstance = nil;
-+ (void) initialize {
- if (self == [RGDFeature class]) {
- defaultRGDFeatureInstance = [[RGDFeature alloc] init];
- }
-}
-+ (instancetype) defaultInstance {
- return defaultRGDFeatureInstance;
-}
-- (instancetype) defaultInstance {
- return defaultRGDFeatureInstance;
-}
-- (BOOL) isInitialized {
- return YES;
-}
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
- if (self.hasName) {
- [output writeString:1 value:self.name];
- }
- if (self.hasLocation) {
- [output writeMessage:2 value:self.location];
- }
- [self.unknownFields writeToCodedOutputStream:output];
-}
-- (SInt32) serializedSize {
- __block SInt32 size_ = memoizedSerializedSize;
- if (size_ != -1) {
- return size_;
- }
-
- size_ = 0;
- if (self.hasName) {
- size_ += computeStringSize(1, self.name);
- }
- if (self.hasLocation) {
- size_ += computeMessageSize(2, self.location);
- }
- size_ += self.unknownFields.serializedSize;
- memoizedSerializedSize = size_;
- return size_;
-}
-+ (RGDFeature*) parseFromData:(NSData*) data {
- return (RGDFeature*)[[[RGDFeature builder] mergeFromData:data] build];
-}
-+ (RGDFeature*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RGDFeature*)[[[RGDFeature builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
-}
-+ (RGDFeature*) parseFromInputStream:(NSInputStream*) input {
- return (RGDFeature*)[[[RGDFeature builder] mergeFromInputStream:input] build];
-}
-+ (RGDFeature*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RGDFeature*)[[[RGDFeature builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RGDFeature*) parseFromCodedInputStream:(PBCodedInputStream*) input {
- return (RGDFeature*)[[[RGDFeature builder] mergeFromCodedInputStream:input] build];
-}
-+ (RGDFeature*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RGDFeature*)[[[RGDFeature builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RGDFeatureBuilder*) builder {
- return [[RGDFeatureBuilder alloc] init];
-}
-+ (RGDFeatureBuilder*) builderWithPrototype:(RGDFeature*) prototype {
- return [[RGDFeature builder] mergeFrom:prototype];
-}
-- (RGDFeatureBuilder*) builder {
- return [RGDFeature builder];
-}
-- (RGDFeatureBuilder*) toBuilder {
- return [RGDFeature builderWithPrototype:self];
-}
-- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
- if (self.hasName) {
- [output appendFormat:@"%@%@: %@\n", indent, @"name", self.name];
- }
- if (self.hasLocation) {
- [output appendFormat:@"%@%@ {\n", indent, @"location"];
- [self.location writeDescriptionTo:output
- withIndent:[NSString stringWithFormat:@"%@ ", indent]];
- [output appendFormat:@"%@}\n", indent];
- }
- [self.unknownFields writeDescriptionTo:output withIndent:indent];
-}
-- (BOOL) isEqual:(id)other {
- if (other == self) {
- return YES;
- }
- if (![other isKindOfClass:[RGDFeature class]]) {
- return NO;
- }
- RGDFeature *otherMessage = other;
- return
- self.hasName == otherMessage.hasName &&
- (!self.hasName || [self.name isEqual:otherMessage.name]) &&
- self.hasLocation == otherMessage.hasLocation &&
- (!self.hasLocation || [self.location isEqual:otherMessage.location]) &&
- (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
-}
-- (NSUInteger) hash {
- __block NSUInteger hashCode = 7;
- if (self.hasName) {
- hashCode = hashCode * 31 + [self.name hash];
- }
- if (self.hasLocation) {
- hashCode = hashCode * 31 + [self.location hash];
- }
- hashCode = hashCode * 31 + [self.unknownFields hash];
- return hashCode;
-}
-@end
-
-@interface RGDFeatureBuilder()
-@property (strong) RGDFeature* resultFeature;
-@end
-
-@implementation RGDFeatureBuilder
-@synthesize resultFeature;
-- (instancetype) init {
- if ((self = [super init])) {
- self.resultFeature = [[RGDFeature alloc] init];
- }
- return self;
-}
-- (PBGeneratedMessage*) internalGetResult {
- return resultFeature;
-}
-- (RGDFeatureBuilder*) clear {
- self.resultFeature = [[RGDFeature alloc] init];
- return self;
-}
-- (RGDFeatureBuilder*) clone {
- return [RGDFeature builderWithPrototype:resultFeature];
-}
-- (RGDFeature*) defaultInstance {
- return [RGDFeature defaultInstance];
-}
-- (RGDFeature*) build {
- [self checkInitialized];
- return [self buildPartial];
-}
-- (RGDFeature*) buildPartial {
- RGDFeature* returnMe = resultFeature;
- self.resultFeature = nil;
- return returnMe;
-}
-- (RGDFeatureBuilder*) mergeFrom:(RGDFeature*) other {
- if (other == [RGDFeature defaultInstance]) {
- return self;
- }
- if (other.hasName) {
- [self setName:other.name];
- }
- if (other.hasLocation) {
- [self mergeLocation:other.location];
- }
- [self mergeUnknownFields:other.unknownFields];
- return self;
-}
-- (RGDFeatureBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
- return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
-}
-- (RGDFeatureBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
- while (YES) {
- SInt32 tag = [input readTag];
- switch (tag) {
- case 0:
- [self setUnknownFields:[unknownFields build]];
- return self;
- default: {
- if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
- [self setUnknownFields:[unknownFields build]];
- return self;
- }
- break;
- }
- case 10: {
- [self setName:[input readString]];
- break;
- }
- case 18: {
- RGDPointBuilder* subBuilder = [RGDPoint builder];
- if (self.hasLocation) {
- [subBuilder mergeFrom:self.location];
- }
- [input readMessage:subBuilder extensionRegistry:extensionRegistry];
- [self setLocation:[subBuilder buildPartial]];
- break;
- }
- }
- }
-}
-- (BOOL) hasName {
- return resultFeature.hasName;
-}
-- (NSString*) name {
- return resultFeature.name;
-}
-- (RGDFeatureBuilder*) setName:(NSString*) value {
- resultFeature.hasName = YES;
- resultFeature.name = value;
- return self;
-}
-- (RGDFeatureBuilder*) clearName {
- resultFeature.hasName = NO;
- resultFeature.name = @"";
- return self;
-}
-- (BOOL) hasLocation {
- return resultFeature.hasLocation;
-}
-- (RGDPoint*) location {
- return resultFeature.location;
-}
-- (RGDFeatureBuilder*) setLocation:(RGDPoint*) value {
- resultFeature.hasLocation = YES;
- resultFeature.location = value;
- return self;
-}
-- (RGDFeatureBuilder*) setLocationBuilder:(RGDPointBuilder*) builderForValue {
- return [self setLocation:[builderForValue build]];
-}
-- (RGDFeatureBuilder*) mergeLocation:(RGDPoint*) value {
- if (resultFeature.hasLocation &&
- resultFeature.location != [RGDPoint defaultInstance]) {
- resultFeature.location =
- [[[RGDPoint builderWithPrototype:resultFeature.location] mergeFrom:value] buildPartial];
- } else {
- resultFeature.location = value;
- }
- resultFeature.hasLocation = YES;
- return self;
-}
-- (RGDFeatureBuilder*) clearLocation {
- resultFeature.hasLocation = NO;
- resultFeature.location = [RGDPoint defaultInstance];
- return self;
-}
-@end
-
-@interface RGDRouteNote ()
-@property (strong) RGDPoint* location;
-@property (strong) NSString* message;
-@end
-
-@implementation RGDRouteNote
-
-- (BOOL) hasLocation {
- return !!hasLocation_;
-}
-- (void) setHasLocation:(BOOL) _value_ {
- hasLocation_ = !!_value_;
-}
-@synthesize location;
-- (BOOL) hasMessage {
- return !!hasMessage_;
-}
-- (void) setHasMessage:(BOOL) _value_ {
- hasMessage_ = !!_value_;
-}
-@synthesize message;
-- (instancetype) init {
- if ((self = [super init])) {
- self.location = [RGDPoint defaultInstance];
- self.message = @"";
- }
- return self;
-}
-static RGDRouteNote* defaultRGDRouteNoteInstance = nil;
-+ (void) initialize {
- if (self == [RGDRouteNote class]) {
- defaultRGDRouteNoteInstance = [[RGDRouteNote alloc] init];
- }
-}
-+ (instancetype) defaultInstance {
- return defaultRGDRouteNoteInstance;
-}
-- (instancetype) defaultInstance {
- return defaultRGDRouteNoteInstance;
-}
-- (BOOL) isInitialized {
- return YES;
-}
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
- if (self.hasLocation) {
- [output writeMessage:1 value:self.location];
- }
- if (self.hasMessage) {
- [output writeString:2 value:self.message];
- }
- [self.unknownFields writeToCodedOutputStream:output];
-}
-- (SInt32) serializedSize {
- __block SInt32 size_ = memoizedSerializedSize;
- if (size_ != -1) {
- return size_;
- }
-
- size_ = 0;
- if (self.hasLocation) {
- size_ += computeMessageSize(1, self.location);
- }
- if (self.hasMessage) {
- size_ += computeStringSize(2, self.message);
- }
- size_ += self.unknownFields.serializedSize;
- memoizedSerializedSize = size_;
- return size_;
-}
-+ (RGDRouteNote*) parseFromData:(NSData*) data {
- return (RGDRouteNote*)[[[RGDRouteNote builder] mergeFromData:data] build];
-}
-+ (RGDRouteNote*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RGDRouteNote*)[[[RGDRouteNote builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
-}
-+ (RGDRouteNote*) parseFromInputStream:(NSInputStream*) input {
- return (RGDRouteNote*)[[[RGDRouteNote builder] mergeFromInputStream:input] build];
-}
-+ (RGDRouteNote*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RGDRouteNote*)[[[RGDRouteNote builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RGDRouteNote*) parseFromCodedInputStream:(PBCodedInputStream*) input {
- return (RGDRouteNote*)[[[RGDRouteNote builder] mergeFromCodedInputStream:input] build];
-}
-+ (RGDRouteNote*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RGDRouteNote*)[[[RGDRouteNote builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RGDRouteNoteBuilder*) builder {
- return [[RGDRouteNoteBuilder alloc] init];
-}
-+ (RGDRouteNoteBuilder*) builderWithPrototype:(RGDRouteNote*) prototype {
- return [[RGDRouteNote builder] mergeFrom:prototype];
-}
-- (RGDRouteNoteBuilder*) builder {
- return [RGDRouteNote builder];
-}
-- (RGDRouteNoteBuilder*) toBuilder {
- return [RGDRouteNote builderWithPrototype:self];
-}
-- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
- if (self.hasLocation) {
- [output appendFormat:@"%@%@ {\n", indent, @"location"];
- [self.location writeDescriptionTo:output
- withIndent:[NSString stringWithFormat:@"%@ ", indent]];
- [output appendFormat:@"%@}\n", indent];
- }
- if (self.hasMessage) {
- [output appendFormat:@"%@%@: %@\n", indent, @"message", self.message];
- }
- [self.unknownFields writeDescriptionTo:output withIndent:indent];
-}
-- (BOOL) isEqual:(id)other {
- if (other == self) {
- return YES;
- }
- if (![other isKindOfClass:[RGDRouteNote class]]) {
- return NO;
- }
- RGDRouteNote *otherMessage = other;
- return
- self.hasLocation == otherMessage.hasLocation &&
- (!self.hasLocation || [self.location isEqual:otherMessage.location]) &&
- self.hasMessage == otherMessage.hasMessage &&
- (!self.hasMessage || [self.message isEqual:otherMessage.message]) &&
- (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
-}
-- (NSUInteger) hash {
- __block NSUInteger hashCode = 7;
- if (self.hasLocation) {
- hashCode = hashCode * 31 + [self.location hash];
- }
- if (self.hasMessage) {
- hashCode = hashCode * 31 + [self.message hash];
- }
- hashCode = hashCode * 31 + [self.unknownFields hash];
- return hashCode;
-}
-@end
-
-@interface RGDRouteNoteBuilder()
-@property (strong) RGDRouteNote* resultRouteNote;
-@end
-
-@implementation RGDRouteNoteBuilder
-@synthesize resultRouteNote;
-- (instancetype) init {
- if ((self = [super init])) {
- self.resultRouteNote = [[RGDRouteNote alloc] init];
- }
- return self;
-}
-- (PBGeneratedMessage*) internalGetResult {
- return resultRouteNote;
-}
-- (RGDRouteNoteBuilder*) clear {
- self.resultRouteNote = [[RGDRouteNote alloc] init];
- return self;
-}
-- (RGDRouteNoteBuilder*) clone {
- return [RGDRouteNote builderWithPrototype:resultRouteNote];
-}
-- (RGDRouteNote*) defaultInstance {
- return [RGDRouteNote defaultInstance];
-}
-- (RGDRouteNote*) build {
- [self checkInitialized];
- return [self buildPartial];
-}
-- (RGDRouteNote*) buildPartial {
- RGDRouteNote* returnMe = resultRouteNote;
- self.resultRouteNote = nil;
- return returnMe;
-}
-- (RGDRouteNoteBuilder*) mergeFrom:(RGDRouteNote*) other {
- if (other == [RGDRouteNote defaultInstance]) {
- return self;
- }
- if (other.hasLocation) {
- [self mergeLocation:other.location];
- }
- if (other.hasMessage) {
- [self setMessage:other.message];
- }
- [self mergeUnknownFields:other.unknownFields];
- return self;
-}
-- (RGDRouteNoteBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
- return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
-}
-- (RGDRouteNoteBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
- while (YES) {
- SInt32 tag = [input readTag];
- switch (tag) {
- case 0:
- [self setUnknownFields:[unknownFields build]];
- return self;
- default: {
- if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
- [self setUnknownFields:[unknownFields build]];
- return self;
- }
- break;
- }
- case 10: {
- RGDPointBuilder* subBuilder = [RGDPoint builder];
- if (self.hasLocation) {
- [subBuilder mergeFrom:self.location];
- }
- [input readMessage:subBuilder extensionRegistry:extensionRegistry];
- [self setLocation:[subBuilder buildPartial]];
- break;
- }
- case 18: {
- [self setMessage:[input readString]];
- break;
- }
- }
- }
-}
-- (BOOL) hasLocation {
- return resultRouteNote.hasLocation;
-}
-- (RGDPoint*) location {
- return resultRouteNote.location;
-}
-- (RGDRouteNoteBuilder*) setLocation:(RGDPoint*) value {
- resultRouteNote.hasLocation = YES;
- resultRouteNote.location = value;
- return self;
-}
-- (RGDRouteNoteBuilder*) setLocationBuilder:(RGDPointBuilder*) builderForValue {
- return [self setLocation:[builderForValue build]];
-}
-- (RGDRouteNoteBuilder*) mergeLocation:(RGDPoint*) value {
- if (resultRouteNote.hasLocation &&
- resultRouteNote.location != [RGDPoint defaultInstance]) {
- resultRouteNote.location =
- [[[RGDPoint builderWithPrototype:resultRouteNote.location] mergeFrom:value] buildPartial];
- } else {
- resultRouteNote.location = value;
- }
- resultRouteNote.hasLocation = YES;
- return self;
-}
-- (RGDRouteNoteBuilder*) clearLocation {
- resultRouteNote.hasLocation = NO;
- resultRouteNote.location = [RGDPoint defaultInstance];
- return self;
-}
-- (BOOL) hasMessage {
- return resultRouteNote.hasMessage;
-}
-- (NSString*) message {
- return resultRouteNote.message;
-}
-- (RGDRouteNoteBuilder*) setMessage:(NSString*) value {
- resultRouteNote.hasMessage = YES;
- resultRouteNote.message = value;
- return self;
-}
-- (RGDRouteNoteBuilder*) clearMessage {
- resultRouteNote.hasMessage = NO;
- resultRouteNote.message = @"";
- return self;
-}
-@end
-
-@interface RGDRouteSummary ()
-@property SInt32 pointCount;
-@property SInt32 featureCount;
-@property SInt32 distance;
-@property SInt32 elapsedTime;
-@end
-
-@implementation RGDRouteSummary
-
-- (BOOL) hasPointCount {
- return !!hasPointCount_;
-}
-- (void) setHasPointCount:(BOOL) _value_ {
- hasPointCount_ = !!_value_;
-}
-@synthesize pointCount;
-- (BOOL) hasFeatureCount {
- return !!hasFeatureCount_;
-}
-- (void) setHasFeatureCount:(BOOL) _value_ {
- hasFeatureCount_ = !!_value_;
-}
-@synthesize featureCount;
-- (BOOL) hasDistance {
- return !!hasDistance_;
-}
-- (void) setHasDistance:(BOOL) _value_ {
- hasDistance_ = !!_value_;
-}
-@synthesize distance;
-- (BOOL) hasElapsedTime {
- return !!hasElapsedTime_;
-}
-- (void) setHasElapsedTime:(BOOL) _value_ {
- hasElapsedTime_ = !!_value_;
-}
-@synthesize elapsedTime;
-- (instancetype) init {
- if ((self = [super init])) {
- self.pointCount = 0;
- self.featureCount = 0;
- self.distance = 0;
- self.elapsedTime = 0;
- }
- return self;
-}
-static RGDRouteSummary* defaultRGDRouteSummaryInstance = nil;
-+ (void) initialize {
- if (self == [RGDRouteSummary class]) {
- defaultRGDRouteSummaryInstance = [[RGDRouteSummary alloc] init];
- }
-}
-+ (instancetype) defaultInstance {
- return defaultRGDRouteSummaryInstance;
-}
-- (instancetype) defaultInstance {
- return defaultRGDRouteSummaryInstance;
-}
-- (BOOL) isInitialized {
- return YES;
-}
-- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
- if (self.hasPointCount) {
- [output writeInt32:1 value:self.pointCount];
- }
- if (self.hasFeatureCount) {
- [output writeInt32:2 value:self.featureCount];
- }
- if (self.hasDistance) {
- [output writeInt32:3 value:self.distance];
- }
- if (self.hasElapsedTime) {
- [output writeInt32:4 value:self.elapsedTime];
- }
- [self.unknownFields writeToCodedOutputStream:output];
-}
-- (SInt32) serializedSize {
- __block SInt32 size_ = memoizedSerializedSize;
- if (size_ != -1) {
- return size_;
- }
-
- size_ = 0;
- if (self.hasPointCount) {
- size_ += computeInt32Size(1, self.pointCount);
- }
- if (self.hasFeatureCount) {
- size_ += computeInt32Size(2, self.featureCount);
- }
- if (self.hasDistance) {
- size_ += computeInt32Size(3, self.distance);
- }
- if (self.hasElapsedTime) {
- size_ += computeInt32Size(4, self.elapsedTime);
- }
- size_ += self.unknownFields.serializedSize;
- memoizedSerializedSize = size_;
- return size_;
-}
-+ (RGDRouteSummary*) parseFromData:(NSData*) data {
- return (RGDRouteSummary*)[[[RGDRouteSummary builder] mergeFromData:data] build];
-}
-+ (RGDRouteSummary*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RGDRouteSummary*)[[[RGDRouteSummary builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
-}
-+ (RGDRouteSummary*) parseFromInputStream:(NSInputStream*) input {
- return (RGDRouteSummary*)[[[RGDRouteSummary builder] mergeFromInputStream:input] build];
-}
-+ (RGDRouteSummary*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RGDRouteSummary*)[[[RGDRouteSummary builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RGDRouteSummary*) parseFromCodedInputStream:(PBCodedInputStream*) input {
- return (RGDRouteSummary*)[[[RGDRouteSummary builder] mergeFromCodedInputStream:input] build];
-}
-+ (RGDRouteSummary*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- return (RGDRouteSummary*)[[[RGDRouteSummary builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
-}
-+ (RGDRouteSummaryBuilder*) builder {
- return [[RGDRouteSummaryBuilder alloc] init];
-}
-+ (RGDRouteSummaryBuilder*) builderWithPrototype:(RGDRouteSummary*) prototype {
- return [[RGDRouteSummary builder] mergeFrom:prototype];
-}
-- (RGDRouteSummaryBuilder*) builder {
- return [RGDRouteSummary builder];
-}
-- (RGDRouteSummaryBuilder*) toBuilder {
- return [RGDRouteSummary builderWithPrototype:self];
-}
-- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
- if (self.hasPointCount) {
- [output appendFormat:@"%@%@: %@\n", indent, @"pointCount", [NSNumber numberWithInteger:self.pointCount]];
- }
- if (self.hasFeatureCount) {
- [output appendFormat:@"%@%@: %@\n", indent, @"featureCount", [NSNumber numberWithInteger:self.featureCount]];
- }
- if (self.hasDistance) {
- [output appendFormat:@"%@%@: %@\n", indent, @"distance", [NSNumber numberWithInteger:self.distance]];
- }
- if (self.hasElapsedTime) {
- [output appendFormat:@"%@%@: %@\n", indent, @"elapsedTime", [NSNumber numberWithInteger:self.elapsedTime]];
- }
- [self.unknownFields writeDescriptionTo:output withIndent:indent];
-}
-- (BOOL) isEqual:(id)other {
- if (other == self) {
- return YES;
- }
- if (![other isKindOfClass:[RGDRouteSummary class]]) {
- return NO;
- }
- RGDRouteSummary *otherMessage = other;
- return
- self.hasPointCount == otherMessage.hasPointCount &&
- (!self.hasPointCount || self.pointCount == otherMessage.pointCount) &&
- self.hasFeatureCount == otherMessage.hasFeatureCount &&
- (!self.hasFeatureCount || self.featureCount == otherMessage.featureCount) &&
- self.hasDistance == otherMessage.hasDistance &&
- (!self.hasDistance || self.distance == otherMessage.distance) &&
- self.hasElapsedTime == otherMessage.hasElapsedTime &&
- (!self.hasElapsedTime || self.elapsedTime == otherMessage.elapsedTime) &&
- (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
-}
-- (NSUInteger) hash {
- __block NSUInteger hashCode = 7;
- if (self.hasPointCount) {
- hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.pointCount] hash];
- }
- if (self.hasFeatureCount) {
- hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.featureCount] hash];
- }
- if (self.hasDistance) {
- hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.distance] hash];
- }
- if (self.hasElapsedTime) {
- hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.elapsedTime] hash];
- }
- hashCode = hashCode * 31 + [self.unknownFields hash];
- return hashCode;
-}
-@end
-
-@interface RGDRouteSummaryBuilder()
-@property (strong) RGDRouteSummary* resultRouteSummary;
-@end
-
-@implementation RGDRouteSummaryBuilder
-@synthesize resultRouteSummary;
-- (instancetype) init {
- if ((self = [super init])) {
- self.resultRouteSummary = [[RGDRouteSummary alloc] init];
- }
- return self;
-}
-- (PBGeneratedMessage*) internalGetResult {
- return resultRouteSummary;
-}
-- (RGDRouteSummaryBuilder*) clear {
- self.resultRouteSummary = [[RGDRouteSummary alloc] init];
- return self;
-}
-- (RGDRouteSummaryBuilder*) clone {
- return [RGDRouteSummary builderWithPrototype:resultRouteSummary];
-}
-- (RGDRouteSummary*) defaultInstance {
- return [RGDRouteSummary defaultInstance];
-}
-- (RGDRouteSummary*) build {
- [self checkInitialized];
- return [self buildPartial];
-}
-- (RGDRouteSummary*) buildPartial {
- RGDRouteSummary* returnMe = resultRouteSummary;
- self.resultRouteSummary = nil;
- return returnMe;
-}
-- (RGDRouteSummaryBuilder*) mergeFrom:(RGDRouteSummary*) other {
- if (other == [RGDRouteSummary defaultInstance]) {
- return self;
- }
- if (other.hasPointCount) {
- [self setPointCount:other.pointCount];
- }
- if (other.hasFeatureCount) {
- [self setFeatureCount:other.featureCount];
- }
- if (other.hasDistance) {
- [self setDistance:other.distance];
- }
- if (other.hasElapsedTime) {
- [self setElapsedTime:other.elapsedTime];
- }
- [self mergeUnknownFields:other.unknownFields];
- return self;
-}
-- (RGDRouteSummaryBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
- return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
-}
-- (RGDRouteSummaryBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
- PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
- while (YES) {
- SInt32 tag = [input readTag];
- switch (tag) {
- case 0:
- [self setUnknownFields:[unknownFields build]];
- return self;
- default: {
- if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
- [self setUnknownFields:[unknownFields build]];
- return self;
- }
- break;
- }
- case 8: {
- [self setPointCount:[input readInt32]];
- break;
- }
- case 16: {
- [self setFeatureCount:[input readInt32]];
- break;
- }
- case 24: {
- [self setDistance:[input readInt32]];
- break;
- }
- case 32: {
- [self setElapsedTime:[input readInt32]];
- break;
- }
- }
- }
-}
-- (BOOL) hasPointCount {
- return resultRouteSummary.hasPointCount;
-}
-- (SInt32) pointCount {
- return resultRouteSummary.pointCount;
-}
-- (RGDRouteSummaryBuilder*) setPointCount:(SInt32) value {
- resultRouteSummary.hasPointCount = YES;
- resultRouteSummary.pointCount = value;
- return self;
-}
-- (RGDRouteSummaryBuilder*) clearPointCount {
- resultRouteSummary.hasPointCount = NO;
- resultRouteSummary.pointCount = 0;
- return self;
-}
-- (BOOL) hasFeatureCount {
- return resultRouteSummary.hasFeatureCount;
-}
-- (SInt32) featureCount {
- return resultRouteSummary.featureCount;
-}
-- (RGDRouteSummaryBuilder*) setFeatureCount:(SInt32) value {
- resultRouteSummary.hasFeatureCount = YES;
- resultRouteSummary.featureCount = value;
- return self;
-}
-- (RGDRouteSummaryBuilder*) clearFeatureCount {
- resultRouteSummary.hasFeatureCount = NO;
- resultRouteSummary.featureCount = 0;
- return self;
-}
-- (BOOL) hasDistance {
- return resultRouteSummary.hasDistance;
-}
-- (SInt32) distance {
- return resultRouteSummary.distance;
-}
-- (RGDRouteSummaryBuilder*) setDistance:(SInt32) value {
- resultRouteSummary.hasDistance = YES;
- resultRouteSummary.distance = value;
- return self;
-}
-- (RGDRouteSummaryBuilder*) clearDistance {
- resultRouteSummary.hasDistance = NO;
- resultRouteSummary.distance = 0;
- return self;
-}
-- (BOOL) hasElapsedTime {
- return resultRouteSummary.hasElapsedTime;
-}
-- (SInt32) elapsedTime {
- return resultRouteSummary.elapsedTime;
-}
-- (RGDRouteSummaryBuilder*) setElapsedTime:(SInt32) value {
- resultRouteSummary.hasElapsedTime = YES;
- resultRouteSummary.elapsedTime = value;
- return self;
-}
-- (RGDRouteSummaryBuilder*) clearElapsedTime {
- resultRouteSummary.hasElapsedTime = NO;
- resultRouteSummary.elapsedTime = 0;
- return self;
-}
-@end
-
-
-// @@protoc_insertion_point(global_scope)
diff --git a/src/objective-c/examples/Sample/RouteGuideClient/Route_guide.podspec b/src/objective-c/examples/Sample/RouteGuideClient/Route_guide.podspec
index 04d847bf8f..5b1a68aad5 100644
--- a/src/objective-c/examples/Sample/RouteGuideClient/Route_guide.podspec
+++ b/src/objective-c/examples/Sample/RouteGuideClient/Route_guide.podspec
@@ -6,12 +6,19 @@ Pod::Spec.new do |s|
s.license = 'New BSD'
s.authors = { 'Jorge Canizales' => 'jcanizales@google.com' }
- s.source_files = '*.pb.{h,m}'
- s.public_header_files = '*.pb.h'
-
- s.platform = :ios
s.ios.deployment_target = '6.0'
- s.requires_arc = true
+ s.osx.deployment_target = '10.8'
+
+ s.subspec 'Messages' do |ms|
+ ms.source_files = '*.pbobjc.{h,m}'
+ ms.requires_arc = false
+ ms.dependency 'Protobuf', '~> 3.0'
+ end
- s.dependency 'ProtocolBuffers', '~> 1.9'
+ s.subspec 'Services' do |ss|
+ ss.source_files = '*.pbrpc.{h,m}'
+ ss.requires_arc = true
+ ss.dependency 'gRPC', '~> 0.0'
+ ss.dependency 'Route_guide/Messages'
+ end
end
diff --git a/src/objective-c/examples/Sample/RouteGuideClient/route_guide.proto b/src/objective-c/examples/Sample/RouteGuideClient/route_guide.proto
index 91b0372a07..16dce26a2b 100644
--- a/src/objective-c/examples/Sample/RouteGuideClient/route_guide.proto
+++ b/src/objective-c/examples/Sample/RouteGuideClient/route_guide.proto
@@ -27,12 +27,11 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-syntax = "proto2";
+syntax = "proto3";
package grpc.example.routeguide;
-import "google/protobuf/objectivec-descriptor.proto";
-option (google.protobuf.objectivec_file_options).class_prefix = "RGD";
+option objc_class_prefix = "RGD";
// Interface exported by the server.
service RouteGuide {
@@ -47,19 +46,19 @@ service RouteGuide {
// streamed rather than returned at once (e.g. in a response message with a
// repeated field), as the rectangle may cover a large area and contain a
// huge number of features.
-// rpc ListFeatures(Rectangle) returns (stream Feature) {}
+ rpc ListFeatures(Rectangle) returns (stream Feature) {}
// A client-to-server streaming RPC.
//
// Accepts a stream of Points on a route being traversed, returning a
// RouteSummary when traversal is completed.
-// rpc RecordRoute(stream Point) returns (RouteSummary) {}
+ rpc RecordRoute(stream Point) returns (RouteSummary) {}
// A Bidirectional streaming RPC.
//
// Accepts a stream of RouteNotes sent while a route is being traversed,
// while receiving other RouteNotes (e.g. from other users).
-// rpc RouteChat(stream RouteNote) returns (stream RouteNote) {}
+ rpc RouteChat(stream RouteNote) returns (stream RouteNote) {}
}
// Points are represented as latitude-longitude pairs in the E7 representation
@@ -67,18 +66,18 @@ service RouteGuide {
// Latitudes should be in the range +/- 90 degrees and longitude should be in
// the range +/- 180 degrees (inclusive).
message Point {
- optional int32 latitude = 1;
- optional int32 longitude = 2;
+ int32 latitude = 1;
+ int32 longitude = 2;
}
// A latitude-longitude rectangle, represented as two diagonally opposite
// points "lo" and "hi".
message Rectangle {
// One corner of the rectangle.
- optional Point lo = 1;
+ Point lo = 1;
// The other corner of the rectangle.
- optional Point hi = 2;
+ Point hi = 2;
}
// A feature names something at a given point.
@@ -86,19 +85,19 @@ message Rectangle {
// If a feature could not be named, the name is empty.
message Feature {
// The name of the feature.
- optional string name = 1;
+ string name = 1;
// The point where the feature is detected.
- optional Point location = 2;
+ Point location = 2;
}
// A RouteNote is a message sent while at a given point.
message RouteNote {
// The location from which the message is sent.
- optional Point location = 1;
+ Point location = 1;
// The message to be sent.
- optional string message = 2;
+ string message = 2;
}
// A RouteSummary is received in response to a RecordRoute rpc.
@@ -108,14 +107,14 @@ message RouteNote {
// the distance between each point.
message RouteSummary {
// The number of points received.
- optional int32 point_count = 1;
+ int32 point_count = 1;
// The number of known features passed while traversing the route.
- optional int32 feature_count = 2;
+ int32 feature_count = 2;
// The distance covered in metres.
- optional int32 distance = 3;
+ int32 distance = 3;
// The duration of the traversal in seconds.
- optional int32 elapsed_time = 4;
-} \ No newline at end of file
+ int32 elapsed_time = 4;
+}
diff --git a/src/objective-c/examples/Sample/Sample/ViewController.m b/src/objective-c/examples/Sample/Sample/ViewController.m
index c7d8e0d145..1c866babec 100644
--- a/src/objective-c/examples/Sample/Sample/ViewController.m
+++ b/src/objective-c/examples/Sample/Sample/ViewController.m
@@ -37,7 +37,8 @@
#import <gRPC/GRPCMethodName.h>
#import <gRPC/GRXWriter+Immediate.h>
#import <gRPC/GRXWriteable.h>
-#import <RemoteTest/Messages.pb.h>
+#import <RemoteTest/Messages.pbobjc.h>
+#import <RemoteTest/Test.pbrpc.h>
@interface ViewController ()
@end
@@ -47,18 +48,34 @@
- (void)viewDidLoad {
[super viewDidLoad];
+ NSString * const kRemoteHost = @"grpc-test.sandbox.google.com";
+
+ RMTSimpleRequest *request = [[RMTSimpleRequest alloc] init];
+ request.responseSize = 10;
+ request.fillUsername = YES;
+ request.fillOauthScope = YES;
+
+ // Example gRPC call using a generated proto client library:
+
+ RMTTestService *service = [[RMTTestService alloc] initWithHost:kRemoteHost];
+ [service unaryCallWithRequest:request handler:^(RMTSimpleResponse *response, NSError *error) {
+ if (response) {
+ NSLog(@"Finished successfully with response:\n%@", response);
+ } else if (error) {
+ NSLog(@"Finished with error: %@", error);
+ }
+ }];
+
+
+ // Same example call using the generic gRPC client library:
+
GRPCMethodName *method = [[GRPCMethodName alloc] initWithPackage:@"grpc.testing"
interface:@"TestService"
method:@"UnaryCall"];
- RMTSimpleRequest *request = [[[[[[RMTSimpleRequestBuilder alloc] init]
- setResponseSize:100]
- setFillUsername:YES]
- setFillOauthScope:YES]
- build];
id<GRXWriter> requestsWriter = [GRXWriter writerWithValue:[request data]];
- GRPCCall *call = [[GRPCCall alloc] initWithHost:@"grpc-test.sandbox.google.com"
+ GRPCCall *call = [[GRPCCall alloc] initWithHost:kRemoteHost
method:method
requestsWriter:requestsWriter];
@@ -66,7 +83,11 @@
RMTSimpleResponse *response = [RMTSimpleResponse parseFromData:value];
NSLog(@"Received response:\n%@", response);
} completionHandler:^(NSError *errorOrNil) {
- NSLog(@"Finished with error: %@", errorOrNil);
+ if (errorOrNil) {
+ NSLog(@"Finished with error: %@", errorOrNil);
+ } else {
+ NSLog(@"Finished successfully.");
+ }
}];
[call startWithWriteable:responsesWriteable];
diff --git a/src/objective-c/examples/Sample/SampleTests/RemoteProtoTests.m b/src/objective-c/examples/Sample/SampleTests/RemoteProtoTests.m
index 72ceed0c31..7cebc0c2a7 100644
--- a/src/objective-c/examples/Sample/SampleTests/RemoteProtoTests.m
+++ b/src/objective-c/examples/Sample/SampleTests/RemoteProtoTests.m
@@ -36,10 +36,45 @@
#import <UIKit/UIKit.h>
#import <XCTest/XCTest.h>
-#import <gRPC/ProtoRPC.h>
#import <gRPC/GRXWriter+Immediate.h>
-#import <RemoteTest/Messages.pb.h>
-#import <RemoteTest/Test.pb.h>
+#import <gRPC/GRXBufferedPipe.h>
+#import <gRPC/ProtoRPC.h>
+#import <RemoteTest/Empty.pbobjc.h>
+#import <RemoteTest/Messages.pbobjc.h>
+#import <RemoteTest/Test.pbobjc.h>
+#import <RemoteTest/Test.pbrpc.h>
+
+// Convenience constructors for the generated proto messages:
+
+@interface RMTStreamingOutputCallRequest (Constructors)
++ (instancetype)messageWithPayloadSize:(NSNumber *)payloadSize
+ requestedResponseSize:(NSNumber *)responseSize;
+@end
+
+@implementation RMTStreamingOutputCallRequest (Constructors)
++ (instancetype)messageWithPayloadSize:(NSNumber *)payloadSize
+ requestedResponseSize:(NSNumber *)responseSize {
+ RMTStreamingOutputCallRequest *request = [self message];
+ RMTResponseParameters *parameters = [RMTResponseParameters message];
+ parameters.size = responseSize.integerValue;
+ [request.responseParametersArray addObject:parameters];
+ request.payload.body = [NSMutableData dataWithLength:payloadSize.unsignedIntegerValue];
+ return request;
+}
+@end
+
+@interface RMTStreamingOutputCallResponse (Constructors)
++ (instancetype)messageWithPayloadSize:(NSNumber *)payloadSize;
+@end
+
+@implementation RMTStreamingOutputCallResponse (Constructors)
++ (instancetype)messageWithPayloadSize:(NSNumber *)payloadSize {
+ RMTStreamingOutputCallResponse * response = [self message];
+ response.payload.type = RMTPayloadType_Compressable;
+ response.payload.body = [NSMutableData dataWithLength:payloadSize.unsignedIntegerValue];
+ return response;
+}
+@end
@interface RemoteProtoTests : XCTestCase
@end
@@ -57,133 +92,178 @@
- (void)testEmptyUnaryRPC {
__weak XCTestExpectation *expectation = [self expectationWithDescription:@"EmptyUnary"];
- RMTEmpty *request = [RMTEmpty defaultInstance];
+ RMTEmpty *request = [RMTEmpty message];
[_service emptyCallWithRequest:request handler:^(RMTEmpty *response, NSError *error) {
XCTAssertNil(error, @"Finished with unexpected error: %@", error);
- id expectedResponse = [RMTEmpty defaultInstance];
+ id expectedResponse = [RMTEmpty message];
XCTAssertEqualObjects(response, expectedResponse);
[expectation fulfill];
}];
- [self waitForExpectationsWithTimeout:2. handler:nil];
+ [self waitForExpectationsWithTimeout:2 handler:nil];
}
- (void)testLargeUnaryRPC {
__weak XCTestExpectation *expectation = [self expectationWithDescription:@"LargeUnary"];
- RMTSimpleRequest *request = [[[[[[RMTSimpleRequestBuilder alloc] init]
- setResponseType:RMTPayloadTypeCompressable]
- setResponseSize:314159]
- setPayloadBuilder:[[[RMTPayloadBuilder alloc] init]
- setBody:[NSMutableData dataWithLength:271828]]]
- build];
+ RMTSimpleRequest *request = [RMTSimpleRequest message];
+ request.responseType = RMTPayloadType_Compressable;
+ request.responseSize = 314159;
+ request.payload.body = [NSMutableData dataWithLength:271828];
[_service unaryCallWithRequest:request handler:^(RMTSimpleResponse *response, NSError *error) {
XCTAssertNil(error, @"Finished with unexpected error: %@", error);
- id expectedResponse = [[[[RMTSimpleResponseBuilder alloc] init]
- setPayloadBuilder:[[[[RMTPayloadBuilder alloc] init]
- setType:RMTPayloadTypeCompressable]
- setBody:[NSMutableData dataWithLength:314159]]]
- build];
+ RMTSimpleResponse *expectedResponse = [RMTSimpleResponse message];
+ expectedResponse.payload.type = RMTPayloadType_Compressable;
+ expectedResponse.payload.body = [NSMutableData dataWithLength:314159];
XCTAssertEqualObjects(response, expectedResponse);
[expectation fulfill];
}];
- [self waitForExpectationsWithTimeout:4. handler:nil];
+ [self waitForExpectationsWithTimeout:4 handler:nil];
}
- (void)testClientStreamingRPC {
__weak XCTestExpectation *expectation = [self expectationWithDescription:@"ClientStreaming"];
- id request1 = [[[[RMTStreamingInputCallRequestBuilder alloc] init]
- setPayloadBuilder:[[[RMTPayloadBuilder alloc] init]
- setBody:[NSMutableData dataWithLength:27182]]]
- build];
- id request2 = [[[[RMTStreamingInputCallRequestBuilder alloc] init]
- setPayloadBuilder:[[[RMTPayloadBuilder alloc] init]
- setBody:[NSMutableData dataWithLength:8]]]
- build];
- id request3 = [[[[RMTStreamingInputCallRequestBuilder alloc] init]
- setPayloadBuilder:[[[RMTPayloadBuilder alloc] init]
- setBody:[NSMutableData dataWithLength:1828]]]
- build];
- id request4 = [[[[RMTStreamingInputCallRequestBuilder alloc] init]
- setPayloadBuilder:[[[RMTPayloadBuilder alloc] init]
- setBody:[NSMutableData dataWithLength:45904]]]
- build];
+ RMTStreamingInputCallRequest *request1 = [RMTStreamingInputCallRequest message];
+ request1.payload.body = [NSMutableData dataWithLength:27182];
+
+ RMTStreamingInputCallRequest *request2 = [RMTStreamingInputCallRequest message];
+ request2.payload.body = [NSMutableData dataWithLength:8];
+
+ RMTStreamingInputCallRequest *request3 = [RMTStreamingInputCallRequest message];
+ request3.payload.body = [NSMutableData dataWithLength:1828];
+
+ RMTStreamingInputCallRequest *request4 = [RMTStreamingInputCallRequest message];
+ request4.payload.body = [NSMutableData dataWithLength:45904];
+
id<GRXWriter> writer = [GRXWriter writerWithContainer:@[request1, request2, request3, request4]];
[_service streamingInputCallWithRequestsWriter:writer
- handler:^(RMTStreamingInputCallResponse *response, NSError *error) {
+ handler:^(RMTStreamingInputCallResponse *response,
+ NSError *error) {
XCTAssertNil(error, @"Finished with unexpected error: %@", error);
- id expectedResponse = [[[[RMTStreamingInputCallResponseBuilder alloc] init]
- setAggregatedPayloadSize:74922]
- build];
+ RMTStreamingInputCallResponse *expectedResponse = [RMTStreamingInputCallResponse message];
+ expectedResponse.aggregatedPayloadSize = 74922;
XCTAssertEqualObjects(response, expectedResponse);
[expectation fulfill];
}];
- [self waitForExpectationsWithTimeout:4. handler:nil];
+ [self waitForExpectationsWithTimeout:4 handler:nil];
}
- (void)testServerStreamingRPC {
__weak XCTestExpectation *expectation = [self expectationWithDescription:@"ServerStreaming"];
+
NSArray *expectedSizes = @[@31415, @9, @2653, @58979];
+
+ RMTStreamingOutputCallRequest *request = [RMTStreamingOutputCallRequest message];
+ for (NSNumber *size in expectedSizes) {
+ RMTResponseParameters *parameters = [RMTResponseParameters message];
+ parameters.size = [size integerValue];
+ [request.responseParametersArray addObject:parameters];
+ }
+
__block int index = 0;
- id request = [[[[[[[RMTStreamingOutputCallRequestBuilder alloc] init]
- addResponseParameters:[[[[RMTResponseParametersBuilder alloc] init]
- setSize:31415] build]]
- addResponseParameters:[[[[RMTResponseParametersBuilder alloc] init]
- setSize:9] build]]
- addResponseParameters:[[[[RMTResponseParametersBuilder alloc] init]
- setSize:2653] build]]
- addResponseParameters:[[[[RMTResponseParametersBuilder alloc] init]
- setSize:58979] build]]
- build];
- [_service streamingOutputCallWithRequest:request handler:^(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error){
+ [_service streamingOutputCallWithRequest:request
+ handler:^(BOOL done,
+ RMTStreamingOutputCallResponse *response,
+ NSError *error){
XCTAssertNil(error, @"Finished with unexpected error: %@", error);
- id expectedResponseBuilder = [[RMTStreamingOutputCallResponseBuilder alloc] init];
- id expectedPayload = [[[[[RMTPayloadBuilder alloc] init]
- setType:RMTPayloadTypeCompressable]
- setBody:[NSMutableData dataWithLength:[expectedSizes[index] unsignedIntegerValue]]]
- build];
- expectedResponseBuilder = [expectedResponseBuilder setPayload:expectedPayload];
- id expectedResponse = [expectedResponseBuilder build];
- XCTAssertEqualObjects(response, expectedResponse);
-
- [expectation fulfill];
- index += 1;
+ XCTAssertTrue(done || response, @"Event handler called without an event.");
+
+ if (response) {
+ XCTAssertLessThan(index, 4, @"More than 4 responses received.");
+ id expected = [RMTStreamingOutputCallResponse messageWithPayloadSize:expectedSizes[index]];
+ XCTAssertEqualObjects(response, expected);
+ index += 1;
+ }
+
+ if (done) {
+ XCTAssertEqual(index, 4, @"Received %i responses instead of 4.", index);
+ [expectation fulfill];
+ }
}];
[self waitForExpectationsWithTimeout:4 handler:nil];
}
+- (void)testPingPongRPC {
+ __weak XCTestExpectation *expectation = [self expectationWithDescription:@"PingPong"];
+
+ NSArray *requests = @[@27182, @8, @1828, @45904];
+ NSArray *responses = @[@31415, @9, @2653, @58979];
+
+ GRXBufferedPipe *requestsBuffer = [[GRXBufferedPipe alloc] init];
+
+ __block int index = 0;
+
+ id request = [RMTStreamingOutputCallRequest messageWithPayloadSize:requests[index]
+ requestedResponseSize:responses[index]];
+ [requestsBuffer didReceiveValue:request];
+
+ [_service fullDuplexCallWithRequestsWriter:requestsBuffer
+ handler:^(BOOL done,
+ RMTStreamingOutputCallResponse *response,
+ NSError *error) {
+ XCTAssertNil(error, @"Finished with unexpected error: %@", error);
+ XCTAssertTrue(done || response, @"Event handler called without an event.");
+
+ if (response) {
+ XCTAssertLessThan(index, 4, @"More than 4 responses received.");
+ id expected = [RMTStreamingOutputCallResponse messageWithPayloadSize:responses[index]];
+ XCTAssertEqualObjects(response, expected);
+ index += 1;
+ if (index < 4) {
+ id request = [RMTStreamingOutputCallRequest messageWithPayloadSize:requests[index]
+ requestedResponseSize:responses[index]];
+ [requestsBuffer didReceiveValue:request];
+ } else {
+ [requestsBuffer didFinishWithError:nil];
+ }
+ }
+
+ if (done) {
+ XCTAssertEqual(index, 4, @"Received %i responses instead of 4.", index);
+ [expectation fulfill];
+ }
+ }];
+ [self waitForExpectationsWithTimeout:2 handler:nil];
+}
+
- (void)testEmptyStreamRPC {
__weak XCTestExpectation *expectation = [self expectationWithDescription:@"EmptyStream"];
[_service fullDuplexCallWithRequestsWriter:[GRXWriter emptyWriter]
- handler:^(bool done, RMTStreamingOutputCallResponse *response, NSError *error) {
- XCTAssertNil(error, @"Finished with unexpected error: %@", error);
- XCTAssert(done, @"Unexpected response: %@", response);
- [expectation fulfill];
- }];
- [self waitForExpectationsWithTimeout:4 handler:nil];
+ handler:^(BOOL done,
+ RMTStreamingOutputCallResponse *response,
+ NSError *error) {
+ XCTAssertNil(error, @"Finished with unexpected error: %@", error);
+ XCTAssert(done, @"Unexpected response: %@", response);
+ [expectation fulfill];
+ }];
+ [self waitForExpectationsWithTimeout:2 handler:nil];
}
- (void)testCancelAfterBeginRPC {
__weak XCTestExpectation *expectation = [self expectationWithDescription:@"CancelAfterBegin"];
- // TODO(mlumish): change to writing that blocks instead of writing
- ProtoRPC *call = [_service RPCToStreamingInputCallWithRequestsWriter:[GRXWriter emptyWriter]
- handler:^(RMTStreamingInputCallResponse *response, NSError *error) {
- XCTAssertEqual([error code], GRPC_STATUS_CANCELLED);
- [expectation fulfill];
- }];
+
+ // A buffered pipe to which we never write any value acts as a writer that just hangs.
+ GRXBufferedPipe *requestsBuffer = [[GRXBufferedPipe alloc] init];
+
+ ProtoRPC *call = [_service RPCToStreamingInputCallWithRequestsWriter:requestsBuffer
+ handler:^(RMTStreamingInputCallResponse *response,
+ NSError *error) {
+ XCTAssertEqual(error.code, GRPC_STATUS_CANCELLED);
+ [expectation fulfill];
+ }];
[call start];
[call cancel];
[self waitForExpectationsWithTimeout:1 handler:nil];
diff --git a/src/objective-c/examples/Sample/SampleTests/RemoteTests.m b/src/objective-c/examples/Sample/SampleTests/RemoteTests.m
index 6091aa9d31..553c813b0b 100644
--- a/src/objective-c/examples/Sample/SampleTests/RemoteTests.m
+++ b/src/objective-c/examples/Sample/SampleTests/RemoteTests.m
@@ -38,7 +38,7 @@
#import <gRPC/GRPCMethodName.h>
#import <gRPC/GRXWriter+Immediate.h>
#import <gRPC/GRXWriteable.h>
-#import <RemoteTest/Messages.pb.h>
+#import <RemoteTest/Messages.pbobjc.h>
@interface RemoteTests : XCTestCase
@end
@@ -111,11 +111,10 @@
interface:@"TestService"
method:@"UnaryCall"];
- RMTSimpleRequest *request = [[[[[[RMTSimpleRequestBuilder alloc] init]
- setResponseSize:100]
- setFillUsername:YES]
- setFillOauthScope:YES]
- build];
+ RMTSimpleRequest *request = [[RMTSimpleRequest alloc] init];
+ request.responseSize = 100;
+ request.fillUsername = YES;
+ request.fillOauthScope = YES;
id<GRXWriter> requestsWriter = [GRXWriter writerWithValue:[request data]];
GRPCCall *call = [[GRPCCall alloc] initWithHost:@"grpc-test.sandbox.google.com"
diff --git a/src/objective-c/examples/Sample/SampleTests/SampleTests.m b/src/objective-c/examples/Sample/SampleTests/SampleTests.m
index 6d6875c233..b1a0f78a01 100644
--- a/src/objective-c/examples/Sample/SampleTests/SampleTests.m
+++ b/src/objective-c/examples/Sample/SampleTests/SampleTests.m
@@ -38,7 +38,8 @@
#import <gRPC/GRPCMethodName.h>
#import <gRPC/GRXWriter+Immediate.h>
#import <gRPC/GRXWriteable.h>
-#import <Route_guide/Route_guide.pb.h>
+#import <Route_guide/RouteGuide.pbobjc.h>
+#import <Route_guide/RouteGuide.pbrpc.h>
@interface SampleTests : XCTestCase
@end
@@ -105,15 +106,15 @@
- (void)testSimpleProtoRPC {
__weak XCTestExpectation *response = [self expectationWithDescription:@"Response received."];
- __weak XCTestExpectation *expectedResponse =
- [self expectationWithDescription:@"Expected response."];
__weak XCTestExpectation *completion = [self expectationWithDescription:@"RPC completed."];
GRPCMethodName *method = [[GRPCMethodName alloc] initWithPackage:@"grpc.example.routeguide"
interface:@"RouteGuide"
method:@"GetFeature"];
- RGDPoint *point = [[[[[RGDPointBuilder alloc] init] setLatitude:28E7] setLongitude:-15E7] build];
+ RGDPoint *point = [RGDPoint message];
+ point.latitude = 28E7;
+ point.longitude = -15E7;
id<GRXWriter> requestsWriter = [GRXWriter writerWithValue:[point data]];
GRPCCall *call = [[GRPCCall alloc] initWithHost:@"http://127.0.0.1:8980"
@@ -122,11 +123,10 @@
id<GRXWriteable> responsesWriteable = [[GRXWriteable alloc] initWithValueHandler:^(NSData *value) {
XCTAssertNotNil(value, @"nil value received as response.");
- [response fulfill];
RGDFeature *feature = [RGDFeature parseFromData:value];
XCTAssertEqualObjects(point, feature.location);
XCTAssertNotNil(feature.name, @"Response's name is nil.");
- [expectedResponse fulfill];
+ [response fulfill];
} completionHandler:^(NSError *errorOrNil) {
XCTAssertNil(errorOrNil, @"Finished with unexpected error: %@", errorOrNil);
[completion fulfill];
@@ -136,4 +136,22 @@
[self waitForExpectationsWithTimeout:2.0 handler:nil];
}
+
+- (void)testSimpleProtoRPCUsingGeneratedService {
+ __weak XCTestExpectation *completion = [self expectationWithDescription:@"RPC completed."];
+
+ RGDPoint *point = [RGDPoint message];
+ point.latitude = 28E7;
+ point.longitude = -15E7;
+
+ RGDRouteGuide *service = [[RGDRouteGuide alloc] initWithHost:@"http://127.0.0.1:8980"];
+ [service getFeatureWithRequest:point handler:^(RGDFeature *response, NSError *error) {
+ XCTAssertNil(error, @"Finished with unexpected error: %@", error);
+ XCTAssertEqualObjects(point, response.location);
+ XCTAssertNotNil(response.name, @"Response's name is nil.");
+ [completion fulfill];
+ }];
+
+ [self waitForExpectationsWithTimeout:2.0 handler:nil];
+}
@end
diff --git a/src/python/README.md b/src/python/README.md
index b5eea239f3..c67201b670 100644
--- a/src/python/README.md
+++ b/src/python/README.md
@@ -7,7 +7,7 @@ The Python facility of gRPC.
Status
-------
-Usable with limitations, Alpha
+Alpha : Ready for early adopters
Prerequisites
-----------------------
diff --git a/src/python/requirements.txt b/src/python/requirements.txt
index 06a42e1c9f..d32d436d3c 100644
--- a/src/python/requirements.txt
+++ b/src/python/requirements.txt
@@ -1,3 +1,3 @@
enum34==1.0.4
futures==2.2.0
-protobuf==3.0.0-alpha-1
+protobuf==3.0.0a2
diff --git a/src/python/src/setup.py b/src/python/src/setup.py
index a13dc4ec19..e936913cfd 100644
--- a/src/python/src/setup.py
+++ b/src/python/src/setup.py
@@ -93,6 +93,6 @@ setuptools.setup(
install_requires=[
'enum34==1.0.4',
'futures==2.2.0',
- 'protobuf==3.0.0-alpha-1'
+ 'protobuf==3.0.0a2'
]
)
diff --git a/src/ruby/ext/grpc/extconf.rb b/src/ruby/ext/grpc/extconf.rb
index f15f85bf56..1b801edc8e 100644
--- a/src/ruby/ext/grpc/extconf.rb
+++ b/src/ruby/ext/grpc/extconf.rb
@@ -34,13 +34,25 @@ INCLUDEDIR = RbConfig::CONFIG['includedir']
if ENV.key? 'GRPC_ROOT'
GRPC_ROOT = ENV['GRPC_ROOT']
- if ENV.key? 'GRPC_LIB_DIR'
- GRPC_LIB_DIR = ENV['GRPC_LIB_DIR']
+else
+ grpc_root = File.expand_path(File.join(File.dirname(__FILE__), '../../../..'))
+ if File.exist?(File.join(grpc_root, 'include/grpc/grpc.h'))
+ GRPC_ROOT = grpc_root
else
- GRPC_LIB_DIR = 'libs/opt'
+ GRPC_ROOT = nil
end
+end
+
+if ENV.key? 'CONFIG'
+ GRPC_CONFIG = ENV['CONFIG']
else
- GRPC_ROOT = nil
+ GRPC_CONFIG = 'opt'
+end
+
+if (ENV.key? 'GRPC_LIB_DIR') && (!GRPC_ROOT.nil?)
+ GRPC_LIB_DIR = File.join(GRPC_ROOT, ENV['GRPC_LIB_DIR'])
+else
+ GRPC_LIB_DIR = File.join(File.join(GRPC_ROOT, 'libs'), GRPC_CONFIG)
end
HEADER_DIRS = [
@@ -67,7 +79,10 @@ LIB_DIRS = [
unless GRPC_ROOT.nil?
HEADER_DIRS.unshift File.join(GRPC_ROOT, 'include')
- LIB_DIRS.unshift File.join(GRPC_ROOT, GRPC_LIB_DIR)
+ LIB_DIRS.unshift GRPC_LIB_DIR
+ unless File.exist?(File.join(GRPC_LIB_DIR, 'libgrpc.a'))
+ system("make -C #{GRPC_ROOT} static_c CONFIG=#{GRPC_CONFIG}")
+ end
end
def crash(msg)
diff --git a/src/ruby/ext/grpc/rb_byte_buffer.c b/src/ruby/ext/grpc/rb_byte_buffer.c
index e3a5277f54..edf0d3b115 100644
--- a/src/ruby/ext/grpc/rb_byte_buffer.c
+++ b/src/ruby/ext/grpc/rb_byte_buffer.c
@@ -33,7 +33,7 @@
#include "rb_byte_buffer.h"
-#include <ruby.h>
+#include <ruby/ruby.h>
#include <grpc/grpc.h>
#include <grpc/support/slice.h>
diff --git a/src/ruby/ext/grpc/rb_byte_buffer.h b/src/ruby/ext/grpc/rb_byte_buffer.h
index 96b9009dae..c7ddd76489 100644
--- a/src/ruby/ext/grpc/rb_byte_buffer.h
+++ b/src/ruby/ext/grpc/rb_byte_buffer.h
@@ -34,8 +34,9 @@
#ifndef GRPC_RB_BYTE_BUFFER_H_
#define GRPC_RB_BYTE_BUFFER_H_
+#include <ruby/ruby.h>
+
#include <grpc/grpc.h>
-#include <ruby.h>
/* Converts a char* with a length to a grpc_byte_buffer */
grpc_byte_buffer *grpc_rb_s_to_byte_buffer(char *string, size_t length);
diff --git a/src/ruby/ext/grpc/rb_call.c b/src/ruby/ext/grpc/rb_call.c
index c46af250cd..29f870f929 100644
--- a/src/ruby/ext/grpc/rb_call.c
+++ b/src/ruby/ext/grpc/rb_call.c
@@ -33,7 +33,7 @@
#include "rb_call.h"
-#include <ruby.h>
+#include <ruby/ruby.h>
#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
diff --git a/src/ruby/ext/grpc/rb_call.h b/src/ruby/ext/grpc/rb_call.h
index 003ce0429e..1d2fbc3580 100644
--- a/src/ruby/ext/grpc/rb_call.h
+++ b/src/ruby/ext/grpc/rb_call.h
@@ -34,8 +34,9 @@
#ifndef GRPC_RB_CALL_H_
#define GRPC_RB_CALL_H_
+#include <ruby/ruby.h>
+
#include <grpc/grpc.h>
-#include <ruby.h>
/* Gets the wrapped call from a VALUE. */
grpc_call* grpc_rb_get_wrapped_call(VALUE v);
diff --git a/src/ruby/ext/grpc/rb_channel.c b/src/ruby/ext/grpc/rb_channel.c
index 214675af92..d6876bc554 100644
--- a/src/ruby/ext/grpc/rb_channel.c
+++ b/src/ruby/ext/grpc/rb_channel.c
@@ -33,7 +33,7 @@
#include "rb_channel.h"
-#include <ruby.h>
+#include <ruby/ruby.h>
#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
diff --git a/src/ruby/ext/grpc/rb_channel.h b/src/ruby/ext/grpc/rb_channel.h
index 6e3c087689..77e1f6acbc 100644
--- a/src/ruby/ext/grpc/rb_channel.h
+++ b/src/ruby/ext/grpc/rb_channel.h
@@ -34,7 +34,8 @@
#ifndef GRPC_RB_CHANNEL_H_
#define GRPC_RB_CHANNEL_H_
-#include <ruby.h>
+#include <ruby/ruby.h>
+
#include <grpc/grpc.h>
/* Initializes the Channel class. */
diff --git a/src/ruby/ext/grpc/rb_channel_args.c b/src/ruby/ext/grpc/rb_channel_args.c
index acd545f5d2..42ed3a1ec8 100644
--- a/src/ruby/ext/grpc/rb_channel_args.c
+++ b/src/ruby/ext/grpc/rb_channel_args.c
@@ -33,7 +33,8 @@
#include "rb_channel_args.h"
-#include <ruby.h>
+#include <ruby/ruby.h>
+
#include <grpc/grpc.h>
#include "rb_grpc.h"
diff --git a/src/ruby/ext/grpc/rb_channel_args.h b/src/ruby/ext/grpc/rb_channel_args.h
index 78a333bd08..591dd848ac 100644
--- a/src/ruby/ext/grpc/rb_channel_args.h
+++ b/src/ruby/ext/grpc/rb_channel_args.h
@@ -34,7 +34,8 @@
#ifndef GRPC_RB_CHANNEL_ARGS_H_
#define GRPC_RB_CHANNEL_ARGS_H_
-#include <ruby.h>
+#include <ruby/ruby.h>
+
#include <grpc/grpc.h>
/* Converts a hash object containing channel args to a channel args instance.
diff --git a/src/ruby/ext/grpc/rb_completion_queue.h b/src/ruby/ext/grpc/rb_completion_queue.h
index e4d04b10c8..6cc4e96589 100644
--- a/src/ruby/ext/grpc/rb_completion_queue.h
+++ b/src/ruby/ext/grpc/rb_completion_queue.h
@@ -34,8 +34,9 @@
#ifndef GRPC_RB_COMPLETION_QUEUE_H_
#define GRPC_RB_COMPLETION_QUEUE_H_
+#include <ruby/ruby.h>
+
#include <grpc/grpc.h>
-#include <ruby.h>
/* Gets the wrapped completion queue from the ruby wrapper */
grpc_completion_queue *grpc_rb_get_wrapped_completion_queue(VALUE v);
diff --git a/src/ruby/ext/grpc/rb_credentials.c b/src/ruby/ext/grpc/rb_credentials.c
index 1ec88914e4..3fca848b2b 100644
--- a/src/ruby/ext/grpc/rb_credentials.c
+++ b/src/ruby/ext/grpc/rb_credentials.c
@@ -33,7 +33,7 @@
#include "rb_credentials.h"
-#include <ruby.h>
+#include <ruby/ruby.h>
#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
diff --git a/src/ruby/ext/grpc/rb_credentials.h b/src/ruby/ext/grpc/rb_credentials.h
index e7c43c9c78..840f7d5f9c 100644
--- a/src/ruby/ext/grpc/rb_credentials.h
+++ b/src/ruby/ext/grpc/rb_credentials.h
@@ -34,7 +34,8 @@
#ifndef GRPC_RB_CREDENTIALS_H_
#define GRPC_RB_CREDENTIALS_H_
-#include <ruby.h>
+#include <ruby/ruby.h>
+
#include <grpc/grpc_security.h>
/* Initializes the ruby Credentials class. */
diff --git a/src/ruby/ext/grpc/rb_grpc.h b/src/ruby/ext/grpc/rb_grpc.h
index a502273de1..6ea6cbd0b6 100644
--- a/src/ruby/ext/grpc/rb_grpc.h
+++ b/src/ruby/ext/grpc/rb_grpc.h
@@ -35,7 +35,8 @@
#define GRPC_RB_H_
#include <sys/time.h>
-#include <ruby.h>
+#include <ruby/ruby.h>
+
#include <grpc/support/time.h>
/* grpc_rb_mGrpcCore is the module containing the ruby wrapper GRPC classes. */
diff --git a/src/ruby/ext/grpc/rb_server.c b/src/ruby/ext/grpc/rb_server.c
index 0651c36c0b..3182d03fab 100644
--- a/src/ruby/ext/grpc/rb_server.c
+++ b/src/ruby/ext/grpc/rb_server.c
@@ -33,7 +33,7 @@
#include "rb_server.h"
-#include <ruby.h>
+#include <ruby/ruby.h>
#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
diff --git a/src/ruby/ext/grpc/rb_server.h b/src/ruby/ext/grpc/rb_server.h
index 5e4b711d35..59c9e6905b 100644
--- a/src/ruby/ext/grpc/rb_server.h
+++ b/src/ruby/ext/grpc/rb_server.h
@@ -34,7 +34,8 @@
#ifndef GRPC_RB_SERVER_H_
#define GRPC_RB_SERVER_H_
-#include <ruby.h>
+#include <ruby/ruby.h>
+
#include <grpc/grpc.h>
/* Initializes the Server class. */
diff --git a/src/ruby/ext/grpc/rb_server_credentials.c b/src/ruby/ext/grpc/rb_server_credentials.c
index a86389445f..23271c40b7 100644
--- a/src/ruby/ext/grpc/rb_server_credentials.c
+++ b/src/ruby/ext/grpc/rb_server_credentials.c
@@ -33,7 +33,7 @@
#include "rb_server_credentials.h"
-#include <ruby.h>
+#include <ruby/ruby.h>
#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
diff --git a/src/ruby/ext/grpc/rb_server_credentials.h b/src/ruby/ext/grpc/rb_server_credentials.h
index 35b395ad5c..69d919b740 100644
--- a/src/ruby/ext/grpc/rb_server_credentials.h
+++ b/src/ruby/ext/grpc/rb_server_credentials.h
@@ -34,7 +34,8 @@
#ifndef GRPC_RB_SERVER_CREDENTIALS_H_
#define GRPC_RB_SERVER_CREDENTIALS_H_
-#include <ruby.h>
+#include <ruby/ruby.h>
+
#include <grpc/grpc_security.h>
/* Initializes the ruby ServerCredentials class. */
diff --git a/test/core/end2end/fixtures/chttp2_socket_pair_with_grpc_trace.c b/test/core/end2end/fixtures/chttp2_socket_pair_with_grpc_trace.c
new file mode 100644
index 0000000000..1f53e581ab
--- /dev/null
+++ b/test/core/end2end/fixtures/chttp2_socket_pair_with_grpc_trace.c
@@ -0,0 +1,156 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include "test/core/end2end/end2end_tests.h"
+
+#include <string.h>
+
+#include "src/core/channel/client_channel.h"
+#include "src/core/channel/connected_channel.h"
+#include "src/core/channel/http_client_filter.h"
+#include "src/core/channel/http_server_filter.h"
+#include "src/core/iomgr/endpoint_pair.h"
+#include "src/core/iomgr/iomgr.h"
+#include "src/core/support/env.h"
+#include "src/core/surface/channel.h"
+#include "src/core/surface/client.h"
+#include "src/core/surface/server.h"
+#include "src/core/transport/chttp2_transport.h"
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+#include <grpc/support/sync.h>
+#include <grpc/support/thd.h>
+#include <grpc/support/useful.h>
+#include "test/core/util/port.h"
+#include "test/core/util/test_config.h"
+
+/* chttp2 transport that is immediately available (used for testing
+ connected_channel without a client_channel */
+
+static grpc_transport_setup_result server_setup_transport(
+ void *ts, grpc_transport *transport, grpc_mdctx *mdctx) {
+ grpc_end2end_test_fixture *f = ts;
+ static grpc_channel_filter const *extra_filters[] = {
+ &grpc_http_server_filter};
+ return grpc_server_setup_transport(f->server, transport, extra_filters,
+ GPR_ARRAY_SIZE(extra_filters), mdctx);
+}
+
+typedef struct {
+ grpc_end2end_test_fixture *f;
+ grpc_channel_args *client_args;
+} sp_client_setup;
+
+static grpc_transport_setup_result client_setup_transport(
+ void *ts, grpc_transport *transport, grpc_mdctx *mdctx) {
+ sp_client_setup *cs = ts;
+
+ const grpc_channel_filter *filters[] = {&grpc_client_surface_filter,
+ &grpc_http_client_filter,
+ &grpc_connected_channel_filter};
+ size_t nfilters = sizeof(filters) / sizeof(*filters);
+ grpc_channel *channel = grpc_channel_create_from_filters(
+ filters, nfilters, cs->client_args, mdctx, 1);
+
+ cs->f->client = channel;
+
+ return grpc_connected_channel_bind_transport(
+ grpc_channel_get_channel_stack(channel), transport);
+}
+
+static grpc_end2end_test_fixture chttp2_create_fixture_socketpair(
+ grpc_channel_args *client_args, grpc_channel_args *server_args) {
+ grpc_endpoint_pair *sfd = gpr_malloc(sizeof(grpc_endpoint_pair));
+
+ grpc_end2end_test_fixture f;
+ memset(&f, 0, sizeof(f));
+ f.fixture_data = sfd;
+ f.client_cq = grpc_completion_queue_create();
+ f.server_cq = grpc_completion_queue_create();
+
+ *sfd = grpc_iomgr_create_endpoint_pair(65536);
+
+ return f;
+}
+
+static void chttp2_init_client_socketpair(grpc_end2end_test_fixture *f,
+ grpc_channel_args *client_args) {
+ grpc_endpoint_pair *sfd = f->fixture_data;
+ sp_client_setup cs;
+ cs.client_args = client_args;
+ cs.f = f;
+ grpc_create_chttp2_transport(client_setup_transport, &cs, client_args,
+ sfd->client, NULL, 0, grpc_mdctx_create(), 1);
+ GPR_ASSERT(f->client);
+}
+
+static void chttp2_init_server_socketpair(grpc_end2end_test_fixture *f,
+ grpc_channel_args *server_args) {
+ grpc_endpoint_pair *sfd = f->fixture_data;
+ GPR_ASSERT(!f->server);
+ f->server = grpc_server_create_from_filters(NULL, 0, server_args);
+ grpc_server_register_completion_queue(f->server, f->server_cq);
+ grpc_server_start(f->server);
+ grpc_create_chttp2_transport(server_setup_transport, f, server_args,
+ sfd->server, NULL, 0, grpc_mdctx_create(), 0);
+}
+
+static void chttp2_tear_down_socketpair(grpc_end2end_test_fixture *f) {
+ gpr_free(f->fixture_data);
+}
+
+/* All test configurations */
+static grpc_end2end_test_config configs[] = {
+ {"chttp2/socketpair", 0, chttp2_create_fixture_socketpair,
+ chttp2_init_client_socketpair, chttp2_init_server_socketpair,
+ chttp2_tear_down_socketpair},
+};
+
+int main(int argc, char **argv) {
+ size_t i;
+
+ /* force tracing on, with a value to force many
+ code paths in trace.c to be taken */
+ gpr_setenv("GRPC_TRACE", "doesnt-exist,http,all");
+
+ grpc_test_init(argc, argv);
+ grpc_init();
+
+ for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
+ grpc_end2end_tests(configs[i]);
+ }
+
+ grpc_shutdown();
+
+ return 0;
+}
diff --git a/test/core/end2end/gen_build_json.py b/test/core/end2end/gen_build_json.py
index bce2d7a796..19c1a80896 100755
--- a/test/core/end2end/gen_build_json.py
+++ b/test/core/end2end/gen_build_json.py
@@ -49,6 +49,7 @@ END2END_FIXTURES = {
'chttp2_simple_ssl_with_oauth2_fullstack': default_secure_fixture_options,
'chttp2_socket_pair': default_unsecure_fixture_options,
'chttp2_socket_pair_one_byte_at_a_time': default_unsecure_fixture_options,
+ 'chttp2_socket_pair_with_grpc_trace': default_unsecure_fixture_options,
}
TestOptions = collections.namedtuple('TestOptions', 'flaky secure')
diff --git a/test/cpp/client/credentials_test.cc b/test/cpp/client/credentials_test.cc
index 6840418989..ee94f455a4 100644
--- a/test/cpp/client/credentials_test.cc
+++ b/test/cpp/client/credentials_test.cc
@@ -46,8 +46,7 @@ class CredentialsTest : public ::testing::Test {
};
TEST_F(CredentialsTest, InvalidServiceAccountCreds) {
- std::unique_ptr<Credentials> bad1 =
- ServiceAccountCredentials("", "", 1);
+ std::shared_ptr<Credentials> bad1 = ServiceAccountCredentials("", "", 1);
EXPECT_EQ(nullptr, bad1.get());
}
diff --git a/test/cpp/end2end/end2end_test.cc b/test/cpp/end2end/end2end_test.cc
index f35b16fe55..76271c3e1d 100644
--- a/test/cpp/end2end/end2end_test.cc
+++ b/test/cpp/end2end/end2end_test.cc
@@ -33,11 +33,13 @@
#include <thread>
+#include "src/core/security/credentials.h"
+#include "src/cpp/server/thread_pool.h"
#include "test/core/util/port.h"
#include "test/core/util/test_config.h"
#include "test/cpp/util/echo_duplicate.grpc.pb.h"
#include "test/cpp/util/echo.grpc.pb.h"
-#include "src/cpp/server/thread_pool.h"
+#include "test/cpp/util/fake_credentials.h"
#include <grpc++/channel_arguments.h>
#include <grpc++/channel_interface.h>
#include <grpc++/client_context.h>
@@ -106,6 +108,16 @@ class TestServiceImpl : public ::grpc::cpp::test::util::TestService::Service {
} else {
EXPECT_FALSE(context->IsCancelled());
}
+
+ if (request->has_param() && request->param().echo_metadata()) {
+ const std::multimap<grpc::string, grpc::string>& client_metadata =
+ context->client_metadata();
+ for (std::multimap<grpc::string, grpc::string>::const_iterator iter =
+ client_metadata.begin();
+ iter != client_metadata.end(); ++iter) {
+ context->AddTrailingMetadata((*iter).first, (*iter).second);
+ }
+ }
return Status::OK;
}
@@ -180,7 +192,7 @@ class End2endTest : public ::testing::Test {
// Setup server
ServerBuilder builder;
builder.AddListeningPort(server_address_.str(),
- InsecureServerCredentials());
+ FakeTransportSecurityServerCredentials());
builder.RegisterService(&service_);
builder.SetMaxMessageSize(
kMaxMessageSize_); // For testing max message size.
@@ -192,8 +204,9 @@ class End2endTest : public ::testing::Test {
void TearDown() GRPC_OVERRIDE { server_->Shutdown(); }
void ResetStub() {
- std::shared_ptr<ChannelInterface> channel = CreateChannel(
- server_address_.str(), InsecureCredentials(), ChannelArguments());
+ std::shared_ptr<ChannelInterface> channel =
+ CreateChannel(server_address_.str(), FakeTransportSecurityCredentials(),
+ ChannelArguments());
stub_ = std::move(grpc::cpp::test::util::TestService::NewStub(channel));
}
@@ -404,8 +417,9 @@ TEST_F(End2endTest, BidiStream) {
// Talk to the two services with the same name but different package names.
// The two stubs are created on the same channel.
TEST_F(End2endTest, DiffPackageServices) {
- std::shared_ptr<ChannelInterface> channel = CreateChannel(
- server_address_.str(), InsecureCredentials(), ChannelArguments());
+ std::shared_ptr<ChannelInterface> channel =
+ CreateChannel(server_address_.str(), FakeTransportSecurityCredentials(),
+ ChannelArguments());
EchoRequest request;
EchoResponse response;
@@ -429,7 +443,7 @@ TEST_F(End2endTest, DiffPackageServices) {
// rpc and stream should fail on bad credentials.
TEST_F(End2endTest, BadCredentials) {
- std::unique_ptr<Credentials> bad_creds = ServiceAccountCredentials("", "", 1);
+ std::shared_ptr<Credentials> bad_creds = ServiceAccountCredentials("", "", 1);
EXPECT_EQ(nullptr, bad_creds.get());
std::shared_ptr<ChannelInterface> channel =
CreateChannel(server_address_.str(), bad_creds, ChannelArguments());
@@ -438,7 +452,7 @@ TEST_F(End2endTest, BadCredentials) {
EchoRequest request;
EchoResponse response;
ClientContext context;
- grpc::string msg("hello");
+ request.set_message("Hello");
Status s = stub->Echo(&context, request, &response);
EXPECT_EQ("", response.message());
@@ -588,6 +602,88 @@ TEST_F(End2endTest, RpcMaxMessageSize) {
EXPECT_FALSE(s.IsOk());
}
+bool MetadataContains(const std::multimap<grpc::string, grpc::string>& metadata,
+ const grpc::string& key, const grpc::string& value) {
+ int count = 0;
+
+ for (std::multimap<grpc::string, grpc::string>::const_iterator iter =
+ metadata.begin();
+ iter != metadata.end(); ++iter) {
+ if ((*iter).first == key && (*iter).second == value) {
+ count++;
+ }
+ }
+ return count == 1;
+}
+
+TEST_F(End2endTest, SetPerCallCredentials) {
+ ResetStub();
+ EchoRequest request;
+ EchoResponse response;
+ ClientContext context;
+ std::shared_ptr<Credentials> creds =
+ IAMCredentials("fake_token", "fake_selector");
+ context.set_credentials(creds);
+ request.set_message("Hello");
+ request.mutable_param()->set_echo_metadata(true);
+
+ Status s = stub_->Echo(&context, request, &response);
+ EXPECT_EQ(request.message(), response.message());
+ EXPECT_TRUE(s.IsOk());
+ EXPECT_TRUE(MetadataContains(context.GetServerTrailingMetadata(),
+ GRPC_IAM_AUTHORIZATION_TOKEN_METADATA_KEY,
+ "fake_token"));
+ EXPECT_TRUE(MetadataContains(context.GetServerTrailingMetadata(),
+ GRPC_IAM_AUTHORITY_SELECTOR_METADATA_KEY,
+ "fake_selector"));
+}
+
+TEST_F(End2endTest, InsecurePerCallCredentials) {
+ ResetStub();
+ EchoRequest request;
+ EchoResponse response;
+ ClientContext context;
+ std::shared_ptr<Credentials> creds = InsecureCredentials();
+ context.set_credentials(creds);
+ request.set_message("Hello");
+ request.mutable_param()->set_echo_metadata(true);
+
+ Status s = stub_->Echo(&context, request, &response);
+ EXPECT_EQ(StatusCode::CANCELLED, s.code());
+ EXPECT_EQ("Failed to set credentials to rpc.", s.details());
+}
+
+TEST_F(End2endTest, OverridePerCallCredentials) {
+ ResetStub();
+ EchoRequest request;
+ EchoResponse response;
+ ClientContext context;
+ std::shared_ptr<Credentials> creds1 =
+ IAMCredentials("fake_token1", "fake_selector1");
+ context.set_credentials(creds1);
+ std::shared_ptr<Credentials> creds2 =
+ IAMCredentials("fake_token2", "fake_selector2");
+ context.set_credentials(creds2);
+ request.set_message("Hello");
+ request.mutable_param()->set_echo_metadata(true);
+
+ Status s = stub_->Echo(&context, request, &response);
+ EXPECT_TRUE(MetadataContains(context.GetServerTrailingMetadata(),
+ GRPC_IAM_AUTHORIZATION_TOKEN_METADATA_KEY,
+ "fake_token2"));
+ EXPECT_TRUE(MetadataContains(context.GetServerTrailingMetadata(),
+ GRPC_IAM_AUTHORITY_SELECTOR_METADATA_KEY,
+ "fake_selector2"));
+ EXPECT_FALSE(MetadataContains(context.GetServerTrailingMetadata(),
+ GRPC_IAM_AUTHORIZATION_TOKEN_METADATA_KEY,
+ "fake_token1"));
+ EXPECT_FALSE(MetadataContains(context.GetServerTrailingMetadata(),
+ GRPC_IAM_AUTHORITY_SELECTOR_METADATA_KEY,
+ "fake_selector1"));
+ EXPECT_EQ(request.message(), response.message());
+ EXPECT_TRUE(s.IsOk());
+}
+
} // namespace testing
} // namespace grpc
diff --git a/test/cpp/interop/client_helper.cc b/test/cpp/interop/client_helper.cc
index a1dea383e6..09fd1c8913 100644
--- a/test/cpp/interop/client_helper.cc
+++ b/test/cpp/interop/client_helper.cc
@@ -82,7 +82,7 @@ std::shared_ptr<ChannelInterface> CreateChannelForTestCase(
FLAGS_server_port);
if (test_case == "service_account_creds") {
- std::unique_ptr<Credentials> creds;
+ std::shared_ptr<Credentials> creds;
GPR_ASSERT(FLAGS_enable_ssl);
grpc::string json_key = GetServiceAccountJsonKey();
std::chrono::seconds token_lifetime = std::chrono::hours(1);
@@ -91,13 +91,13 @@ std::shared_ptr<ChannelInterface> CreateChannelForTestCase(
return CreateTestChannel(host_port, FLAGS_server_host_override,
FLAGS_enable_ssl, FLAGS_use_prod_roots, creds);
} else if (test_case == "compute_engine_creds") {
- std::unique_ptr<Credentials> creds;
+ std::shared_ptr<Credentials> creds;
GPR_ASSERT(FLAGS_enable_ssl);
creds = ComputeEngineCredentials();
return CreateTestChannel(host_port, FLAGS_server_host_override,
FLAGS_enable_ssl, FLAGS_use_prod_roots, creds);
} else if (test_case == "jwt_token_creds") {
- std::unique_ptr<Credentials> creds;
+ std::shared_ptr<Credentials> creds;
GPR_ASSERT(FLAGS_enable_ssl);
grpc::string json_key = GetServiceAccountJsonKey();
std::chrono::seconds token_lifetime = std::chrono::hours(1);
diff --git a/test/cpp/util/create_test_channel.cc b/test/cpp/util/create_test_channel.cc
index f040acc4b1..dc48fa2d87 100644
--- a/test/cpp/util/create_test_channel.cc
+++ b/test/cpp/util/create_test_channel.cc
@@ -58,13 +58,13 @@ namespace grpc {
std::shared_ptr<ChannelInterface> CreateTestChannel(
const grpc::string& server, const grpc::string& override_hostname,
bool enable_ssl, bool use_prod_roots,
- const std::unique_ptr<Credentials>& creds) {
+ const std::shared_ptr<Credentials>& creds) {
ChannelArguments channel_args;
if (enable_ssl) {
const char* roots_certs = use_prod_roots ? "" : test_root_cert;
SslCredentialsOptions ssl_opts = {roots_certs, "", ""};
- std::unique_ptr<Credentials> channel_creds = SslCredentials(ssl_opts);
+ std::shared_ptr<Credentials> channel_creds = SslCredentials(ssl_opts);
if (!server.empty() && !override_hostname.empty()) {
channel_args.SetSslTargetNameOverride(override_hostname);
@@ -84,7 +84,7 @@ std::shared_ptr<ChannelInterface> CreateTestChannel(
const grpc::string& server, const grpc::string& override_hostname,
bool enable_ssl, bool use_prod_roots) {
return CreateTestChannel(server, override_hostname, enable_ssl,
- use_prod_roots, std::unique_ptr<Credentials>());
+ use_prod_roots, std::shared_ptr<Credentials>());
}
// Shortcut for end2end and interop tests.
diff --git a/test/cpp/util/create_test_channel.h b/test/cpp/util/create_test_channel.h
index 5c298ce850..5f2609ddd8 100644
--- a/test/cpp/util/create_test_channel.h
+++ b/test/cpp/util/create_test_channel.h
@@ -52,7 +52,7 @@ std::shared_ptr<ChannelInterface> CreateTestChannel(
std::shared_ptr<ChannelInterface> CreateTestChannel(
const grpc::string& server, const grpc::string& override_hostname,
bool enable_ssl, bool use_prod_roots,
- const std::unique_ptr<Credentials>& creds);
+ const std::shared_ptr<Credentials>& creds);
} // namespace grpc
diff --git a/test/cpp/util/fake_credentials.cc b/test/cpp/util/fake_credentials.cc
new file mode 100644
index 0000000000..f5b83b8159
--- /dev/null
+++ b/test/cpp/util/fake_credentials.cc
@@ -0,0 +1,58 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <grpc/grpc_security.h>
+#include <grpc++/channel_arguments.h>
+#include <grpc++/credentials.h>
+#include <grpc++/server_credentials.h>
+#include "src/cpp/client/channel.h"
+#include "src/cpp/client/secure_credentials.h"
+#include "src/cpp/server/secure_server_credentials.h"
+
+namespace grpc {
+namespace testing {
+
+std::shared_ptr<Credentials> FakeTransportSecurityCredentials() {
+ grpc_credentials* c_creds = grpc_fake_transport_security_credentials_create();
+ return std::shared_ptr<Credentials>(new SecureCredentials(c_creds));
+}
+
+std::shared_ptr<ServerCredentials> FakeTransportSecurityServerCredentials() {
+ grpc_server_credentials* c_creds =
+ grpc_fake_transport_security_server_credentials_create();
+ return std::shared_ptr<ServerCredentials>(
+ new SecureServerCredentials(c_creds));
+}
+
+} // namespace testing
+} // namespace grpc
diff --git a/include/grpc/grpc_http.h b/test/cpp/util/fake_credentials.h
index c41e87413f..e1ba7bb9e4 100644
--- a/include/grpc/grpc_http.h
+++ b/test/cpp/util/fake_credentials.h
@@ -31,37 +31,21 @@
*
*/
-#ifndef GRPC_GRPC_HTTP_H
-#define GRPC_GRPC_HTTP_H
+#ifndef GRPC_TEST_CPP_UTIL_FAKE_CREDENTIALS_H
+#define GRPC_TEST_CPP_UTIL_FAKE_CREDENTIALS_H
-#ifdef __cplusplus
-extern "C" {
-#endif
+#include <memory>
-/* HTTP GET support.
+namespace grpc {
+class Credentials;
+class ServerCredentials;
- HTTP2 servers can publish statically generated text content served
- via HTTP2 GET queries by publishing one or more grpc_http_server_page
- elements via repeated GRPC_ARG_SERVE_OVER_HTTP elements in the servers
- channel_args.
+namespace testing {
- This is not:
- - a general purpose web server
- - particularly fast
+std::shared_ptr<Credentials> FakeTransportSecurityCredentials();
+std::shared_ptr<ServerCredentials> FakeTransportSecurityServerCredentials();
- It's useful for being able to serve up some static content (maybe some
- javascript to be able to interact with your GRPC server?) */
+} // namespace testing
+} // namespace grpc
-typedef struct {
- const char *path;
- const char *content_type;
- const char *content;
-} grpc_http_server_page;
-
-#define GRPC_ARG_SERVE_OVER_HTTP "grpc.serve_over_http"
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* GRPC_GRPC_HTTP_H */
+#endif // GRPC_TEST_CPP_UTIL_FAKE_CREDENTIALS_H
diff --git a/test/cpp/util/grpc_cli.cc b/test/cpp/util/grpc_cli.cc
index d71a7a0b77..ad3c0af877 100644
--- a/test/cpp/util/grpc_cli.cc
+++ b/test/cpp/util/grpc_cli.cc
@@ -104,7 +104,7 @@ int main(int argc, char** argv) {
std::stringstream input_stream;
input_stream << input_file.rdbuf();
- std::unique_ptr<grpc::Credentials> creds;
+ std::shared_ptr<grpc::Credentials> creds;
if (!FLAGS_enable_ssl) {
creds = grpc::InsecureCredentials();
} else {
diff --git a/test/cpp/util/messages.proto b/test/cpp/util/messages.proto
index a79bce1f30..062f66c091 100644
--- a/test/cpp/util/messages.proto
+++ b/test/cpp/util/messages.proto
@@ -36,6 +36,7 @@ message RequestParams {
optional bool echo_deadline = 1;
optional int32 client_cancel_after_us = 2;
optional int32 server_cancel_after_us = 3;
+ optional bool echo_metadata = 4;
}
message EchoRequest {
diff --git a/third_party/protobuf b/third_party/protobuf
-Subproject 644a6a1da71385e9d7a7a26b3476c93fdd71788
+Subproject a8b38c598d7f65b281a72809b28117afdb76093
diff --git a/tools/dockerfile/grpc_node/build.sh b/tools/dockerfile/grpc_node/build.sh
new file mode 100755
index 0000000000..86a681d453
--- /dev/null
+++ b/tools/dockerfile/grpc_node/build.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+cp -R /var/local/git-clone/grpc /var/local/git
+
+make clean -C /var/local/git/grpc
+
+make install_c -j12 -C /var/local/git/grpc
+
+cd /var/local/git/grpc/src/node && npm install && node-gyp rebuild
diff --git a/tools/dockerfile/grpc_python_base/Dockerfile b/tools/dockerfile/grpc_python_base/Dockerfile
index 0d45f40242..90a57bf341 100644
--- a/tools/dockerfile/grpc_python_base/Dockerfile
+++ b/tools/dockerfile/grpc_python_base/Dockerfile
@@ -43,7 +43,7 @@ RUN apt-get update && apt-get install -y \
python-virtualenv
# Install Python packages from PyPI
-RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.0.0-alpha-1
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.0.0a2
# Get the GRPC source from GitHub
RUN git clone --recursive https://github.com/grpc/grpc.git /var/local/git/grpc
diff --git a/tools/dockerfile/grpc_ruby/build.sh b/tools/dockerfile/grpc_ruby/build.sh
new file mode 100755
index 0000000000..ab0267d9a6
--- /dev/null
+++ b/tools/dockerfile/grpc_ruby/build.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+cp -R /var/local/git-clone/grpc /var/local/git
+
+make clean -C /var/local/git/grpc
+
+make install_c -j12 -C /var/local/git/grpc
+
+/bin/bash -l -c 'cd /var/local/git/grpc/src/ruby && gem update bundler && bundle && rake'
diff --git a/tools/gce_setup/grpc_docker.sh b/tools/gce_setup/grpc_docker.sh
index c9a825c3e9..0d50d2d451 100755
--- a/tools/gce_setup/grpc_docker.sh
+++ b/tools/gce_setup/grpc_docker.sh
@@ -428,6 +428,7 @@ grpc_interop_test_args() {
python) grpc_port=8050 ;;
ruby) grpc_port=8060 ;;
csharp_mono) grpc_port=8070 ;;
+ csharp_dotnet) grpc_port=8070 ;;
*) echo "bad server_type: $1" 1>&2; return 1 ;;
esac
shift
@@ -870,6 +871,23 @@ grpc_launch_servers() {
done
}
+# Launch servers on windows.
+grpc_launch_windows_servers() {
+ local host='jtattermusch-interop-windows2'
+ local killcmd="ps -e | grep Grpc.IntegrationTesting | awk '{print \\\$1}' | xargs kill -9"
+ echo "killing all servers and clients on $host with command $killcmd"
+ gcloud compute $project_opt ssh $zone_opt stoked-keyword-656@grpc-windows-proxy --command "ssh $host \"$killcmd\""
+
+ local cmd='cd /cygdrive/c/github/grpc/src/csharp/Grpc.IntegrationTesting.Server/bin/Debug && ./Grpc.IntegrationTesting.Server.exe --use_tls=true --port=8070'
+ # gcloud's auto-uploading of RSA keys doesn't work for Windows VMs.
+ # So we have a linux machine that is authorized to access the Windows
+ # machine through ssh and we use gcloud auth support to logon to the proxy.
+ echo "will run:"
+ echo " $cmd"
+ echo "on $host (through grpc-windows-proxy)"
+ gcloud compute $project_opt ssh $zone_opt stoked-keyword-656@grpc-windows-proxy --command "ssh $host '$cmd'"
+}
+
# Runs a test command on a docker instance
#
# The test command is issued via gcloud compute
@@ -949,6 +967,7 @@ test_runner() {
# node: 8040
# python: 8050
# ruby: 8060
+# csharp: 8070
#
# each client_type should have an associated bash func:
# grpc_interop_gen_<client_type>_cmd
diff --git a/tools/run_tests/build_python.sh b/tools/run_tests/build_python.sh
index b14597804f..dc5baccf9f 100755
--- a/tools/run_tests/build_python.sh
+++ b/tools/run_tests/build_python.sh
@@ -37,6 +37,6 @@ root=`pwd`
rm -rf python2.7_virtual_environment
virtualenv -p /usr/bin/python2.7 python2.7_virtual_environment
source python2.7_virtual_environment/bin/activate
-pip install enum34==1.0.4 futures==2.2.0 protobuf==3.0.0-alpha-1
+pip install enum34==1.0.4 futures==2.2.0 protobuf==3.0.0a2
CFLAGS=-I$root/include LDFLAGS=-L$root/libs/$CONFIG pip install src/python/src
pip install src/python/interop
diff --git a/tools/run_tests/build_ruby.sh b/tools/run_tests/build_ruby.sh
index 53a69cf079..de96413bc1 100755
--- a/tools/run_tests/build_ruby.sh
+++ b/tools/run_tests/build_ruby.sh
@@ -31,17 +31,10 @@
set -ex
-CONFIG=${CONFIG:-opt}
+export CONFIG=${CONFIG:-opt}
-# change to grpc repo root
-cd $(dirname $0)/../..
-
-# tells npm install to look for files in that directory
-export GRPC_ROOT=`pwd`
-# tells npm install the subdirectory with library files
-export GRPC_LIB_SUBDIR=libs/$CONFIG
-
-cd src/ruby
+# change to grpc's ruby directory
+cd $(dirname $0)/../../src/ruby
bundle install
rake compile:grpc
diff --git a/tools/run_tests/run_sanity.sh b/tools/run_tests/run_sanity.sh
index 959197eb3d..07e559fb03 100755
--- a/tools/run_tests/run_sanity.sh
+++ b/tools/run_tests/run_sanity.sh
@@ -45,6 +45,6 @@ git submodule > $submodules
diff -u $submodules - << EOF
05b155ff59114735ec8cd089f669c4c3d8f59029 third_party/gflags (v2.1.0-45-g05b155f)
3df69d3aefde7671053d4e3c242b228e5d79c83f third_party/openssl (OpenSSL_1_0_2a)
- 644a6a1da71385e9d7a7a26b3476c93fdd71788c third_party/protobuf (v3.0.0-alpha-1-35-g644a6a1)
+ a8b38c598d7f65b281a72809b28117afdb760931 third_party/protobuf (v3.0.0-alpha-1-978-ga8b38c5)
50893291621658f355bc5b4d450a8d06a563053d third_party/zlib (v1.2.8)
EOF
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index 5f0e71708f..854c6345b6 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -214,7 +214,7 @@ class RubyLanguage(object):
return [config.job_spec(['tools/run_tests/run_ruby.sh'], None)]
def make_targets(self):
- return ['static_c']
+ return ['run_dep_checks']
def build_steps(self):
return [['tools/run_tests/build_ruby.sh']]
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index d161041c1f..e2454c4db4 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -2434,6 +2434,258 @@
{
"flaky": false,
"language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_bad_hostname_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": true,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_census_simple_request_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_disappearing_server_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_empty_batch_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": true,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_invoke_large_request_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_max_message_length_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_no_op_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_registered_call_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_request_with_payload_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_simple_delayed_request_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_simple_request_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
"name": "chttp2_fullstack_bad_hostname_unsecure_test",
"platforms": [
"windows",
@@ -3375,6 +3627,249 @@
"windows",
"posix"
]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_disappearing_server_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": true,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_simple_delayed_request_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
+ },
+ {
+ "flaky": false,
+ "language": "c",
+ "name": "chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test",
+ "platforms": [
+ "windows",
+ "posix"
+ ]
}
]
diff --git a/vsprojects/Grpc.mak b/vsprojects/Grpc.mak
index 275ad42d84..2a52e15e5f 100644
--- a/vsprojects/Grpc.mak
+++ b/vsprojects/Grpc.mak
@@ -54,10 +54,10 @@ all: buildtests
$(OUT_DIR):
mkdir $(OUT_DIR)
-build_libs: build_gpr build_gpr_test_util build_grpc build_grpc_test_util build_grpc_test_util_unsecure build_grpc_unsecure Debug\end2end_fixture_chttp2_fake_security.lib Debug\end2end_fixture_chttp2_fullstack.lib Debug\end2end_fixture_chttp2_simple_ssl_fullstack.lib Debug\end2end_fixture_chttp2_simple_ssl_with_oauth2_fullstack.lib Debug\end2end_fixture_chttp2_socket_pair.lib Debug\end2end_fixture_chttp2_socket_pair_one_byte_at_a_time.lib Debug\end2end_test_bad_hostname.lib Debug\end2end_test_cancel_after_accept.lib Debug\end2end_test_cancel_after_accept_and_writes_closed.lib Debug\end2end_test_cancel_after_invoke.lib Debug\end2end_test_cancel_before_invoke.lib Debug\end2end_test_cancel_in_a_vacuum.lib Debug\end2end_test_census_simple_request.lib Debug\end2end_test_disappearing_server.lib Debug\end2end_test_early_server_shutdown_finishes_inflight_calls.lib Debug\end2end_test_early_server_shutdown_finishes_tags.lib Debug\end2end_test_empty_batch.lib Debug\end2end_test_graceful_server_shutdown.lib Debug\end2end_test_invoke_large_request.lib Debug\end2end_test_max_concurrent_streams.lib Debug\end2end_test_max_message_length.lib Debug\end2end_test_no_op.lib Debug\end2end_test_ping_pong_streaming.lib Debug\end2end_test_registered_call.lib Debug\end2end_test_request_response_with_binary_metadata_and_payload.lib Debug\end2end_test_request_response_with_metadata_and_payload.lib Debug\end2end_test_request_response_with_payload.lib Debug\end2end_test_request_response_with_payload_and_call_creds.lib Debug\end2end_test_request_response_with_trailing_metadata_and_payload.lib Debug\end2end_test_request_with_large_metadata.lib Debug\end2end_test_request_with_payload.lib Debug\end2end_test_simple_delayed_request.lib Debug\end2end_test_simple_request.lib Debug\end2end_test_simple_request_with_high_initial_sequence_number.lib Debug\end2end_certs.lib
+build_libs: build_gpr build_gpr_test_util build_grpc build_grpc_test_util build_grpc_test_util_unsecure build_grpc_unsecure Debug\end2end_fixture_chttp2_fake_security.lib Debug\end2end_fixture_chttp2_fullstack.lib Debug\end2end_fixture_chttp2_simple_ssl_fullstack.lib Debug\end2end_fixture_chttp2_simple_ssl_with_oauth2_fullstack.lib Debug\end2end_fixture_chttp2_socket_pair.lib Debug\end2end_fixture_chttp2_socket_pair_one_byte_at_a_time.lib Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_bad_hostname.lib Debug\end2end_test_cancel_after_accept.lib Debug\end2end_test_cancel_after_accept_and_writes_closed.lib Debug\end2end_test_cancel_after_invoke.lib Debug\end2end_test_cancel_before_invoke.lib Debug\end2end_test_cancel_in_a_vacuum.lib Debug\end2end_test_census_simple_request.lib Debug\end2end_test_disappearing_server.lib Debug\end2end_test_early_server_shutdown_finishes_inflight_calls.lib Debug\end2end_test_early_server_shutdown_finishes_tags.lib Debug\end2end_test_empty_batch.lib Debug\end2end_test_graceful_server_shutdown.lib Debug\end2end_test_invoke_large_request.lib Debug\end2end_test_max_concurrent_streams.lib Debug\end2end_test_max_message_length.lib Debug\end2end_test_no_op.lib Debug\end2end_test_ping_pong_streaming.lib Debug\end2end_test_registered_call.lib Debug\end2end_test_request_response_with_binary_metadata_and_payload.lib Debug\end2end_test_request_response_with_metadata_and_payload.lib Debug\end2end_test_request_response_with_payload.lib Debug\end2end_test_request_response_with_payload_and_call_creds.lib Debug\end2end_test_request_response_with_trailing_metadata_and_payload.lib Debug\end2end_test_request_with_large_metadata.lib Debug\end2end_test_request_with_payload.lib Debug\end2end_test_simple_delayed_request.lib Debug\end2end_test_simple_request.lib Debug\end2end_test_simple_request_with_high_initial_sequence_number.lib Debug\end2end_certs.lib
buildtests: buildtests_c buildtests_cxx
-buildtests_c: alarm_heap_test.exe alarm_list_test.exe alarm_test.exe alpn_test.exe bin_encoder_test.exe census_hash_table_test.exe census_statistics_multiple_writers_circular_buffer_test.exe census_statistics_multiple_writers_test.exe census_statistics_performance_test.exe census_statistics_quick_test.exe census_statistics_small_log_test.exe census_stub_test.exe census_window_stats_test.exe chttp2_status_conversion_test.exe chttp2_stream_encoder_test.exe chttp2_stream_map_test.exe fling_client.exe fling_server.exe gpr_cancellable_test.exe gpr_cmdline_test.exe gpr_env_test.exe gpr_file_test.exe gpr_histogram_test.exe gpr_host_port_test.exe gpr_log_test.exe gpr_slice_buffer_test.exe gpr_slice_test.exe gpr_string_test.exe gpr_sync_test.exe gpr_thd_test.exe gpr_time_test.exe gpr_tls_test.exe gpr_useful_test.exe grpc_base64_test.exe grpc_byte_buffer_reader_test.exe grpc_channel_stack_test.exe grpc_completion_queue_test.exe grpc_credentials_test.exe grpc_json_token_test.exe grpc_stream_op_test.exe hpack_parser_test.exe hpack_table_test.exe httpcli_format_request_test.exe httpcli_parser_test.exe httpcli_test.exe json_rewrite.exe json_rewrite_test.exe json_test.exe lame_client_test.exe message_compress_test.exe multi_init_test.exe murmur_hash_test.exe no_server_test.exe resolve_address_test.exe secure_endpoint_test.exe sockaddr_utils_test.exe time_averaged_stats_test.exe time_test.exe timeout_encoding_test.exe timers_test.exe transport_metadata_test.exe transport_security_test.exe chttp2_fake_security_bad_hostname_test.exe chttp2_fake_security_cancel_after_accept_test.exe chttp2_fake_security_cancel_after_accept_and_writes_closed_test.exe chttp2_fake_security_cancel_after_invoke_test.exe chttp2_fake_security_cancel_before_invoke_test.exe chttp2_fake_security_cancel_in_a_vacuum_test.exe chttp2_fake_security_census_simple_request_test.exe chttp2_fake_security_disappearing_server_test.exe chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fake_security_early_server_shutdown_finishes_tags_test.exe chttp2_fake_security_empty_batch_test.exe chttp2_fake_security_graceful_server_shutdown_test.exe chttp2_fake_security_invoke_large_request_test.exe chttp2_fake_security_max_concurrent_streams_test.exe chttp2_fake_security_max_message_length_test.exe chttp2_fake_security_no_op_test.exe chttp2_fake_security_ping_pong_streaming_test.exe chttp2_fake_security_registered_call_test.exe chttp2_fake_security_request_response_with_binary_metadata_and_payload_test.exe chttp2_fake_security_request_response_with_metadata_and_payload_test.exe chttp2_fake_security_request_response_with_payload_test.exe chttp2_fake_security_request_response_with_payload_and_call_creds_test.exe chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fake_security_request_with_large_metadata_test.exe chttp2_fake_security_request_with_payload_test.exe chttp2_fake_security_simple_delayed_request_test.exe chttp2_fake_security_simple_request_test.exe chttp2_fake_security_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_bad_hostname_test.exe chttp2_fullstack_cancel_after_accept_test.exe chttp2_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_fullstack_cancel_after_invoke_test.exe chttp2_fullstack_cancel_before_invoke_test.exe chttp2_fullstack_cancel_in_a_vacuum_test.exe chttp2_fullstack_census_simple_request_test.exe chttp2_fullstack_disappearing_server_test.exe chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_fullstack_empty_batch_test.exe chttp2_fullstack_graceful_server_shutdown_test.exe chttp2_fullstack_invoke_large_request_test.exe chttp2_fullstack_max_concurrent_streams_test.exe chttp2_fullstack_max_message_length_test.exe chttp2_fullstack_no_op_test.exe chttp2_fullstack_ping_pong_streaming_test.exe chttp2_fullstack_registered_call_test.exe chttp2_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_fullstack_request_response_with_payload_test.exe chttp2_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fullstack_request_with_large_metadata_test.exe chttp2_fullstack_request_with_payload_test.exe chttp2_fullstack_simple_delayed_request_test.exe chttp2_fullstack_simple_request_test.exe chttp2_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_simple_ssl_fullstack_bad_hostname_test.exe chttp2_simple_ssl_fullstack_cancel_after_accept_test.exe chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_simple_ssl_fullstack_cancel_after_invoke_test.exe chttp2_simple_ssl_fullstack_cancel_before_invoke_test.exe chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test.exe chttp2_simple_ssl_fullstack_census_simple_request_test.exe chttp2_simple_ssl_fullstack_disappearing_server_test.exe chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_simple_ssl_fullstack_empty_batch_test.exe chttp2_simple_ssl_fullstack_graceful_server_shutdown_test.exe chttp2_simple_ssl_fullstack_invoke_large_request_test.exe chttp2_simple_ssl_fullstack_max_concurrent_streams_test.exe chttp2_simple_ssl_fullstack_max_message_length_test.exe chttp2_simple_ssl_fullstack_no_op_test.exe chttp2_simple_ssl_fullstack_ping_pong_streaming_test.exe chttp2_simple_ssl_fullstack_registered_call_test.exe chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_with_large_metadata_test.exe chttp2_simple_ssl_fullstack_request_with_payload_test.exe chttp2_simple_ssl_fullstack_simple_delayed_request_test.exe chttp2_simple_ssl_fullstack_simple_request_test.exe chttp2_simple_ssl_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_simple_ssl_with_oauth2_fullstack_bad_hostname_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test.exe chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test.exe chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_simple_ssl_with_oauth2_fullstack_empty_batch_test.exe chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test.exe chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test.exe chttp2_simple_ssl_with_oauth2_fullstack_max_message_length_test.exe chttp2_simple_ssl_with_oauth2_fullstack_no_op_test.exe chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test.exe chttp2_simple_ssl_with_oauth2_fullstack_registered_call_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_bad_hostname_test.exe chttp2_socket_pair_cancel_after_accept_test.exe chttp2_socket_pair_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_cancel_after_invoke_test.exe chttp2_socket_pair_cancel_before_invoke_test.exe chttp2_socket_pair_cancel_in_a_vacuum_test.exe chttp2_socket_pair_census_simple_request_test.exe chttp2_socket_pair_disappearing_server_test.exe chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_empty_batch_test.exe chttp2_socket_pair_graceful_server_shutdown_test.exe chttp2_socket_pair_invoke_large_request_test.exe chttp2_socket_pair_max_concurrent_streams_test.exe chttp2_socket_pair_max_message_length_test.exe chttp2_socket_pair_no_op_test.exe chttp2_socket_pair_ping_pong_streaming_test.exe chttp2_socket_pair_registered_call_test.exe chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_request_response_with_payload_test.exe chttp2_socket_pair_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_request_with_large_metadata_test.exe chttp2_socket_pair_request_with_payload_test.exe chttp2_socket_pair_simple_delayed_request_test.exe chttp2_socket_pair_simple_request_test.exe chttp2_socket_pair_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_one_byte_at_a_time_bad_hostname_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test.exe chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test.exe chttp2_socket_pair_one_byte_at_a_time_disappearing_server_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_one_byte_at_a_time_empty_batch_test.exe chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test.exe chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test.exe chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test.exe chttp2_socket_pair_one_byte_at_a_time_max_message_length_test.exe chttp2_socket_pair_one_byte_at_a_time_no_op_test.exe chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test.exe chttp2_socket_pair_one_byte_at_a_time_registered_call_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_bad_hostname_unsecure_test.exe chttp2_fullstack_cancel_after_accept_unsecure_test.exe chttp2_fullstack_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_fullstack_cancel_after_invoke_unsecure_test.exe chttp2_fullstack_cancel_before_invoke_unsecure_test.exe chttp2_fullstack_cancel_in_a_vacuum_unsecure_test.exe chttp2_fullstack_census_simple_request_unsecure_test.exe chttp2_fullstack_disappearing_server_unsecure_test.exe chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_fullstack_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_fullstack_empty_batch_unsecure_test.exe chttp2_fullstack_graceful_server_shutdown_unsecure_test.exe chttp2_fullstack_invoke_large_request_unsecure_test.exe chttp2_fullstack_max_concurrent_streams_unsecure_test.exe chttp2_fullstack_max_message_length_unsecure_test.exe chttp2_fullstack_no_op_unsecure_test.exe chttp2_fullstack_ping_pong_streaming_unsecure_test.exe chttp2_fullstack_registered_call_unsecure_test.exe chttp2_fullstack_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_response_with_payload_unsecure_test.exe chttp2_fullstack_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_with_large_metadata_unsecure_test.exe chttp2_fullstack_request_with_payload_unsecure_test.exe chttp2_fullstack_simple_delayed_request_unsecure_test.exe chttp2_fullstack_simple_request_unsecure_test.exe chttp2_fullstack_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_bad_hostname_unsecure_test.exe chttp2_socket_pair_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_census_simple_request_unsecure_test.exe chttp2_socket_pair_disappearing_server_unsecure_test.exe chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_empty_batch_unsecure_test.exe chttp2_socket_pair_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_invoke_large_request_unsecure_test.exe chttp2_socket_pair_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_max_message_length_unsecure_test.exe chttp2_socket_pair_no_op_unsecure_test.exe chttp2_socket_pair_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_registered_call_unsecure_test.exe chttp2_socket_pair_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_request_with_payload_unsecure_test.exe chttp2_socket_pair_simple_delayed_request_unsecure_test.exe chttp2_socket_pair_simple_request_unsecure_test.exe chttp2_socket_pair_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_bad_hostname_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_census_simple_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_disappearing_server_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_empty_batch_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_max_message_length_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_no_op_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_registered_call_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test.exe
+buildtests_c: alarm_heap_test.exe alarm_list_test.exe alarm_test.exe alpn_test.exe bin_encoder_test.exe census_hash_table_test.exe census_statistics_multiple_writers_circular_buffer_test.exe census_statistics_multiple_writers_test.exe census_statistics_performance_test.exe census_statistics_quick_test.exe census_statistics_small_log_test.exe census_stub_test.exe census_window_stats_test.exe chttp2_status_conversion_test.exe chttp2_stream_encoder_test.exe chttp2_stream_map_test.exe fling_client.exe fling_server.exe gpr_cancellable_test.exe gpr_cmdline_test.exe gpr_env_test.exe gpr_file_test.exe gpr_histogram_test.exe gpr_host_port_test.exe gpr_log_test.exe gpr_slice_buffer_test.exe gpr_slice_test.exe gpr_string_test.exe gpr_sync_test.exe gpr_thd_test.exe gpr_time_test.exe gpr_tls_test.exe gpr_useful_test.exe grpc_base64_test.exe grpc_byte_buffer_reader_test.exe grpc_channel_stack_test.exe grpc_completion_queue_test.exe grpc_credentials_test.exe grpc_json_token_test.exe grpc_stream_op_test.exe hpack_parser_test.exe hpack_table_test.exe httpcli_format_request_test.exe httpcli_parser_test.exe httpcli_test.exe json_rewrite.exe json_rewrite_test.exe json_test.exe lame_client_test.exe message_compress_test.exe multi_init_test.exe murmur_hash_test.exe no_server_test.exe resolve_address_test.exe secure_endpoint_test.exe sockaddr_utils_test.exe time_averaged_stats_test.exe time_test.exe timeout_encoding_test.exe timers_test.exe transport_metadata_test.exe transport_security_test.exe chttp2_fake_security_bad_hostname_test.exe chttp2_fake_security_cancel_after_accept_test.exe chttp2_fake_security_cancel_after_accept_and_writes_closed_test.exe chttp2_fake_security_cancel_after_invoke_test.exe chttp2_fake_security_cancel_before_invoke_test.exe chttp2_fake_security_cancel_in_a_vacuum_test.exe chttp2_fake_security_census_simple_request_test.exe chttp2_fake_security_disappearing_server_test.exe chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fake_security_early_server_shutdown_finishes_tags_test.exe chttp2_fake_security_empty_batch_test.exe chttp2_fake_security_graceful_server_shutdown_test.exe chttp2_fake_security_invoke_large_request_test.exe chttp2_fake_security_max_concurrent_streams_test.exe chttp2_fake_security_max_message_length_test.exe chttp2_fake_security_no_op_test.exe chttp2_fake_security_ping_pong_streaming_test.exe chttp2_fake_security_registered_call_test.exe chttp2_fake_security_request_response_with_binary_metadata_and_payload_test.exe chttp2_fake_security_request_response_with_metadata_and_payload_test.exe chttp2_fake_security_request_response_with_payload_test.exe chttp2_fake_security_request_response_with_payload_and_call_creds_test.exe chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fake_security_request_with_large_metadata_test.exe chttp2_fake_security_request_with_payload_test.exe chttp2_fake_security_simple_delayed_request_test.exe chttp2_fake_security_simple_request_test.exe chttp2_fake_security_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_bad_hostname_test.exe chttp2_fullstack_cancel_after_accept_test.exe chttp2_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_fullstack_cancel_after_invoke_test.exe chttp2_fullstack_cancel_before_invoke_test.exe chttp2_fullstack_cancel_in_a_vacuum_test.exe chttp2_fullstack_census_simple_request_test.exe chttp2_fullstack_disappearing_server_test.exe chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_fullstack_empty_batch_test.exe chttp2_fullstack_graceful_server_shutdown_test.exe chttp2_fullstack_invoke_large_request_test.exe chttp2_fullstack_max_concurrent_streams_test.exe chttp2_fullstack_max_message_length_test.exe chttp2_fullstack_no_op_test.exe chttp2_fullstack_ping_pong_streaming_test.exe chttp2_fullstack_registered_call_test.exe chttp2_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_fullstack_request_response_with_payload_test.exe chttp2_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fullstack_request_with_large_metadata_test.exe chttp2_fullstack_request_with_payload_test.exe chttp2_fullstack_simple_delayed_request_test.exe chttp2_fullstack_simple_request_test.exe chttp2_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_simple_ssl_fullstack_bad_hostname_test.exe chttp2_simple_ssl_fullstack_cancel_after_accept_test.exe chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_simple_ssl_fullstack_cancel_after_invoke_test.exe chttp2_simple_ssl_fullstack_cancel_before_invoke_test.exe chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test.exe chttp2_simple_ssl_fullstack_census_simple_request_test.exe chttp2_simple_ssl_fullstack_disappearing_server_test.exe chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_simple_ssl_fullstack_empty_batch_test.exe chttp2_simple_ssl_fullstack_graceful_server_shutdown_test.exe chttp2_simple_ssl_fullstack_invoke_large_request_test.exe chttp2_simple_ssl_fullstack_max_concurrent_streams_test.exe chttp2_simple_ssl_fullstack_max_message_length_test.exe chttp2_simple_ssl_fullstack_no_op_test.exe chttp2_simple_ssl_fullstack_ping_pong_streaming_test.exe chttp2_simple_ssl_fullstack_registered_call_test.exe chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_with_large_metadata_test.exe chttp2_simple_ssl_fullstack_request_with_payload_test.exe chttp2_simple_ssl_fullstack_simple_delayed_request_test.exe chttp2_simple_ssl_fullstack_simple_request_test.exe chttp2_simple_ssl_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_simple_ssl_with_oauth2_fullstack_bad_hostname_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test.exe chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test.exe chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_simple_ssl_with_oauth2_fullstack_empty_batch_test.exe chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test.exe chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test.exe chttp2_simple_ssl_with_oauth2_fullstack_max_message_length_test.exe chttp2_simple_ssl_with_oauth2_fullstack_no_op_test.exe chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test.exe chttp2_simple_ssl_with_oauth2_fullstack_registered_call_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_bad_hostname_test.exe chttp2_socket_pair_cancel_after_accept_test.exe chttp2_socket_pair_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_cancel_after_invoke_test.exe chttp2_socket_pair_cancel_before_invoke_test.exe chttp2_socket_pair_cancel_in_a_vacuum_test.exe chttp2_socket_pair_census_simple_request_test.exe chttp2_socket_pair_disappearing_server_test.exe chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_empty_batch_test.exe chttp2_socket_pair_graceful_server_shutdown_test.exe chttp2_socket_pair_invoke_large_request_test.exe chttp2_socket_pair_max_concurrent_streams_test.exe chttp2_socket_pair_max_message_length_test.exe chttp2_socket_pair_no_op_test.exe chttp2_socket_pair_ping_pong_streaming_test.exe chttp2_socket_pair_registered_call_test.exe chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_request_response_with_payload_test.exe chttp2_socket_pair_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_request_with_large_metadata_test.exe chttp2_socket_pair_request_with_payload_test.exe chttp2_socket_pair_simple_delayed_request_test.exe chttp2_socket_pair_simple_request_test.exe chttp2_socket_pair_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_one_byte_at_a_time_bad_hostname_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test.exe chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test.exe chttp2_socket_pair_one_byte_at_a_time_disappearing_server_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_one_byte_at_a_time_empty_batch_test.exe chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test.exe chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test.exe chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test.exe chttp2_socket_pair_one_byte_at_a_time_max_message_length_test.exe chttp2_socket_pair_one_byte_at_a_time_no_op_test.exe chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test.exe chttp2_socket_pair_one_byte_at_a_time_registered_call_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_with_grpc_trace_bad_hostname_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test.exe chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test.exe chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test.exe chttp2_socket_pair_with_grpc_trace_census_simple_request_test.exe chttp2_socket_pair_with_grpc_trace_disappearing_server_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_with_grpc_trace_empty_batch_test.exe chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test.exe chttp2_socket_pair_with_grpc_trace_invoke_large_request_test.exe chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test.exe chttp2_socket_pair_with_grpc_trace_max_message_length_test.exe chttp2_socket_pair_with_grpc_trace_no_op_test.exe chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test.exe chttp2_socket_pair_with_grpc_trace_registered_call_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test.exe chttp2_socket_pair_with_grpc_trace_request_with_payload_test.exe chttp2_socket_pair_with_grpc_trace_simple_delayed_request_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_bad_hostname_unsecure_test.exe chttp2_fullstack_cancel_after_accept_unsecure_test.exe chttp2_fullstack_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_fullstack_cancel_after_invoke_unsecure_test.exe chttp2_fullstack_cancel_before_invoke_unsecure_test.exe chttp2_fullstack_cancel_in_a_vacuum_unsecure_test.exe chttp2_fullstack_census_simple_request_unsecure_test.exe chttp2_fullstack_disappearing_server_unsecure_test.exe chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_fullstack_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_fullstack_empty_batch_unsecure_test.exe chttp2_fullstack_graceful_server_shutdown_unsecure_test.exe chttp2_fullstack_invoke_large_request_unsecure_test.exe chttp2_fullstack_max_concurrent_streams_unsecure_test.exe chttp2_fullstack_max_message_length_unsecure_test.exe chttp2_fullstack_no_op_unsecure_test.exe chttp2_fullstack_ping_pong_streaming_unsecure_test.exe chttp2_fullstack_registered_call_unsecure_test.exe chttp2_fullstack_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_response_with_payload_unsecure_test.exe chttp2_fullstack_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_with_large_metadata_unsecure_test.exe chttp2_fullstack_request_with_payload_unsecure_test.exe chttp2_fullstack_simple_delayed_request_unsecure_test.exe chttp2_fullstack_simple_request_unsecure_test.exe chttp2_fullstack_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_bad_hostname_unsecure_test.exe chttp2_socket_pair_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_census_simple_request_unsecure_test.exe chttp2_socket_pair_disappearing_server_unsecure_test.exe chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_empty_batch_unsecure_test.exe chttp2_socket_pair_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_invoke_large_request_unsecure_test.exe chttp2_socket_pair_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_max_message_length_unsecure_test.exe chttp2_socket_pair_no_op_unsecure_test.exe chttp2_socket_pair_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_registered_call_unsecure_test.exe chttp2_socket_pair_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_request_with_payload_unsecure_test.exe chttp2_socket_pair_simple_delayed_request_unsecure_test.exe chttp2_socket_pair_simple_request_unsecure_test.exe chttp2_socket_pair_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_bad_hostname_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_census_simple_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_disappearing_server_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_empty_batch_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_max_message_length_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_no_op_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_registered_call_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_disappearing_server_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_simple_delayed_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test.exe
echo All tests built.
buildtests_cxx: interop_client.exe interop_server.exe
@@ -1722,6 +1722,202 @@ chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_
chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test: chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test.exe
echo Running chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test
$(OUT_DIR)\chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test.exe
+chttp2_socket_pair_with_grpc_trace_bad_hostname_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_bad_hostname_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_bad_hostname_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_bad_hostname.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_bad_hostname_test: chttp2_socket_pair_with_grpc_trace_bad_hostname_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_bad_hostname_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_bad_hostname_test.exe
+chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_cancel_after_accept.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test: chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test.exe
+chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_cancel_after_accept_and_writes_closed.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test: chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test.exe
+chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_cancel_after_invoke.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test: chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test.exe
+chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_cancel_before_invoke.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test: chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test.exe
+chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_cancel_in_a_vacuum.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test: chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test.exe
+chttp2_socket_pair_with_grpc_trace_census_simple_request_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_census_simple_request_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_census_simple_request_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_census_simple_request.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_census_simple_request_test: chttp2_socket_pair_with_grpc_trace_census_simple_request_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_census_simple_request_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_census_simple_request_test.exe
+chttp2_socket_pair_with_grpc_trace_disappearing_server_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_disappearing_server_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_disappearing_server_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_disappearing_server.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_disappearing_server_test: chttp2_socket_pair_with_grpc_trace_disappearing_server_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_disappearing_server_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_disappearing_server_test.exe
+chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_early_server_shutdown_finishes_inflight_calls.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test: chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test.exe
+chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_early_server_shutdown_finishes_tags.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test: chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test.exe
+chttp2_socket_pair_with_grpc_trace_empty_batch_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_empty_batch_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_empty_batch_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_empty_batch.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_empty_batch_test: chttp2_socket_pair_with_grpc_trace_empty_batch_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_empty_batch_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_empty_batch_test.exe
+chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_graceful_server_shutdown.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test: chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test.exe
+chttp2_socket_pair_with_grpc_trace_invoke_large_request_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_invoke_large_request_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_invoke_large_request_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_invoke_large_request.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_invoke_large_request_test: chttp2_socket_pair_with_grpc_trace_invoke_large_request_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_invoke_large_request_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_invoke_large_request_test.exe
+chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_max_concurrent_streams.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test: chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test.exe
+chttp2_socket_pair_with_grpc_trace_max_message_length_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_max_message_length_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_max_message_length_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_max_message_length.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_max_message_length_test: chttp2_socket_pair_with_grpc_trace_max_message_length_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_max_message_length_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_max_message_length_test.exe
+chttp2_socket_pair_with_grpc_trace_no_op_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_no_op_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_no_op_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_no_op.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_no_op_test: chttp2_socket_pair_with_grpc_trace_no_op_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_no_op_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_no_op_test.exe
+chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_ping_pong_streaming.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test: chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test.exe
+chttp2_socket_pair_with_grpc_trace_registered_call_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_registered_call_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_registered_call_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_registered_call.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_registered_call_test: chttp2_socket_pair_with_grpc_trace_registered_call_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_registered_call_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_registered_call_test.exe
+chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_request_response_with_binary_metadata_and_payload.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test: chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test.exe
+chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_request_response_with_metadata_and_payload.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test: chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test.exe
+chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_request_response_with_payload.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test: chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test.exe
+chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_request_response_with_payload_and_call_creds.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test: chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test.exe
+chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_request_response_with_trailing_metadata_and_payload.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test: chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test.exe
+chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_request_with_large_metadata.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test: chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test.exe
+chttp2_socket_pair_with_grpc_trace_request_with_payload_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_request_with_payload_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_with_payload_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_request_with_payload.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_request_with_payload_test: chttp2_socket_pair_with_grpc_trace_request_with_payload_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_request_with_payload_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_with_payload_test.exe
+chttp2_socket_pair_with_grpc_trace_simple_delayed_request_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_simple_delayed_request_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_simple_delayed_request_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_simple_delayed_request.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_simple_delayed_request_test: chttp2_socket_pair_with_grpc_trace_simple_delayed_request_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_simple_delayed_request_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_simple_delayed_request_test.exe
+chttp2_socket_pair_with_grpc_trace_simple_request_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_simple_request_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_simple_request_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_simple_request.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_simple_request_test: chttp2_socket_pair_with_grpc_trace_simple_request_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_simple_request_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_simple_request_test.exe
+chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_simple_request_with_high_initial_sequence_number.lib Debug\end2end_certs.lib Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test: chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test.exe
chttp2_fullstack_bad_hostname_unsecure_test.exe: build_libs $(OUT_DIR)
echo Building chttp2_fullstack_bad_hostname_unsecure_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
@@ -2289,6 +2485,195 @@ chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_
chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test: chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test.exe
echo Running chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test
$(OUT_DIR)\chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_bad_hostname.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test: chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_cancel_after_accept.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test: chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_cancel_after_accept_and_writes_closed.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test: chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_cancel_after_invoke.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test: chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_cancel_before_invoke.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test: chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_cancel_in_a_vacuum.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test: chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_census_simple_request.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test: chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_disappearing_server_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_disappearing_server_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_disappearing_server_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_disappearing_server.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_disappearing_server_unsecure_test: chttp2_socket_pair_with_grpc_trace_disappearing_server_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_disappearing_server_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_disappearing_server_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_early_server_shutdown_finishes_inflight_calls.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test: chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_early_server_shutdown_finishes_tags.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test: chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_empty_batch.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test: chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_graceful_server_shutdown.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test: chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_invoke_large_request.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test: chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_max_concurrent_streams.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test: chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_max_message_length.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test: chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_no_op.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test: chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_ping_pong_streaming.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test: chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_registered_call.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test: chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_request_response_with_binary_metadata_and_payload.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test: chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_request_response_with_metadata_and_payload.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test: chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_request_response_with_payload.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test: chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_request_response_with_trailing_metadata_and_payload.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test: chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_request_with_large_metadata.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test: chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_request_with_payload.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test: chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_simple_delayed_request_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_simple_delayed_request_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_simple_delayed_request_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_simple_delayed_request.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_simple_delayed_request_unsecure_test: chttp2_socket_pair_with_grpc_trace_simple_delayed_request_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_simple_delayed_request_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_simple_delayed_request_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_simple_request.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test: chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test.exe
+chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test.exe: build_libs $(OUT_DIR)
+ echo Building chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\vsprojects\dummy.c
+ $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test.exe" Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_simple_request_with_high_initial_sequence_number.lib Debug\grpc_test_util_unsecure.lib Debug\grpc_unsecure.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dummy.obj
+chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test: chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test.exe
+ echo Running chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test
+ $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test.exe
build_gpr:
msbuild grpc.sln /t:gpr /p:Configuration=Debug /p:Linkage-grpc_dependencies_zlib=static
build_gpr_test_util:
@@ -2325,6 +2710,10 @@ Debug\end2end_fixture_chttp2_socket_pair_one_byte_at_a_time.lib: $(OUT_DIR)
echo Building end2end_fixture_chttp2_socket_pair_one_byte_at_a_time
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\test\core\end2end\fixtures\chttp2_socket_pair_one_byte_at_a_time.c
$(LIBTOOL) /OUT:"Debug\end2end_fixture_chttp2_socket_pair_one_byte_at_a_time.lib" $(OUT_DIR)\chttp2_socket_pair_one_byte_at_a_time.obj
+Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib: $(OUT_DIR)
+ echo Building end2end_fixture_chttp2_socket_pair_with_grpc_trace
+ $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\test\core\end2end\fixtures\chttp2_socket_pair_with_grpc_trace.c
+ $(LIBTOOL) /OUT:"Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib" $(OUT_DIR)\chttp2_socket_pair_with_grpc_trace.obj
Debug\end2end_test_bad_hostname.lib: $(OUT_DIR)
echo Building end2end_test_bad_hostname
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\test\core\end2end\tests\bad_hostname.c
diff --git a/vsprojects/grpc/grpc.vcxproj b/vsprojects/grpc/grpc.vcxproj
index f215cf9993..b4c0cbd438 100644
--- a/vsprojects/grpc/grpc.vcxproj
+++ b/vsprojects/grpc/grpc.vcxproj
@@ -151,7 +151,6 @@
<ClInclude Include="..\..\include\grpc\byte_buffer.h" />
<ClInclude Include="..\..\include\grpc\byte_buffer_reader.h" />
<ClInclude Include="..\..\include\grpc\grpc.h" />
- <ClInclude Include="..\..\include\grpc\grpc_http.h" />
<ClInclude Include="..\..\include\grpc\status.h" />
</ItemGroup>
<ItemGroup>
diff --git a/vsprojects/grpc/grpc.vcxproj.filters b/vsprojects/grpc/grpc.vcxproj.filters
index ed19f19a31..7374de2dd7 100644
--- a/vsprojects/grpc/grpc.vcxproj.filters
+++ b/vsprojects/grpc/grpc.vcxproj.filters
@@ -375,9 +375,6 @@
<ClInclude Include="..\..\include\grpc\grpc.h">
<Filter>include\grpc</Filter>
</ClInclude>
- <ClInclude Include="..\..\include\grpc\grpc_http.h">
- <Filter>include\grpc</Filter>
- </ClInclude>
<ClInclude Include="..\..\include\grpc\status.h">
<Filter>include\grpc</Filter>
</ClInclude>
diff --git a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj
index 27f0018e76..382ea93e2c 100644
--- a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj
+++ b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj
@@ -149,7 +149,6 @@
<ClInclude Include="..\..\include\grpc\byte_buffer.h" />
<ClInclude Include="..\..\include\grpc\byte_buffer_reader.h" />
<ClInclude Include="..\..\include\grpc\grpc.h" />
- <ClInclude Include="..\..\include\grpc\grpc_http.h" />
<ClInclude Include="..\..\include\grpc\status.h" />
</ItemGroup>
<ItemGroup>
diff --git a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters
index 8dae709dcb..df865ca943 100644
--- a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters
+++ b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters
@@ -312,9 +312,6 @@
<ClInclude Include="..\..\include\grpc\grpc.h">
<Filter>include\grpc</Filter>
</ClInclude>
- <ClInclude Include="..\..\include\grpc\grpc_http.h">
- <Filter>include\grpc</Filter>
- </ClInclude>
<ClInclude Include="..\..\include\grpc\status.h">
<Filter>include\grpc</Filter>
</ClInclude>